Открытое соревнование по программированию искусственного интеллекта

Быстрый старт

Песочница: до окончания

Проект

Песочница

Раунд 1

Раунд 2

Финал

Песочница (на 10 января 2021 г.)

Последние комментарии

7 января 16:04: tsapelman написал комментарий в посте Финал: Результаты
5 января 15:34: amurushkin написал комментарий в посте Приложение CodeCraft 2020
5 января 15:28: Dan_Tat написал комментарий в посте Приложение CodeCraft 2020
5 января 15:24: Dan_Tat написал комментарий в посте Приложение CodeCraft 2020
5 января 15:24: Dan_Tat написал комментарий в посте Приложение CodeCraft 2020
5 января 14:38: amurushkin написал комментарий в посте Приложение CodeCraft 2020
5 января 14:29: Dan_Tat написал комментарий в посте Приложение CodeCraft 2020
5 января 14:02: Dan_Tat написал комментарий в посте Быстрый старт
29 декабря 15:53: kuviman написал комментарий в посте Финал: Результаты
29 декабря 15:53: kuviman написал комментарий в посте Языковые пакеты

Группа ВКонтакте

Telegram-чат

Discord

 

Ниже мы расскажем, как присоединиться к CodeCraft буквально за несколько минут.

Зарегистрируйтесь

Разумеется, для участия необходимо зарегистрироваться. Мы убедительно просим всех участников использовать достоверные и полные данные о себе. Загружайте аватарки — всем интересно знать противников в лицо.

Скачайте языковой пакет

Скачайте пакет для любимого языка программирования со страницы языковые пакеты. Распакуйте ZIP-архив в удобное для вас место и откройте существующий проект или создайте новый с нуля. Возможно, вам надо будет настроить некоторые пути.

Скачайте приложение

Приложение предоставляет вам возможность запускать тестовые игры локально на своём компьютере. Подробнее об этом здесь.

Прочитайте документацию

В разделе Правила опубликованы официальные и полные правила, обязательно прочитайте их. Некоторые организационные моменты вы можете найти в описаниях Песочницы и этапов чемпионата (Раунд 1, Раунд 2, Финал).

Отошлите свою стратегию

Это можно сделать на странице отослать стратегию. Прежде, чем система примет вашу стратегию, она будет скомпилирована и протестирована в нескольких коротких играх. Если всё в порядке, ваша стратегия автоматически начнёт участвовать в регулярных квалификационных играх Песочницы. Внимательно изучите в секции “На что стоит обратить внимание” различные моменты, вследствие которых ваша стратегия может получить вердикт “Ошибка верификации”. Суммарное количество посылок не ограничено, однако в системе есть ограничения на слишком частую отправку стратегий, а любые попытки дестабилизировать работу системы приведут к дисквалификации. Вы можете написать свою стратегию в произвольном количестве файлов, вам нужно будет лишь упаковать всё необходимое в ZIP-архив и отослать его.

На что стоит обратить внимание

  • процессорное время работы вашей стратегии достаточно сильно ограничено;
  • запускаемая стратегия не должна превышать ограничение памяти;
  • если ваша стратегия превышает ограничение по времени или памяти, а также в случае ошибок исполнения (например, неожиданное падение), она перестаёт участвовать в этой игре, при этом как бы “замораживается”, то есть ваши очки не обнуляются;
  • стратегия каждого участника запускается в отдельном контейнере.

Простая стратегия

Далее приведена простая стратегия на языке Python. Она собирает ресурсы, покупает юнитов отдельно для каждого типа и посылает их в атаку в противоположный угол карты. Простые стратегии для C++, Java, C#, Python и Rust доступны в языковых пакетах.

from model import *


class MyStrategy:
    def get_action(self, player_view, debug_interface):
        result = Action({})
        my_id = player_view.my_id
        for entity in player_view.entities:
            if entity.player_id != my_id:
                continue
            properties = player_view.entity_properties[entity.entity_type]

            move_action = None
            build_action = None
            if properties.can_move:
                move_action = MoveAction(
                    Vec2Int(player_view.map_size - 1,
                            player_view.map_size - 1),
                    True,
                    True)
            elif properties.build is not None:
                entity_type = properties.build.options[0]
                current_units = 0
                for other_entity in player_view.entities:
                    if my_id == other_entity.player_id and other_entity.entity_type == entity_type:
                        current_units += 1
                if (current_units + 1) * player_view.entity_properties[entity_type].population_use <= properties.population_provide:
                    build_action = BuildAction(
                        entity_type,
                        Vec2Int(entity.position.x + properties.size, entity.position.y + properties.size - 1))
            result.entity_actions[entity.id] = EntityAction(
                move_action,
                build_action,
                AttackAction(None, AutoAttack(properties.sight_range, [
                             EntityType.RESOURCE] if entity.entity_type == EntityType.BUILDER_UNIT else [])),
                None
            )
        return result

    def debug_update(self, player_view, debug_interface):
        debug_interface.send(DebugCommand.Clear())
        debug_interface.get_state()



spaceorc

spaceorc

СКБ Контур

В “Простой стратегии” кажется неправильно проверяется доступность юнита для постройки (либо я неправильно понял). Как будто мы должны сравнивать суммарный population_provide по всем активным зданиям с суммарным population_use всех юнитов. А здесь сравнивается использование еды только юнитами того типа, которое здание производит, с производством еды конкретно этим зданием???

28.11.2020 12:14:52
Savidiy

Savidiy

Псков

spaceorc

spaceorc

СКБ Контур

В “Простой стратегии” кажется неправильно проверяется доступность юнита для постройки (либо я неправильно понял). Как будто мы должны сравнивать суммарный population_provide по всем активным зданиям с суммарным population_use всех юнитов. А здесь сравнивается использование еды только юнитами того типа, которое здание производит, с производством еды конкретно этим зданием???

Как я понимаю, это сделано для того, чтобы не спамить дешевых юнитов. Каждое производство поддерживает то число юнитов, которое само же и обеспечивает. Это не ограничение системы, а сознательная стратегия производства.

28.11.2020 14:02:39
WitcherSanek

WitcherSanek

Москва

Savidiy

Savidiy

Псков

Как я понимаю, это сделано для того, чтобы не спамить дешевых юнитов. Каждое производство поддерживает то число юнитов, которое само же и обеспечивает. Это не ограничение системы, а сознательная стратегия производства.

Тогда зачем нужен простой дом, дающий +5 еды, но не производящий никаких юнитов?

28.11.2020 18:20:36
Savidiy

Savidiy

Псков

WitcherSanek

WitcherSanek

Москва

Тогда зачем нужен простой дом, дающий +5 еды, но не производящий никаких юнитов?

