Skip to content

Commit 481b396

Browse files
author
denrus
committed
build.md + вывод времени матча + логи конфига на запуске
1 parent 577b2b3 commit 481b396

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# HyperNull
22

3+
Инструкция по сборке - [build.md](build.md).
4+
35
HyperNull - восходящая звезда в мире криптовалют. Боты собирают hypernull-коины (монеты), генерируемые в адресном пространстве видеопамяти. Спрос на HyperNull высок, в майнинге большая конкуренция, на каждую монету претендует сразу несколько майнеров. А система безопасности видеопамяти блокирует некоторые ячейки адресного пространства, усложняя задачу.
46

57
Ваша задача разработать алгоритм бота, который будет эффективно майнить hypernull-коины: соберет как можно больше монет за фиксированное количество раундов. Бот перемещается по ячейкам двумерной карты. За один ход (или раунд) он может перейти на соседнюю ячейку по горизонтали, вертикали или диагонали, если она свободна. Левая нижняя ячейка карты задается координатами (0, 0). Карты замкнуты по ширине и высоте. Это означает, что если бот находится в крайней правой ячейке и перемещается на одну позицию вправо, он попадает в крайнюю левую ячейку (переходит через границу). Это правило применяется вдоль всех направлений и учитывается при вычислении расстояний между ячейками.

build.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
##Структура проекта
2+
3+
- `common` - модуль с общими классами, используемыми и на стороне сервера, и на стороне бота
4+
- `server` - модуль с кодом сервера. Дорабатывается исключительно администраторами.
5+
- `starter-bot` - модуль-заготовка для бота. Он же - простейший пример. Можно брать за основу для работы над ботом.
6+
7+
##Сборка и запуск проекта
8+
9+
Сборка проекта осуществляется с помощью [Maven](https://ru.wikipedia.org/wiki/Apache_Maven).
10+
Шаги сборки:
11+
- Клонирование репозитория
12+
- Установка IDE и Maven
13+
- Выполнение команды Maven (`Execute maven goal`): mvn clean package
14+
- Результатом сборки будут следующие артефакты:
15+
- `server` - ./server/target/server.jar
16+
- `starter-bot` - ./starter-bot/target/starter-bot.jar
17+
18+
Для запуска:
19+
- Сервера:
20+
- Скопировать артефакт сборки `server.jar` и файл конфигурации [hypernull.properties](server/hypernull.properties) (файл конфигурации опционален - при его отсутствии будут использоваться значения по умолчанию) в одну папку
21+
- Открыть командную строку (`cmd`) в папке из предыдущего пункта
22+
- Выполнить в командной строке: `java -jar server.jar`
23+
- Сервер запустится и станет доступным для ботов по указанным в конфигурации параметрам (порту, в частности)
24+
- Бота:
25+
- Скопировать артефакт сборки `starter-bot.jar` и файл конфигурации [bot.properties](starter-bot/bot.properties) в одну папку
26+
- Открыть командную строку (`cmd`) в папке из предыдущего пункта
27+
- Выполнить в командной строке: `java -jar starter-bot.jar`
28+
- Бот автоматически попробует подключиться к серверу по адресу и порту, указанным в конфигурационном файле
29+
30+
NOTE: И сервер, и бота можно запустить из IDE, задав нужные параметры в `.properties`-файлах и запустив соответствующие main-классы.

server/src/main/java/ru/croccode/hypernull/server/HyperNull.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ public HyperNull(Properties properties) throws IOException {
4444
properties.getProperty("server.port", "2021"));
4545

4646
matchLogsFolder = properties.getProperty("match.log.folder","./matchlogs/");
47+
System.out.println("Match logs folder was set to: " + matchLogsFolder);
4748
this.server = new Server(serverPort);
49+
System.out.println("Server started on port: " + serverPort);
50+
System.out.println("Server logs output: STDOUT");
4851
}
4952

5053
@Override
@@ -116,7 +119,7 @@ public void close() throws IOException {
116119
}
117120

118121
public static void main(String[] args) throws IOException {
119-
System.out.print("¤ ¤ ¤ HyperNull...");
122+
System.out.println("¤ ¤ ¤ HyperNull STARTING... ¤ ¤ ¤");
120123
String configPath = args.length > 0
121124
? args[0]
122125
: "hypernull.properties";
@@ -133,7 +136,7 @@ public static void main(String[] args) throws IOException {
133136
app.close();
134137
ThreadPools.shutdownAll();
135138
})));
136-
System.out.println(" READY ¤ ¤ ¤ ");
139+
System.out.println("¤ ¤ ¤ HyperNull READY ¤ ¤ ¤ ");
137140
app.run();
138141
}
139142
}

server/src/main/java/ru/croccode/hypernull/server/MatchFileLogger.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public MatchFileLogger(String matchId, String logsFolder) {
3939
public void matchStarted(String id, MatchMap map, MatchConfig config, Map<K, String> botNames) {
4040
write("match");
4141
write("match_id " + id);
42+
write("match_time " + System.currentTimeMillis());
4243
write("num_bots " + botNames.size());
4344
write("##MatchConfig");
4445
printAllFields(config);

0 commit comments

Comments
 (0)