Open AI Championship

Quick start

Sandbox: before end

Project

Sandbox

Round 1

Round 2

Finals

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

Recent comments

7 january 16:04: tsapelman wrote comment on post Finals: Results
5 january 15:34: amurushkin wrote comment on post CodeCraft 2020 App
5 january 15:28: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 15:24: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 15:24: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 14:38: amurushkin wrote comment on post CodeCraft 2020 App
5 january 14:29: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 14:02: Dan_Tat wrote comment on post Quick start
29 december 15:53: kuviman wrote comment on post Finals: Results
29 december 15:53: kuviman wrote comment on post Language packages

VK Group

Telegram chat

Discord

 

We’ll show you how to join CodeCraft in a few minutes.

Register

Of course, you need to register. We kindly ask all participants to provide accurate and complete information about yourself.

Download language pack

Download the package for your favorite programming language from the language packs page. Unzip the archive and open an existing project or create a new one from scratch. You may need to configure some paths.

Download the app

The app gives you the opportunity to run and test games locally on your computer. Read more about it here.

Read the documentation

The official and complete rules are published in the Rules section, please read them. Some organizational aspects you can find in the descriptions of the Sandbox and stages of the championship (Round 1, Round 2, Finals).

Submit your strategy

You can submit you strategy here. Before the system will accept your strategy, it will be compiled and tested in a few short games. If everything is OK, your strategy will automatically start to participate in regular qualifying games in Sandbox. Carefully read the section “What you should pay attention to” for various aspects due to which your strategy can get the “Verification error” verdict. The total number of submissions are not restricted, however there are restrictions on too frequent submitting. Any attempt to destabilize the system will result in disqualification. You can write your strategy in an arbitrary number of files, you will only need to pack everything into a ZIP archive and send it.

What you should pay attention to

  • your strategy has limited CPU time;
  • the strategy process should not exceed memory limit;
  • if your strategy exceeds the time or memory limit or crashes during the execution, it stops to participate in this game (however, your score points do not expire);
  • the strategy of each participant runs in a separate container.

Simple strategy

Here is a simple strategy in Python programming language. It is gathering resources, buys units separately for each type and sends them to the opposite map corner with auto attack. Simple strategies for C++, Java, C#, Python and Rust are available in language packages.

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 всех юнитов. А здесь сравнивается использование еды только юнитами того типа, которое здание производит, с производством еды конкретно этим зданием???

Nov 28, 2020 12:14:52 PM
Savidiy

Savidiy

Pskov

spaceorc

spaceorc

СКБ Контур

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

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

Nov 28, 2020 2:02:39 PM
WitcherSanek

WitcherSanek

Moscow

Savidiy

Savidiy

Pskov

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

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

Nov 28, 2020 6:20:36 PM
Savidiy

Savidiy

Pskov

WitcherSanek

WitcherSanek

Moscow

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

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

Nov 28, 2020 7:56:29 PM
Smeagol

Smeagol

Algeria

Hello, Madknight joue tu ?

Nov 29, 2020 4:31:57 AM
j303

j303

Moscow

Всем привет.

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

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

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

Nov 29, 2020 8:43:58 AM
Okke

Okke

Saint Petersburg

j303

j303

Moscow

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

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

Nov 29, 2020 1:16:44 PM
Okke

Okke

Saint Petersburg

j303

j303

Moscow

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

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

Nov 29, 2020 1:17:21 PM
alivefil

alivefil

Krasnoyarsk

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

Nov 29, 2020 1:23:03 PM
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()
}

}

Nov 30, 2020 12:21:50 AM
NORD

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

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

Nov 30, 2020 9:49:47 PM
kuviman

kuviman

Codeforces

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

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

Nov 30, 2020 10:10:38 PM
deadln

deadln

Stavropol

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

Nov 30, 2020 10:47:41 PM
NORD
kuviman

kuviman

Codeforces

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

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

Nov 30, 2020 10:51:51 PM
VASPO

VASPO

Saint Petersburg