Именно для увеличения лимита юнитов. Данная стратегия делает такую проверку, только потому, что она так хочет. Ничего не мешает построить больше лучников на всю еду или других юнитов.

28.11.2020 19:56:29
Smeagol

Smeagol

Алжир

Hello, Madknight joue tu ?

29.11.2020 4:31:57
j303

j303

Москва

Всем привет.

Я делаю на C#. И не как не могу понять как строить юнитов и/или здания.

Делаю так: 1.Юниты-строители добывают ресурсы. Их становится больше 100. 2.Даю зданию EntityType.BuilderBase команду построить BuildAction build = new BuildAction(EntityType.BuilderUnit, ПОЗИЦИЯ_ЗДАНИЯ_МИНУС_1_ПО_Х); <int, Model.EntityAction> = <ИД_ЗДАНИЯ, new EntityAction(null, build, null, null)>; 3.Но ничего не происходит.

Что я делаю не так?

29.11.2020 8:43:58
Okke

Okke

Санкт-Петербург

j303

j303

Москва

Всем привет. Я делаю на C#. И не как не могу понять как строить юнитов и/или здания. Делаю так: 1.Юниты-строители добывают ресурсы. Их становится больше 100. 2.Даю зданию EntityType.BuilderBase команду построить BuildAction build = new BuildAction(EntityType.BuilderUnit, ПОЗИЦИЯ_ЗДАНИЯ_МИНУС_1_ПО_Х); <int, Model.EntityAction> = <ИД_ЗДАНИЯ, new EntityAction(null, build, null, null)>; 3.Но ничего не происходит. …

Нужно указывать место рядом с базой, а не место ее самой.

29.11.2020 13:16:44
Okke

Okke

Санкт-Петербург

j303

j303

Москва

Всем привет. Я делаю на C#. И не как не могу понять как строить юнитов и/или здания. Делаю так: 1.Юниты-строители добывают ресурсы. Их становится больше 100. 2.Даю зданию EntityType.BuilderBase команду построить BuildAction build = new BuildAction(EntityType.BuilderUnit, ПОЗИЦИЯ_ЗДАНИЯ_МИНУС_1_ПО_Х); <int, Model.EntityAction> = <ИД_ЗДАНИЯ, new EntityAction(null, build, null, null)>; 3.Но ничего не происходит. …

… и это место должно быть свободно

29.11.2020 13:17:21
alivefil

alivefil

Красноярск

Всем привет. Может кто-нибудь поделиться примером использования EntityAction и Action на с++? Я что-то совсем не понимаю как установить действие для юнита и потом выполнить его (

29.11.2020 13:23:03
georg_karr_spb

georg_karr_spb

NekBrainLab

Простая стратегия на Kotlin (не обессудте Kotlin освоил за 1 день - вчера): import model.* import java.text.FieldPosition import kotlin.math.sqrt

class MyStrategy { var resurs: MutableList = mutableListOf() var enemies: MutableList = mutableListOf() var countBuU: Int = 0 var countRaU: Int = 0 var validTarget: Array<model.EntityType> = arrayOf(model.EntityType.RANGED_UNIT, model.EntityType.BUILDER_UNIT, model.EntityType.MELEE_UNIT, model.EntityType.RESOURCE)

private fun findNear(position: Vec2Int, arrVec2Int: MutableList<Vec2Int>): Vec2Int {
    var coorResmin: Vec2Int = position
    var minLen = 1000000
    var len = 0
    for (coorRes in arrVec2Int) {
        len = (position.x - coorRes.x)*(position.x - coorRes.x)  + (position.y - coorRes.y)*(position.y - coorRes.y)
        if (len < minLen) {
            minLen = len
            coorResmin = coorRes
        }
        if (len < 4) {
            break
        }
    }
    return coorResmin
}

fun getAction(playerView: PlayerView, debugInterface: DebugInterface?): Action {

    var entityActions: MutableMap<Int, model.EntityAction> = mutableMapOf()

    var myId = playerView.myId
    var tick = playerView.currentTick

    var j = 1
    if (tick%2 == 0) {
        j = -1
    }

    var maxSize = playerView.mapSize
    var i = 1
    if (countBuU > countRaU) {
        i = -1
    }
    //println("Build= $countBuU Ran= $countRaU i= $i")
    var res = 0
    for (player in playerView.players) {
        if (player.id == myId) {
            res = player.resource
        }
    }

    var entityProperties = playerView.entityProperties

    resurs = mutableListOf()
    enemies = mutableListOf()

    for (entity in playerView.entities) {
        if (entity.entityType == model.EntityType.RESOURCE) {
            resurs?.add(entity.position)
        } else if (entity.playerId != null) {
            if (entity.playerId != myId) {
                enemies?.add(entity.position)
            }
        }
    }
    countBuU = 0
    countRaU = 0
    for (entity in playerView.entities) {

        if (entity.playerId == myId) {

            val entityAction = model.EntityAction()
            var properties = playerView.entityProperties[entity.entityType]

            val moveAction = model.MoveAction()
            val buildAction = model.BuildAction()
            val attackAction = model.AttackAction()
            val repairAction = model.RepairAction()

            if (entity.entityType == model.EntityType.BUILDER_UNIT) {
                countBuU += 1
                moveAction.target =  findNear(entity.position, resurs)
                moveAction.breakThrough = true
                moveAction.findClosestPosition = true
                entityAction.moveAction = moveAction
                entityActions.put(entity.id, entityAction)

            } else if (entity.entityType == model.EntityType.MELEE_UNIT || entity.entityType == model.EntityType.RANGED_UNIT) {
                countRaU += 1
                //if (j == 1) {
                    moveAction.target = findNear(entity.position, enemies)
                    moveAction.breakThrough = true
                    moveAction.findClosestPosition = true
                    entityAction.moveAction = moveAction
                    entityActions.put(entity.id, entityAction)
                //} else {
                    attackAction.target = null
                    var autoAt = model.AutoAttack()
                    autoAt.pathfindRange = maxSize
                    autoAt.validTargets = validTarget
                    attackAction.autoAttack = autoAt
                    entityAction.attackAction = attackAction
                    entityActions.put(entity.id, entityAction)
                //}

            } else if (entity.entityType == model.EntityType.BUILDER_BASE) {
                if (i == 1) {
                    buildAction.entityType = model.EntityType.BUILDER_UNIT
                    if (properties != null) {
                        buildAction.position =
                            Vec2Int(entity.position.x + properties.size, entity.position.y + properties.size - 1)
                    }
                    entityAction.buildAction = buildAction
                } else {
                    entityAction.buildAction = null
                }
                entityActions.put(entity.id, entityAction)

            } else if (entity.entityType == model.EntityType.RANGED_BASE) {
                if (i == -1) {
                    buildAction.entityType = model.EntityType.RANGED_UNIT
                    if (properties != null) {
                        buildAction.position =
                            Vec2Int(entity.position.x + properties.size, entity.position.y + properties.size - 1)
                    }
                    entityAction.buildAction = buildAction
                }  else {
                    entityAction.buildAction = null
                }
                entityActions.put(entity.id, entityAction)

            }




        }
    }

    return Action(entityActions)
}
fun debugUpdate(playerView: PlayerView, debugInterface: DebugInterface) {
    debugInterface.send(model.DebugCommand.Clear())
    debugInterface.getState()
}

}

30.11.2020 0:21:50
NORD

Ребят, пытаюсь на JS отослать .zip со стратегией, внутри только my-strategy.js + мои доп файлы, получаю: https://ibb.co/t34mq6W

Есть иди что он хочет? :) Или кто-то на JS поделитесь успешным опытом

