Skip to content

Commit

Permalink
build.md + вывод времени матча + логи конфига на запуске
Browse files Browse the repository at this point in the history
  • Loading branch information
denrus committed Dec 2, 2021
1 parent 577b2b3 commit 481b396
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# HyperNull

Инструкция по сборке - [build.md](build.md).

HyperNull - восходящая звезда в мире криптовалют. Боты собирают hypernull-коины (монеты), генерируемые в адресном пространстве видеопамяти. Спрос на HyperNull высок, в майнинге большая конкуренция, на каждую монету претендует сразу несколько майнеров. А система безопасности видеопамяти блокирует некоторые ячейки адресного пространства, усложняя задачу.

Ваша задача разработать алгоритм бота, который будет эффективно майнить hypernull-коины: соберет как можно больше монет за фиксированное количество раундов. Бот перемещается по ячейкам двумерной карты. За один ход (или раунд) он может перейти на соседнюю ячейку по горизонтали, вертикали или диагонали, если она свободна. Левая нижняя ячейка карты задается координатами (0, 0). Карты замкнуты по ширине и высоте. Это означает, что если бот находится в крайней правой ячейке и перемещается на одну позицию вправо, он попадает в крайнюю левую ячейку (переходит через границу). Это правило применяется вдоль всех направлений и учитывается при вычислении расстояний между ячейками.
Expand Down
30 changes: 30 additions & 0 deletions build.md
Original file line number Diff line number Diff line change
@@ -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-классы.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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";
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public MatchFileLogger(String matchId, String logsFolder) {
public void matchStarted(String id, MatchMap map, MatchConfig config, Map<K, String> botNames) {
write("match");
write("match_id " + id);
write("match_time " + System.currentTimeMillis());
write("num_bots " + botNames.size());
write("##MatchConfig");
printAllFields(config);
Expand Down

0 comments on commit 481b396

Please sign in to comment.