стратегия 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();
        }
    } 

Dec 1, 2020 2:00:11 AM
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)

Dec 1, 2020 8:50:54 AM
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 и на диск ничего не пишу

Dec 1, 2020 8:55:08 AM
GloveRyba

GloveRyba

Nizhny Novgorod

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)

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

Dec 1, 2020 8:59:30 AM
Eugene713

Eugene713

???

GloveRyba

GloveRyba

Nizhny Novgorod

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) Случалось подобное, когда стратегия пыталась строить за пределами поля или гнала туда юнита.

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

Dec 1, 2020 9:03:16 AM
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?

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

Dec 1, 2020 9:54:53 AM
onesimpletoo

onesimpletoo

itv group

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

Dec 1, 2020 11:49:51 AM
Eugene713

Eugene713

???

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

Dec 1, 2020 11:58:03 AM
onesimpletoo

onesimpletoo

itv group

onesimpletoo

onesimpletoo

itv group

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

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

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

Dec 1, 2020 12:37:21 PM
GloveRyba

GloveRyba

Nizhny Novgorod

onesimpletoo

onesimpletoo

itv group

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

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

Dec 1, 2020 1:40:49 PM
georg_karr_spb

georg_karr_spb

NekBrainLab

onesimpletoo

onesimpletoo

itv group

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

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

Dec 1, 2020 2:40:47 PM
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

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

Dec 2, 2020 11:03:03 PM
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 …

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

Dec 3, 2020 4:16:38 AM
Sardukar

Sardukar

Артем

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

Dec 3, 2020 6:15:46 AM
onesimpletoo

onesimpletoo

itv group

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

Dec 3, 2020 11:22:06 AM
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 - тоже ничего не происходит….

Dec 3, 2020 11:44:27 AM
DolfWolkov

DolfWolkov

Moscow

mixei4

mixei4

КГУ

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

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

Dec 3, 2020 1:40:42 PM
DolfWolkov

DolfWolkov

Moscow

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

Dec 3, 2020 1:47:43 PM
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);

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

Dec 3, 2020 5:21:33 PM
snikes

snikes

РГППУ

mixei4

mixei4

КГУ

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

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

Dec 3, 2020 5:37:11 PM
snikes

snikes

РГППУ

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

Dec 3, 2020 5:39:41 PM
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;

Dec 3, 2020 9:13:04 PM
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

Dec 3, 2020 9:26:14 PM
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, то ли где-то в объекты действий не ожидаемый тип писал.

Dec 4, 2020 2:17:25 AM
coolspawn

coolspawn

Shatura

Привет! На что ругается валидатор? 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

Dec 4, 2020 2:30:35 AM
ivanich

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

Dec 4, 2020 3:59:12 AM
sergeev.miha

sergeev.miha

СКБ Контур

Sardukar

Sardukar

Артем

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

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

Dec 4, 2020 5:16:12 AM
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

Dec 4, 2020 9:19:28 AM
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 секунд)

Dec 4, 2020 9:24:29 AM
Pipickin

Pipickin

Minsk

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

Dec 4, 2020 2:24:53 PM
Sardukar

Sardukar

Артем

Pipickin

Pipickin

Minsk

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

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

Dec 4, 2020 2:49:49 PM
Sardukar

Sardukar

Артем

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

Dec 4, 2020 2:55:34 PM
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, и пытайся строить дом на клеточку вправо от строителя. Где свободное место будет, там построится.

Dec 4, 2020 3:04:15 PM
Sardukar

Sardukar

Артем

Ver_Nick

Ver_Nick

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

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

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

Dec 4, 2020 3:13:05 PM
center

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

Dec 4, 2020 4:38:57 PM
Ver_Nick

Ver_Nick

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

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

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

Dec 4, 2020 4:49:23 PM
ivanich

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

ПЛЮСУЮ

Dec 4, 2020 5:02:46 PM
serlis

serlis

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

ПЛЮСУЮ

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

Dec 5, 2020 11:32:51 PM
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