30.11.2020 21:49:47
kuviman

kuviman

Codeforces

Ребят, пытаюсь на JS отослать .zip со стратегией, внутри только my-strategy.js + мои доп файлы, получаю: https://ibb.co/t34mq6W Есть иди что он хочет? :) Или кто-то на JS поделитесь успешным опытом

При отправке архивом нужно прикладывать все файлы, тк вы можете менять все что есть в исходном пакете

30.11.2020 22:10:38
deadln

deadln

Ставрополь

Могли бы хотя бы комментарии написать, чтобы было проще разобраться

30.11.2020 22:47:41
NORD
kuviman

kuviman

Codeforces

При отправке архивом нужно прикладывать все файлы, тк вы можете менять все что есть в исходном пакете

Оу, Спасибо - помогло!

30.11.2020 22:51:51
VASPO

VASPO

Санкт-Петербург

стратегия georg_karr_spb без изменений на c#, только для старта, если кому надо будет.

public class MyStrategy
    {
        private int _countBuU;
        private int _countRaU;
        private List<Vec2Int> _enemies;
        private List<Vec2Int> _resource;
        private readonly EntityType[] _validTargets = { EntityType.RangedUnit, EntityType.BuilderUnit, EntityType.MeleeUnit, EntityType.Resource };

        private Vec2Int findNear(Vec2Int position, List<Vec2Int> arrVec2Int)
        {
            Vec2Int coorResMin = position;
            int     minLen     = 1000000;
            foreach (Vec2Int coorRes in arrVec2Int)
            {
                int len = (position.X - coorRes.X) * (position.X - coorRes.X) + (position.Y - coorRes.Y) * (position.Y - coorRes.Y);
                if (len < minLen)
                {
                    minLen     = len;
                    coorResMin = coorRes;
                }

                if (len < 4)
                {
                    break;
                }
            }

            return coorResMin;
        }

        public Action GetAction(PlayerView playerView, DebugInterface debugInterface)
        {
            Dictionary<int, EntityAction> entityActions = new Dictionary<int, EntityAction>();

            var myId = playerView.MyId;
            var tick = playerView.CurrentTick;

            /*var j = 1;
            if (tick % 2 == 0)
            {
                j = -1;
            }*/

            var maxSize = playerView.MapSize;
            var i       = 1;
            if (_countBuU > _countRaU)
            {
                i = -1;
            }

            //println("Build= $countBuU Ran= $countRaU i= $i")
            /*var res = 0;
            foreach (var player in playerView.Players)
            {
                if (player.Id == myId)
                {
                    res = player.Resource;
                }
            }

            var entityProperties = playerView.EntityProperties;
            */

            _resource = new List<Vec2Int>();
            _enemies = new List<Vec2Int>();

            foreach (var entity in playerView.Entities)
            {
                if (entity.EntityType == EntityType.Resource)
                {
                    _resource?.Add(entity.Position);
                }
                else if (entity.PlayerId != null)
                {
                    if (entity.PlayerId != myId)
                    {
                        _enemies?.Add(entity.Position);
                    }
                }
            }

            _countBuU = 0;
            _countRaU = 0;
            foreach (var entity in playerView.Entities)
            {
                if (entity.PlayerId == myId)
                {
                    var entityAction = new EntityAction();
                    var properties   = playerView.EntityProperties[entity.EntityType];

                    var moveAction   = new MoveAction();
                    var buildAction  = new BuildAction();
                    var attackAction = new AttackAction();
                    // var repairAction = new RepairAction();

                    if (entity.EntityType == EntityType.BuilderUnit)
                    {
                        _countBuU                      += 1;
                        moveAction.Target              =  findNear(entity.Position, _resource);
                        moveAction.BreakThrough        =  true;
                        moveAction.FindClosestPosition =  true;
                        entityAction.MoveAction        =  moveAction;
                        entityActions[entity.Id] = entityAction;
                    }
                    else if (entity.EntityType == EntityType.MeleeUnit || entity.EntityType == EntityType.RangedUnit)
                    {
                        _countRaU += 1;
                        //if (j == 1) {
                        moveAction.Target              = findNear(entity.Position, _enemies);
                        moveAction.BreakThrough        = true;
                        moveAction.FindClosestPosition = true;
                        entityAction.MoveAction        = moveAction;
                        entityActions.Add(entity.Id, entityAction);
                        //} else {
                        attackAction.Target = null;
                        var autoAt = new AutoAttack();
                        autoAt.PathfindRange      = maxSize;
                        autoAt.ValidTargets       = _validTargets;
                        attackAction.AutoAttack   = autoAt;
                        entityAction.AttackAction = attackAction;
                        entityActions[entity.Id] = entityAction;
                        //}
                    }
                    else if (entity.EntityType == EntityType.BuilderBase)
                    {
                        if (i == 1)
                        {
                            buildAction.EntityType = EntityType.BuilderUnit;
                            // if (properties != null)
                            {
                                buildAction.Position = new Vec2Int(entity.Position.X + properties.Size, entity.Position.Y + properties.Size - 1);
                            }
                            entityAction.BuildAction = buildAction;
                        }
                        else
                        {
                            entityAction.BuildAction = null;
                        }

                        entityActions[entity.Id] = entityAction;
                    }
                    else if (entity.EntityType == EntityType.RangedBase)
                    {
                        if (i == -1)
                        {
                            buildAction.EntityType = EntityType.RangedUnit;
                            // if (properties != null)
                            {
                                buildAction.Position = new Vec2Int(entity.Position.X + properties.Size, entity.Position.Y + properties.Size - 1);
                            }
                            entityAction.BuildAction = buildAction;
                        }
                        else
                        {
                            entityAction.BuildAction = null;
                        }

                        entityActions[entity.Id] = entityAction;
                    }
                }
            }

            return new Action(entityActions);
        }

        public void DebugUpdate(PlayerView playerView, DebugInterface debugInterface)
        {
            debugInterface.Send(new DebugCommand.Clear());
            debugInterface.GetState();
        }
    } 

