From 481b396239d30411425bae50406c641b629b6b68 Mon Sep 17 00:00:00 2001 From: denrus Date: Thu, 2 Dec 2021 18:45:18 +0300 Subject: [PATCH] =?UTF-8?q?build.md=20+=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D1=87=D0=B0=20+=20=D0=BB=D0=BE=D0=B3=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=20=D0=BD=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ build.md | 30 +++++++++++++++++++ .../croccode/hypernull/server/HyperNull.java | 7 +++-- .../hypernull/server/MatchFileLogger.java | 1 + 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 build.md diff --git a/README.md b/README.md index 62a61e0..ca2fbc3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # HyperNull +Инструкция по сборке - [build.md](build.md). + HyperNull - восходящая звезда в мире криптовалют. Боты собирают hypernull-коины (монеты), генерируемые в адресном пространстве видеопамяти. Спрос на HyperNull высок, в майнинге большая конкуренция, на каждую монету претендует сразу несколько майнеров. А система безопасности видеопамяти блокирует некоторые ячейки адресного пространства, усложняя задачу. Ваша задача разработать алгоритм бота, который будет эффективно майнить hypernull-коины: соберет как можно больше монет за фиксированное количество раундов. Бот перемещается по ячейкам двумерной карты. За один ход (или раунд) он может перейти на соседнюю ячейку по горизонтали, вертикали или диагонали, если она свободна. Левая нижняя ячейка карты задается координатами (0, 0). Карты замкнуты по ширине и высоте. Это означает, что если бот находится в крайней правой ячейке и перемещается на одну позицию вправо, он попадает в крайнюю левую ячейку (переходит через границу). Это правило применяется вдоль всех направлений и учитывается при вычислении расстояний между ячейками. diff --git a/build.md b/build.md new file mode 100644 index 0000000..aadbb11 --- /dev/null +++ b/build.md @@ -0,0 +1,30 @@ +##Структура проекта + +- `common` - модуль с общими классами, используемыми и на стороне сервера, и на стороне бота +- `server` - модуль с кодом сервера. Дорабатывается исключительно администраторами. +- `starter-bot` - модуль-заготовка для бота. Он же - простейший пример. Можно брать за основу для работы над ботом. + +##Сборка и запуск проекта + +Сборка проекта осуществляется с помощью [Maven](https://ru.wikipedia.org/wiki/Apache_Maven). +Шаги сборки: +- Клонирование репозитория +- Установка IDE и Maven +- Выполнение команды Maven (`Execute maven goal`): mvn clean package +- Результатом сборки будут следующие артефакты: + - `server` - ./server/target/server.jar + - `starter-bot` - ./starter-bot/target/starter-bot.jar + +Для запуска: +- Сервера: + - Скопировать артефакт сборки `server.jar` и файл конфигурации [hypernull.properties](server/hypernull.properties) (файл конфигурации опционален - при его отсутствии будут использоваться значения по умолчанию) в одну папку + - Открыть командную строку (`cmd`) в папке из предыдущего пункта + - Выполнить в командной строке: `java -jar server.jar` + - Сервер запустится и станет доступным для ботов по указанным в конфигурации параметрам (порту, в частности) +- Бота: + - Скопировать артефакт сборки `starter-bot.jar` и файл конфигурации [bot.properties](starter-bot/bot.properties) в одну папку + - Открыть командную строку (`cmd`) в папке из предыдущего пункта + - Выполнить в командной строке: `java -jar starter-bot.jar` + - Бот автоматически попробует подключиться к серверу по адресу и порту, указанным в конфигурационном файле + +NOTE: И сервер, и бота можно запустить из IDE, задав нужные параметры в `.properties`-файлах и запустив соответствующие main-классы. \ No newline at end of file diff --git a/server/src/main/java/ru/croccode/hypernull/server/HyperNull.java b/server/src/main/java/ru/croccode/hypernull/server/HyperNull.java index 98ffdf5..3bd878d 100644 --- a/server/src/main/java/ru/croccode/hypernull/server/HyperNull.java +++ b/server/src/main/java/ru/croccode/hypernull/server/HyperNull.java @@ -44,7 +44,10 @@ public HyperNull(Properties properties) throws IOException { properties.getProperty("server.port", "2021")); matchLogsFolder = properties.getProperty("match.log.folder","./matchlogs/"); + System.out.println("Match logs folder was set to: " + matchLogsFolder); this.server = new Server(serverPort); + System.out.println("Server started on port: " + serverPort); + System.out.println("Server logs output: STDOUT"); } @Override @@ -116,7 +119,7 @@ public void close() throws IOException { } public static void main(String[] args) throws IOException { - System.out.print("¤ ¤ ¤ HyperNull..."); + System.out.println("¤ ¤ ¤ HyperNull STARTING... ¤ ¤ ¤"); String configPath = args.length > 0 ? args[0] : "hypernull.properties"; @@ -133,7 +136,7 @@ public static void main(String[] args) throws IOException { app.close(); ThreadPools.shutdownAll(); }))); - System.out.println(" READY ¤ ¤ ¤ "); + System.out.println("¤ ¤ ¤ HyperNull READY ¤ ¤ ¤ "); app.run(); } } diff --git a/server/src/main/java/ru/croccode/hypernull/server/MatchFileLogger.java b/server/src/main/java/ru/croccode/hypernull/server/MatchFileLogger.java index 0c6296f..f150699 100644 --- a/server/src/main/java/ru/croccode/hypernull/server/MatchFileLogger.java +++ b/server/src/main/java/ru/croccode/hypernull/server/MatchFileLogger.java @@ -39,6 +39,7 @@ public MatchFileLogger(String matchId, String logsFolder) { public void matchStarted(String id, MatchMap map, MatchConfig config, Map botNames) { write("match"); write("match_id " + id); + write("match_time " + System.currentTimeMillis()); write("num_bots " + botNames.size()); write("##MatchConfig"); printAllFields(config);