Dec 5, 2020 11:35:16 PM
dbf

dbf

Moscow

Pipickin

Pipickin

Minsk

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

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

Dec 5, 2020 11:41:36 PM
modemaizer

modemaizer

VMedia

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

Dec 7, 2020 2:26:25 PM
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 } }

Dec 7, 2020 2:42:19 PM
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 никого нет

Dec 7, 2020 2:46:32 PM
ooCristalloo

ooCristalloo

СМПК

modemaizer

modemaizer

VMedia

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

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

Dec 7, 2020 2:50:51 PM
piton369

piton369

Zelenograd

ПЛЮСУЮ

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

Dec 7, 2020 2:51:12 PM
modemaizer

modemaizer

VMedia

modemaizer

modemaizer

VMedia

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

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

Dec 7, 2020 3:10:10 PM
steleal

steleal

Ulyanovsk

Sardukar

Sardukar

Артем

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

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

Dec 7, 2020 8:26:22 PM
snikes

snikes

РГППУ

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

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

Dec 7, 2020 10:19:37 PM
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

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

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

Dec 8, 2020 1:26:30 AM
mixei4

mixei4

КГУ

snikes

snikes

РГППУ

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

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

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

Dec 8, 2020 4:47:11 AM
snikes

snikes

РГППУ

zn-soft

zn-soft

Fesco

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

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

Dec 8, 2020 6:07:01 AM
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

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

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

Dec 8, 2020 7:32:27 AM
snikes

snikes

РГППУ

zn-soft

zn-soft

Fesco

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

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

Dec 8, 2020 8:57:58 AM
zn-soft

zn-soft

Fesco

snikes

snikes

РГППУ

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

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

Dec 8, 2020 9:46:44 AM
raTaHoa

raTaHoa

Moscow

Простая стратегия на 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

Dec 8, 2020 8:03:55 PM
Ziegel

Ziegel

Kvantorium15

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

Dec 9, 2020 3:12:02 PM
VGdXO13U
Ziegel

Ziegel

Kvantorium15

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

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

Dec 9, 2020 5:43:30 PM
bibigul

bibigul

Хотам и П.В

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

Dec 10, 2020 2:15:05 PM
dbf

dbf

Moscow

bibigul

bibigul

Хотам и П.В

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

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

Dec 10, 2020 2:25:50 PM
bibigul

bibigul

Хотам и П.В

dbf

dbf

Moscow

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

да

Dec 10, 2020 3:01:33 PM
steleal

steleal

Ulyanovsk

bibigul

bibigul

Хотам и П.В

да

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

Dec 10, 2020 3:02:36 PM
bibigul

bibigul

Хотам и П.В

bibigul

bibigul

Хотам и П.В

да

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

Dec 10, 2020 3:04:58 PM
BaR5uk

BaR5uk

Karachev

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

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

Dec 14, 2020 9:42:06 AM
MrZlodey

MrZlodey

NetCracker

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

Dec 15, 2020 2:45:28 AM
stulentsev

stulentsev

Dublin

MrZlodey

MrZlodey

NetCracker

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

чини их

Dec 15, 2020 3:03:17 AM
MrZlodey

MrZlodey

NetCracker

stulentsev

stulentsev

Dublin

чини их

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

Dec 15, 2020 8:37:20 PM
romasffm

romasffm

Bad Soden am Taunus

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

А нельзя ли добавить в 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]

Dec 16, 2020 2:36:24 PM
Borisov

Borisov

Podolsk

Всем привет, при отправке стратегии на 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 все равно не помогает

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

Dec 18, 2020 1:16:18 AM
Borisov

Borisov

Podolsk

Borisov

Borisov

Podolsk

Всем привет, при отправке стратегии на 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.

Dec 18, 2020 2:33:29 AM
jurifoll

jurifoll

Moscow

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

Dec 18, 2020 11:42:20 AM
Dan_Tat

Dan_Tat

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

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

Jan 5, 2021 2:02:24 PM