01.12.2020 2:00:11
Eugene713

Eugene713

???

Всем привет! Подскажите, плиз, что может означать такое при отправке стратегии на питоне?

stdout:

stderr:
+ cd /output
+ python ./main.py gameserver 31001 f321179371b560cb0dd77458afe4f3a5daee16ce_0
Exit code:137
Memory used: 17MB
Consumed time: 40672
TIME LIMIT EXCEEDED
Player crashed: IO error: Resource temporarily unavailable (os error 11)

01.12.2020 8:50:54
Eugene713

Всем привет! Подскажите, плиз, что может означать такое при отправке стратегии на питоне? stdout:

stderr: + cd /output + python ./main.py gameserver 31001 f321179371b560cb0dd77458afe4f3a5daee16ce_0 Exit code:137 Memory used: 17MB Consumed time: 40672 TIME LIMIT EXCEEDED Player crashed: IO error: Resource temporarily unavailable (os error 11)

И да, процессов не создаю, родные файлы не трогал. В stdout и на диск ничего не пишу

01.12.2020 8:55:08
GloveRyba

GloveRyba

Нижний Новгород

Eugene713

Eugene713

???

Всем привет! Подскажите, плиз, что может означать такое при отправке стратегии на питоне? stdout:

stderr: + cd /output + python ./main.py gameserver 31001 f321179371b560cb0dd77458afe4f3a5daee16ce_0 Exit code:137 Memory used: 17MB Consumed time: 40672 TIME LIMIT EXCEEDED Player crashed: IO error: Resource temporarily unavailable (os error 11)

Случалось подобное, когда стратегия пыталась строить за пределами поля или гнала туда юнита.

01.12.2020 8:59:30
Eugene713

Eugene713

???

GloveRyba

GloveRyba

Нижний Новгород

stderr: + cd /output + python ./main.py gameserver 31001 f321179371b560cb0dd77458afe4f3a5daee16ce_0 Exit code:137 Memory used: 17MB Consumed time: 40672 TIME LIMIT EXCEEDED Player crashed: IO error: Resource temporarily unavailable (os error 11) Случалось подобное, когда стратегия пыталась строить за пределами поля или гнала туда юнита.

Хм, строить умеет только рабочих, а юнитов гонит только к ресурсам. По идее если ресурс есть - значит он в пределе карты. Спасибо за наводку, ума не приложу как такое локально проверить, но попробую)

01.12.2020 9:03:16
mixei4

mixei4

КГУ

Eugene713

Eugene713

???

Всем привет! Подскажите, плиз, что может означать такое при отправке стратегии на питоне? stdout:

stderr: + cd /output + python ./main.py gameserver 31001 f321179371b560cb0dd77458afe4f3a5daee16ce_0 Exit code:137 Memory used: 17MB Consumed time: 40672 TIME LIMIT EXCEEDED Player crashed: IO error: Resource temporarily unavailable (os error 11)

TIME LIMIT EXCEEDED?

Стратегию в режиме второго раунда или финала проверяли?

01.12.2020 9:54:53
onesimpletoo

onesimpletoo

itv group

Коллеги, я строю дома House, они строятся но почему то лимит юнитов не увеличивается. В чем секрет?

01.12.2020 11:49:51
Eugene713

Eugene713

???

Вот это помогло найти ошибку у меня в коде, спасибо!

01.12.2020 11:58:03
onesimpletoo

onesimpletoo

itv group

onesimpletoo

onesimpletoo

itv group

Коллеги, я строю дома House, они строятся но почему то лимит юнитов не увеличивается. В чем секрет?

Дома отстраиваются но постоянно 15 из 15 юнитов. Стратегия на C#.

Может баг какой?

01.12.2020 12:37:21
GloveRyba

GloveRyba

Нижний Новгород

onesimpletoo

onesimpletoo

itv group

Дома отстраиваются но постоянно 15 из 15 юнитов. Стратегия на C#. Может баг какой?

Дома появляются с неполным “здоровьем”. Пока <100%, не работает.

01.12.2020 13:40:49
georg_karr_spb

georg_karr_spb

NekBrainLab

onesimpletoo

onesimpletoo

itv group

Коллеги, я строю дома House, они строятся но почему то лимит юнитов не увеличивается. В чем секрет?

Отремонтируй до здоровья 100%

01.12.2020 14:40:47
snikes

snikes

РГППУ

stdout:

stderr: + cd /output + dotnet ./aicup2020.dll gameserver 31004 be1bc927763649a2420b09e4eaaedd1b5ad0fbf6_3 Unhandled exception. System.IO.EndOfStreamException: Unable to read beyond the end of the stream. at System.IO.BinaryReader.InternalRead(Int32 numBytes) at System.IO.BinaryReader.ReadInt32() at Aicup2020.Model.ServerMessage.ReadFrom(BinaryReader reader) in /project/Model/ServerMessage.cs:line 17 at Aicup2020.Runner.Run() in /project/Runner.cs:line 29 at Aicup2020.Runner.Main(String[] args) in /project/Runner.cs:line 56 run.sh: line 4: 8 Aborted (core dumped) dotnet ./aicup2020.dll “$@” Exit code:134 Memory used: 18MB Consumed time: 539

Локально работает, при отправке ошибка!! Куда копать?

02.12.2020 23:03:03
mixei4

mixei4

КГУ

snikes

snikes

РГППУ

stdout: stderr: + cd /output + dotnet ./aicup2020.dll gameserver 31004 be1bc927763649a2420b09e4eaaedd1b5ad0fbf6_3 Unhandled exception. System.IO.EndOfStreamException: Unable to read beyond the end of the stream. at System.IO.BinaryReader.InternalRead(Int32 numBytes) at System.IO.BinaryReader.ReadInt32() at Aicup2020.Model.ServerMessage.ReadFrom(BinaryReader reader) in /project/Model/ServerMessage.cs:line 17 at Aicup2020.Runner.Run() in /project/Runner.cs:line 29 at Aicup2020.Runner.Main(String[] args) in /project/Runner.cs:line 56 run.sh: line 4: 8 Aborted (core dumped) dotnet ./aicup2020.dll “$@” Exit code:134 Memory used: 18MB Consumed time: 539 …

Точно такая же ошибка :( Как-нибудь решилось?

03.12.2020 4:16:38
Sardukar

Sardukar

Артем

Не пойму чо за прикол. Говорю строителю строй туррель а он не строит: buildaction = model.BuildAction(EntityType.TURRET, positionforbuild) entity_action = model.EntityAction(None, buildaction, None, None) actions[builderunit.id] = entity_action Стоит и все. И ничего не происходит. Ресурсов хвататет. Подвел к ячейке рядом.

03.12.2020 6:15:46
onesimpletoo

onesimpletoo

itv group

Сегодня юниты перестали собирать ресуры, что изменили в эмуляции с апдейтом?

03.12.2020 11:22:06
onesimpletoo

onesimpletoo

itv group

                    moveAction.Target = findNear(playerView.Entities[Ind].Position, resurs);
                    moveAction.BreakThrough = true;
                    moveAction.FindClosestPosition = false;
                    entityAction.MoveAction = moveAction;
                    entityActions.Add(playerView.Entities[Ind].Id, entityAction);

Больше не работает, строитель стоит и не добывает ресурс, попробовать атаковать ресурс по ID - тоже ничего не происходит….

03.12.2020 11:44:27
DolfWolkov

DolfWolkov

Москва

mixei4

mixei4

КГУ

Точно такая же ошибка :( Как-нибудь решилось?

Была тоже такая ошибка. У меня была связана с тем, что я Runner.cs релизовой версии случайно подменил отладочным, в котором были правки, помогающие мне отлаживаться - запуск сторонних экзешников, запись в файлы и т.д.

03.12.2020 13:40:42
DolfWolkov

DolfWolkov

Москва

onesimpletoo

onesimpletoo

itv group

                moveAction.Target = findNear(playerView.Entities[Ind].Position, resurs);
                moveAction.BreakThrough = true;
                moveAction.FindClosestPosition = false;
                entityAction.MoveAction = moveAction;
                entityActions.Add(playerView.Entities[Ind].Id, entityAction);

1 числа был апдейт в котором починили “баг”, который выглядел скорее как фича - если не указать коллекцию целей для автоатаки, то юнит атакует всех. Теперь пустая коллекция означает что юнит не будет атаковать вообще никого. Может проблема в этом?

03.12.2020 13:47:43
Sardukar

Sardukar

Артем

onesimpletoo

onesimpletoo

itv group

                moveAction.Target = findNear(playerView.Entities[Ind].Position, resurs);
                moveAction.BreakThrough = true;
                moveAction.FindClosestPosition = false;
                entityAction.MoveAction = moveAction;
                entityActions.Add(playerView.Entities[Ind].Id, entityAction);

У меня такое же в тестовых играх на сайте. В приложении все ок.

03.12.2020 17:21:33
snikes

snikes

РГППУ

mixei4

mixei4

КГУ

Точно такая же ошибка :( Как-нибудь решилось?

Решилось, баг на моей стороне, вышел за пределы карты при указании точки перемещения/строительства/атаки

03.12.2020 17:37:11
snikes

snikes

РГППУ

Как рисовать на карте? (С#)

03.12.2020 17:39:41
Ver_Nick

Ver_Nick

КФУ им. В.И. Вернадского

Сам немного прифигел, когда увидел, что у меня по нулям счёт в нескольких последних играх. Короче теперь билдерам нельзя указывать MoveAction с breakThrough, теперь можно использовать только AttackAction с автоатакой, типа вот так:

attackAction.Target = next.Id;
var autoAt = new AutoAttack();
autoAt.PathfindRange = playerView.MapSize;
autoAt.ValidTargets = new EntityType[] { EntityType.Resource };
attackAction.AutoAttack = autoAt;

03.12.2020 21:13:04
sergeev.miha

sergeev.miha

СКБ Контур

Всем привет! Кто юзает python, случаем не ловили ошибку при отправке игры?

Traceback (most recent call last):
  File "/output/./main.py", line 45, in <module>
    Runner(host, port, token).run()
  File "/output/./main.py", line 26, in run
    message = model.ServerMessage.read_from(self.reader)
  File "/output/model/server_message.py", line 4, in read_from
    tag = stream.read_int()
  File "/output/stream_wrapper.py", line 26, in read_int
    return self.INT_FORMAT_STRUCT.unpack(self.stream.read(4))[0]
struct.error: unpack requires a buffer of 4 bytes

03.12.2020 21:26:14
Sardukar

Sardukar

Артем

sergeev.miha

sergeev.miha

СКБ Контур

Всем привет! Кто юзает python, случаем не ловили ошибку при отправке игры? Traceback (most recent call last): File “/output/./main.py”, line 45, in Runner(host, port, token).run() File “/output/./main.py”, line 26, in run message = model.ServerMessage.read_from(self.reader) File “/output/model/server_message.py”, line 4, in read_from tag = stream.read_int() File “/output/stream_wrapper.py”, line 26, in read_int return self.INT_FORMAT_STRUCT.unpack(self.stream.read(4))[0] struct.error: unpack requires a buffer of 4 bytes

Что-то было похожее. Где-то ошибка моя была. То ли не словарь передавал в Action, то ли где-то в объекты действий не ожидаемый тип писал.

04.12.2020 2:17:25
coolspawn

coolspawn

Шатура

Привет! На что ругается валидатор? stdout:

stderr: + cd /output + java -Xmx250m -jar ./aicup2020-jar-with-dependencies.jar gameserver 31003 93464b80d7c862f727904da391eefbe37822c0a8_2 Exception in thread “main” java.io.IOException: Unexpected EOF at util.StreamUtil.readBytes(StreamUtil.java:23) at util.StreamUtil.readInt(StreamUtil.java:33) at model.ServerMessage.readFrom(ServerMessage.java:8) at Runner.run(Runner.java:29) at Runner.main(Runner.java:51) Exit code:1 Memory used: 40MB Consumed time: 2578

04.12.2020 2:30:35
ivanich

А скиньте кто-нибудь началку на Питоне, плиз, по-братски) Чет сходу так трудно разобраться.

04.12.2020 3:59:12
sergeev.miha

sergeev.miha

СКБ Контур

Sardukar

Sardukar

Артем

Что-то было похожее. Где-то ошибка моя была. То ли не словарь передавал в Action, то ли где-то в объекты действий не ожидаемый тип писал.

Спасибо, буду чинить)

04.12.2020 5:16:12
Sardukar

Sardukar

Артем

Что означает такое сообщение при отправке на сайт?

stdout:

stderr: + cd /output + python ./main.py gameserver 31001 6de77eb79dafdcab67bfd4bdd6ce1185b5aefe0c_0 Exit code:137 Memory used: 8MB Consumed time: 40152 TIME LIMIT EXCEEDED Player crashed: IO error: failed to fill whole buffer

04.12.2020 9:19:28
mixei4

mixei4

КГУ

Sardukar

Sardukar

Артем

Что означает такое сообщение при отправке на сайт? stdout: stderr: + cd /output + python ./main.py gameserver 31001 6de77eb79dafdcab67bfd4bdd6ce1185b5aefe0c_0 Exit code:137 Memory used: 8MB Consumed time: 40152 TIME LIMIT EXCEEDED Player crashed: IO error: failed to fill whole buffer

Превышено отведённое ограничение по времени (40 секунд)

04.12.2020 9:24:29
Pipickin

Pipickin

Минск

Всем привет, говорили, что скинут простую стратегию для разных ЯП. Может Я куда-то не туда смотрю, но для python не вижу. Может кто-то может поделиться с чего начать. Это мой первый опыт в подобных соревнованиях, заранее благодарю

04.12.2020 14:24:53
Sardukar

Sardukar

Артем

Pipickin

Pipickin

Минск

Всем привет, говорили, что скинут простую стратегию для разных ЯП. Может Я куда-то не туда смотрю, но для python не вижу. Может кто-то может поделиться с чего начать. Это мой первый опыт в подобных соревнованиях, заранее благодарю

для примера двигаться так: moveAction = model.MoveAction(ResourseForAtack.position, True, True) entity_action = model.EntityAction(moveAction, None, None, None) actions[builderunit.id] = entity_action

04.12.2020 14:49:49
Sardukar

Sardukar

Артем

Кто на Питоне? Я все скурил, не могу понять почему не строит. Места полно. Юнит стоит рядом вплотную. Ресурсов хватат. buildaction = model.BuildAction(EntityType.HOUSE,positionforbuild) entity_action = model.EntityAction(None, buildaction, None, None) actions[builderunit.id] = entity_action и нифига

04.12.2020 14:55:34
Ver_Nick

Ver_Nick

КФУ им. В.И. Вернадского

Sardukar

Sardukar

Артем

Кто на Питоне? Я все скурил, не могу понять почему не строит. Места полно. Юнит стоит рядом вплотную. Ресурсов хватат. buildaction = model.BuildAction(EntityType.HOUSE,positionforbuild) entity_action = model.EntityAction(None, buildaction, None, None) actions[builderunit.id] = entity_action и нифига

Сам долго курил, как эти дома строить. Как наберется дофига ресов, выдели одного главного строителя, и двигай его скажем по оси Y, и пытайся строить дом на клеточку вправо от строителя. Где свободное место будет, там построится.

04.12.2020 15:04:15
Sardukar

Sardukar

Артем

Ver_Nick

Ver_Nick

КФУ им. В.И. Вернадского

Сам долго курил, как эти дома строить. Как наберется дофига ресов, выдели одного главного строителя, и двигай его скажем по оси Y, и пытайся строить дом на клеточку вправо от строителя. Где свободное место будет, там построится.

Спасибо, дружище. Ты навел меня на мысль. Я то целый алгоритм построил. Он мне удасное место находит и я подгоняю туда строителя. Но я его ставил на соседнюю клетку по-диагонали. А сейчас опробовал не по диагонали, а через стенку. И о чудо! Считаю это недоработкой приложения.

04.12.2020 15:13:05
center

Подскажите, пожалуйста, вот у меня есть какая-то стратегия. Я скачал приложение, для того, чтобы проверить у себя, как мне эту стратегию подключить? Python

04.12.2020 16:38:57
Ver_Nick

Ver_Nick

КФУ им. В.И. Вернадского

Подскажите, пожалуйста, вот у меня есть какая-то стратегия. Я скачал приложение, для того, чтобы проверить у себя, как мне эту стратегию подключить? Python

Запускай сначала приложение, потом выбери одного из игроков “TCP”. Затем запусти свой файл со стратегией. Если все нормально, в приложении будет написано, что ты подключен.

04.12.2020 16:49:23
ivanich
Pipickin

Pipickin

Минск

Всем привет, говорили, что скинут простую стратегию для разных ЯП. Может Я куда-то не туда смотрю, но для python не вижу. Может кто-то может поделиться с чего начать. Это мой первый опыт в подобных соревнованиях, заранее благодарю

ПЛЮСУЮ

04.12.2020 17:02:46
serlis

serlis

Харьковский НУ им. Каразина

ПЛЮСУЮ

В тексте приведена Простая стратегия на Питоне: “Далее приведена простая стратегия на языке Python. Она собирает ресурсы, покупает юнитов отдельно для каждого типа и посылает их в атаку в противоположный угол карты. Простые стратегии для C++, Java, C#, Python и Rust доступны в языковых пакетах.”

05.12.2020 23:32:51
serlis

serlis

Харьковский НУ им. Каразина

Кто-то может подстказать нужно ли приходить к месту постройки здания, а потом строить или указав координаты стройки рабочему я уже направляю его в нужно место?

Ещё Кто-то сталкивался с тем что С++ не копилится (стартовая версия) ? 1>CMakeCXXCompilerId.obj : error LNK2005: _main already defined in main.obj 1>CMakeCCompilerId.obj : error LNK2005: _main already defined in main.obj 1>Debug\main.obj : warning LNK4042: object specified more than once; extras ignored 1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 1>C:\Users\srlis\Downloads\aicup-Cpp (2)\Debug\AiCup.exe : fatal error LNK1120: 1 unresolved externals

05.12.2020 23:35:16
dbf

dbf

Москва

Pipickin

Pipickin

Минск

Всем привет, говорили, что скинут простую стратегию для разных ЯП. Может Я куда-то не туда смотрю, но для python не вижу. Может кто-то может поделиться с чего начать. Это мой первый опыт в подобных соревнованиях, заранее благодарю

https://github.com/MailRuChamps/raic-2020/blob/main/clients/Python/my_strategy.py

05.12.2020 23:41:36
modemaizer

modemaizer

VMedia

Здрасьти! Отправляю C# Получаю ошибку верификации - NRE при обращении к static классу. Локально всё оттестировано, работает. Как локально сэмулировать боевую сборку?

07.12.2020 14:26:25
ooCristalloo

ooCristalloo

СМПК

Здравствуйте! Пытаюсь закупить юнитов, кидаю action, дамп action снизу. Но сами юниты не закупаются, почему? array(2) { [11]=> object(EntityAction)#4821 (4) { [“moveAction”]=> NULL [“buildAction”]=> NULL [“attackAction”]=> object(AttackAction)#4820 (2) { [“target”]=> NULL [“autoAttack”]=> object(AutoAttack)#4813 (2) { [“pathfindRange”]=> int(9999) [“validTargets”]=> array(1) { [0]=> int(8) } } } [“repairAction”]=> NULL } [15]=> object(EntityAction)#4822 (4) { [“moveAction”]=> NULL [“buildAction”]=> object(BuildAction)#4814 (2) { [“entityType”]=> int(3) [“position”]=> object(Vec2Int)#4817 (2) { [“x”]=> int(15) [“y”]=> int(4) } } [“attackAction”]=> NULL [“repairAction”]=> NULL } }

07.12.2020 14:42:19
modemaizer

modemaizer

VMedia

ooCristalloo

ooCristalloo

СМПК

Здравствуйте! Пытаюсь закупить юнитов, кидаю action, дамп action снизу. Но сами юниты не закупаются, почему? array(2) { [11]=> object(EntityAction)#4821 (4) { [“moveAction”]=> NULL [“buildAction”]=> NULL [“attackAction”]=> object(AttackAction)#4820 (2) { [“target”]=> NULL [“autoAttack”]=> object(AutoAttack)#4813 (2) { [“pathfindRange”]=> int(9999) [“validTargets”]=> array(1) { [0]=> int(8) } } } [“repairAction”]=> NULL } [15]=> object(EntityAction)#4822 (4) { [“moveAction”]=> NULL [“buildAction”]=> object(BuildAction)#4814 (2) { [“entityType”]=> int(3) [“position”]=> object(Vec2Int)#4817 (2) { [“x”]=> int(15) [“y”]=> int(4) } } [“attackAction”]=> NULL [“repairAction”]=> NULL } }

Должны быть соблюдены условия: - достаточно ресурса - достаточно еды - position на расстоянии 1 от базы (вплотную к её стене) - в точке position никого нет

07.12.2020 14:46:32
ooCristalloo

ooCristalloo

СМПК

modemaizer

modemaizer

VMedia

Должны быть соблюдены условия: - достаточно ресурса - достаточно еды - position на расстоянии 1 от базы (вплотную к её стене) - в точке position никого нет

все соблюдено

07.12.2020 14:50:51
piton369

piton369

Зеленоград

ПЛЮСУЮ

Можно скачать от сюда: https://russianaicup.ru/p/packs

07.12.2020 14:51:12
modemaizer

modemaizer

VMedia

modemaizer

modemaizer

VMedia

Здрасьти! Отправляю C# Получаю ошибку верификации - NRE при обращении к static классу. Локально всё оттестировано, работает. Как локально сэмулировать боевую сборку?

Сам сглупил - пакет просто надо обновлять полностью, а не частями ))

07.12.2020 15:10:10
steleal

steleal

Ульяновск

Sardukar

Sardukar

Артем

Спасибо, дружище. Ты навел меня на мысль. Я то целый алгоритм построил. Он мне удасное место находит и я подгоняю туда строителя. Но я его ставил на соседнюю клетку по-диагонали. А сейчас опробовал не по диагонали, а через стенку. И о чудо! Считаю это недоработкой приложения.

Это не недоработка приложения, это явно обозначено в правилах и относится не только к строительству, но и к ремонту, урону и т.п. Т.е зона поражения лучника - не квадрат 11*11, а ромб с диагоналями 11*11. А у милишника - не 8 клеток бьются, а только 4.

07.12.2020 20:26:22
snikes

snikes

РГППУ

А построил дом за пределами карты, позиции -2,-2 ))) на карте виднеется уголок, одна клетка, но починить его не дает ))) вот такой баг нашел

http://prntscr.com/vxqk4v можно посмотреть в бою https://russianaicup.ru/game/view/50923 баг повторяется

07.12.2020 22:19:37
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

А построил дом за пределами карты, позиции -2,-2 ))) на карте виднеется уголок, одна клетка, но починить его не дает ))) вот такой баг нашел http://prntscr.com/vxqk4v можно посмотреть в бою https://russianaicup.ru/game/view/50923 баг повторяется

это не дом это так стена отображается , попробуйте переключить в 3д и покрутить

08.12.2020 1:26:30
mixei4

mixei4

КГУ

snikes

snikes

РГППУ

А построил дом за пределами карты, позиции -2,-2 ))) на карте виднеется уголок, одна клетка, но починить его не дает ))) вот такой баг нашел http://prntscr.com/vxqk4v можно посмотреть в бою https://russianaicup.ru/game/view/50923 баг повторяется

Так получается если возвращать просто new BuildAction();

EntityType.Wall == 0 и координаты по умолчанию (0, 0)

08.12.2020 4:47:11
snikes

snikes

РГППУ

zn-soft

zn-soft

Fesco

это не дом это так стена отображается , попробуйте переключить в 3д и покрутить

Это Дом, я не строю стены

08.12.2020 6:07:01
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

Это Дом, я не строю стены

а когда ничего не строите null вместо new BuilAction() ?

08.12.2020 7:32:27
snikes

snikes

РГППУ

zn-soft

zn-soft

Fesco

а когда ничего не строите null вместо new BuilAction() ?

Заменил везде null на new BuildAction() все равно квадрат строит

08.12.2020 8:57:58
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

Заменил везде null на new BuildAction() все равно квадрат строит

верните null, наоборот если null то ничего не строит а если new BuildAction() то построит стену с координатами (0,0) опять же в случае если юнит рядом с этими координатами т.е должно совпасть 2 условия

08.12.2020 9:46:44
raTaHoa

raTaHoa

Москва

Простая стратегия на Ruby: require_relative ‘model’

class MyStrategy
    def get_action(player_view, debug_interface)

       result = Action.new({})
       my_id = player_view.my_id
       player_view.entities.filter{|entity| entity.player_id == my_id}.each do |entity|

         properties = player_view.entity_properties[entity.entity_type]

         move_action = nil
         build_action = nil
         if properties.can_move
          move_action = MoveAction.new(
              Vec2Int.new(player_view.map_size - 1,
                   player_view.map_size - 1),
              true,
              true)
         elsif !properties.build.nil?
          entity_type = properties.build.options[0]
          current_units = player_view.entities.filter{ |other_entity| my_id == other_entity.player_id && other_entity.entity_type == entity_type}.size

          if (current_units + 1) * player_view.entity_properties[entity_type].population_use <= properties.population_provide
              build_action = BuildAction.new(
                 entity_type,
                 Vec2Int.new(entity.position.x + properties.size, entity.position.y + properties.size - 1)
              )
          end
         end
         result.entity_actions[entity.id] = EntityAction.new(
          move_action,
          build_action,
          AttackAction.new(nil,  AutoAttack.new(properties.sight_range, entity.entity_type == EntityType::BUILDER_UNIT ? [EntityType::RESOURCE] : [])),
          nil
         )
       end

       result
    end

    def debug_update(player_view, debug_interface)
       debug_interface.send(DebugCommand::Clear.new())
       debug_interface.get_state()
    end
end

08.12.2020 20:03:55
Ziegel

Ziegel

Kvantorium15

Вопрос, наверное, к коллегам питонистам. Могу ли я, для того чтобы сохранять информацию между тиками сделать у класса MyStrategy init и в его полях чтото хранить? или экземпляр класса создается при каждом запуске?

09.12.2020 15:12:02
VGdXO13U
Ziegel

Ziegel

Kvantorium15

Вопрос, наверное, к коллегам питонистам. Могу ли я, для того чтобы сохранять информацию между тиками сделать у класса MyStrategy init и в его полях чтото хранить? или экземпляр класса создается при каждом запуске?

Да, все прекрасно сохраняется, оно для того и сделано классом, чтобы в полях и методах работать с основными данными.

09.12.2020 17:43:30
bibigul

bibigul

Хотам и П.В

можете помочь с проблемой мой код работотает для всех цветов кроме оранджевого не знаете в чём проблема?

10.12.2020 14:15:05
dbf

dbf

Москва

bibigul

bibigul

Хотам и П.В

можете помочь с проблемой мой код работотает для всех цветов кроме оранджевого не знаете в чём проблема?

bibigul, в коде учтено, что координаты всегда приходят так, как будто вы в углу (0, 0)?

10.12.2020 14:25:50
bibigul

bibigul

Хотам и П.В

dbf

dbf

Москва

bibigul, в коде учтено, что координаты всегда приходят так, как будто вы в углу (0, 0)?

да

10.12.2020 15:01:33
steleal

steleal

Ульяновск

bibigul

bibigul

Хотам и П.В

да

Индексы игроков - от 1 до 4, не от 0 до 3?

10.12.2020 15:02:36
bibigul

bibigul

Хотам и П.В

bibigul

bibigul

Хотам и П.В

да

да но почему- то когда я играю за оранджевых мои юниты ничего не делают а так все норм работает

10.12.2020 15:04:58
BaR5uk

BaR5uk

Карачев

Стены — самые бесполезные юниты в игре. Они стоят 10 ресурса, но требуют 45 рабоче-тиков, чтобы выйти онлайн. Это эффективно 55 ресурсов. За эти деньги можно купить 2-3 мечника (в зависимости от фазы игры) и иметь мобильность, возможность атаковать, в 5 раз больший обзор и суммарное HP 100-150 против 50 у стены. Вот если бы у стен (да и у туррелей за одно) было бы 3-4 Damage Reduction, то тогда их EHP было бы 200-250, а один тик ремонта шёл бы за 4-5 EHP. Было бы куда привлекательные их использовать, особенно, когда закончились ресурсы на карте.

Алсо, у меня вопрос. Верно ли, что неактивные здания не дают никакого обзора?

14.12.2020 9:42:06
MrZlodey

MrZlodey

NetCracker

В симуляторе строю дома, а доступный population не растёт Кто сталкивался?

15.12.2020 2:45:28
stulentsev

stulentsev

Дублин

MrZlodey

MrZlodey

NetCracker

В симуляторе строю дома, а доступный population не растёт Кто сталкивался?

чини их

15.12.2020 3:03:17
MrZlodey

MrZlodey

NetCracker

stulentsev

stulentsev

Дублин

чини их

Спасибо, в правилах как-то размыто об этом написано “Для активации сущности она должна сперва достигнуть максимального значения здоровья. Так что, если сущность была построена с неполным здоровьем, ее будет необходимо отремонтировать”

15.12.2020 20:37:20
romasffm

romasffm

Бад-Зоден

Здравствуйте!

А нельзя ли добавить в Java-e библиотеку fastutil, а то вот что происходит, если ее добавить в pom.xml:

[INFO] Scanning for projects… [INFO] [INFO] ————–< com.codegame.aicup2020.devkit:aicup2020 >————— [INFO] Building aicup2020 1.0-SNAPSHOT [INFO] ——————————–[ jar ]——————————— [INFO] Downloading from central: https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/8.4.4/fastutil-8.4.4.pom [INFO] ———————————————————————— [INFO] BUILD FAILURE [INFO] ———————————————————————— [INFO] Total time: 11.675 s [INFO] Finished at: 2020-12-15T19:14:42Z [INFO] ———————————————————————— [ERROR] Failed to execute goal on project aicup2020: Could not resolve dependencies for project com.codegame.aicup2020.devkit:aicup2020:jar:1.0-SNAPSHOT: Failed to collect dependencies at it.unimi.dsi:fastutil:jar:8.4.4: Failed to read artifact descriptor for it.unimi.dsi:fastutil:jar:8.4.4: Could not transfer artifact it.unimi.dsi:fastutil:pom:8.4.4 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/8.4.4/fastutil-8.4.4.pom: Unknown host repo.maven.apache.org: Name or service not known -> [Help 1]

16.12.2020 14:36:24
Borisov

Borisov

Подольск

Всем привет, при отправке стратегии на C++ столкнулся с ошибкой верификации:

stdout:

stderr:
+ cd /output
+ ./aicup2020 gameserver 31001 dbb5b55585186555f2912303c84ef31e625edd11_0
run.sh: line 4:     8 Segmentation fault      (core dumped) ./aicup2020 "$@"
Exit code:139
Memory used: 3MB
Consumed time: 1112 ms
Player crashed: IO error: failed to fill whole buffer

Из ошибки, похоже на выход за границы массива.

Локально в режимах DEBUG/RELEASE все работает, обложился try/catch все равно не помогает

Подскажите пожалуйста, может кто сталкивался с таким? Или может возможно достать какой-то более подробный лог или попытаться воспроизвести ошибку локально?

18.12.2020 1:16:18
Borisov

Borisov

Подольск

Borisov

Borisov

Подольск

Всем привет, при отправке стратегии на C++ столкнулся с ошибкой верификации: stdout:

stderr: + cd /output + ./aicup2020 gameserver 31001 dbb5b55585186555f2912303c84ef31e625edd11_0 run.sh: line 4: 8 Segmentation fault (core dumped) ./aicup2020 “$@” Exit code:139 Memory used: 3MB Consumed time: 1112 ms Player crashed: IO error: failed to fill whole buffer …

Проблему решил, закомменчивал функции по одной и отправлял на сервер, таким макаром нашел место где падает, убрал все вызовы этой функции и все ок. Судя по всему я где-то неправильно работал с unordered_map.

18.12.2020 2:33:29
jurifoll

jurifoll

Москва

Что происходит с сервером? При попытке загрузить стратегию постоянно выдает ошибку превышения по времени. Хотя пытаюсь загрузить версии, которые раньше нормально работали. В итоге загрузился стартгай, а заменить его на какую-либо нормальную версию не получается(

18.12.2020 11:42:20
Dan_Tat

Dan_Tat

Университет ИТМО

Не могу разобраться, как при управлении с клавиатуры строить юнитов?

05.01.2021 14:02:24