Хостинг игры - основные принципы

"Вы просили". Расскажу, как это выглядит изнутри. Как работает, какие возникают трудности и почему закрылась Игра 1.


Запуск игры

Для запуска игры хорошо бы обзавестись движком :) Если вы этого еще не сделали, то подпишитесь на список рассылки atlantisdev После этого вам будет доступен файл-архив конференции, из которого всегда можно скачать свежие сырцы ядра Атлантиса.


Шаг первый - поиск подходящего места

Откройте консоль и перейдите в каталог, содержащий нужное вам ядро Атлантиса. Скажите ему

 dir
 

и убедитесь, что это именно тот каталог, который вам нужен.

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

В первом случае перейдите в каталог, содержащий нужное вам ядро (standard либо conquest).

Во втором случае разархивируйте (скопируйте, если по какой-то глупой случайности оно не архивировано) файл ядра во временный каталог.

Во всех дальнейших манипуляциях я считаю, что вы знакомы с базовыми командами DOS или их аналогами в своей OS и в состоянии адекватно перевести мои рекомендации на свою систему

Остановитесь на минуточку и прикиньте - какой диск у Вас наименее загружен разнообразным софтом и прочей рухлядью? А места нам понадобится МНОГО. Для информации - свежезапущенная игра на карте 128x128 (только монстры и гвардия, ни одного игрока) занимает на диске около ДВУХ МЕГАБАЙТ. Поскольку хорошей идеей является сохранение как минимум шести последних ходов, места понадобится соответственное количество...

Ладно, для меня таким диском является диск 'E:'
Перенесем на него наше ядро:

 md e:\engine
 cd e:\engine
 copy *.exe e:atlantis.exe
 e:

Проверим, что у нас получилось, подав команду dir:

E:\engine
>dir

 Volume in drive E is GAMES DRIVE    Serial number is 04F5:1283
 Directory of  E:\engine\*

15.02.01   6:25         <DIR>    .
15.02.01   6:25         <DIR>    ..
15.02.01   6:21         711,168  atlantis.exe
        711,168 bytes in 1 file and 2 dirs    712,704 bytes allocated
    308,871,168 bytes free

E:\engine
>

Шаг второй - подготовка игры

Создадим каталог для новой игры:

 md newgame
 cd newgame
 

Проверяем, туда ли нас занесло, заодно определяем местонахождение ядра:

E:\engine
>md newgame

E:\engine
>cd newgame

E:\engine\newgame
>dir ..\atlantis.exe

 Volume in drive E is GAMES DRIVE    Serial number is 04F5:1283
 Directory of  E:\engine\atlantis.exe

15.02.01   6:21         711,168  atlantis.exe
        711,168 bytes in 1 file and 0 dirs    712,704 bytes allocated
    308,869,120 bytes free

E:\engine\newgame
>

Теперь можно и создать карту для новой игры. Это совсем просто:

 ..\atlantis.exe new
 

У вас попросят немного дополнительной информации - размеры карты мира по ширине и высоте. Размеры карты должны быть кратны восьми, и не стоит пытаться создать карту меньше чем 24x24 ;) Не все баги еще исправлены.

E:\engine\newgame
>..\atlantis.exe new
Atlantis Engine Version: 4.0.4 (beta)
Standard Atlantis, Version: 4.0.4 (beta)

How wide should the map be?
32
How tall should the map be?
32
Making a level...

Making a level...

Making land

Setting up the anchors
................................
Making a level...

Setting up the anchors
........
Densities:
ocean 280
plain 115
forest 32
mountain 10
swamp 43
jungle 14
desert 18
tundra 0
cavern 35
underforest 45
tunnels 48
nexus 1


E:\engine\newgame
>

Ну вот - карта создана и даже выдано немного статистики, чтобы нескучно было играть... :)
Теперь осталось совсем немного - создать первый ход.

 md 0
 copy *.out 0\*.in
 cd 0
 

Все! Наш маленький домашний Атлантис готов к работе.


Шаг N-ный - игра


Добавление фракций в игру.

Так, настало время ввести в игру нас, любимых и лелеемых. Делается это простым добавлением пары строк в файл players.in. Способов это сделать несколько, рассмотрим два из них.

Способ первый, ручной.

Перейдем в каталог с последним ходом (сейчас это ход 0) и скажем ему

 type players.in
 copy /b players.in + con: players.out
    

На экране мы увидим содержимое текущего players.in и нечто вроде

E:\engine\newgame\0\players.in => E:\engine\newgame\0\players.out
con =>> E:\engine\newgame\0\players.out
    

и курсор, мигающий в пустой строке. Впишем сюда новую фракцию.

Faction: new
Name: My own great faction
Email: my@e.mail
Password: пять_звездочек
    

Обратите внимание - НИКАКИХ НОМЕРОВ ФРАКЦИЙ ! При генерации следующего хода Атлантис сам подставит нужные номера.

Завершаем ввод, нажав клавиши Ctrl+Z. Проверим, что у нас получилось, введя type players.out

E:\engine\newgame\0
>type players.out
AtlantisPlayerStatus
Version: 262148
TurnNumber: 0
GameStatus: New

Faction: 1
Name: The Guardsmen (1)
Email: NoAddress
Password: none
SendTimes: 1
Faction: 2
Name: Creatures (2)
Email: NoAddress
Password: none
SendTimes: 1
Faction: new
Name: My own great faction
Email: my@e.mail
Password: пять_звездочек

E:\engine\newgame\0
>
       

Все в порядке, можно заменять players.in на новый. Если же что-то не удалось, просто сотрите players.out и повторите этот шаг сначала.

 del players.in
 ren players.out players.in
    

Второй способ заключается в некоторой автоматизации способа первого.

Для этого в каталог с ядром положим пакетный файлик следующего содержания:

copy players.in players.out
Echo Faction: new >> players.out
Echo Name: %3 %4 %5 %6 %7 %8 %9 >> players.out
Echo Email: %1 >> players.out
Echo Password: %2 >> players.out
type players.out
    

дав ему имя addfaction.bat

Способ создания файла можете выбрать по вкусу, но для особых ценителей могу порекомендовать
copy con: ..\..\addfaction.bat

Использовать полученный пакетный файл надо так:

Заходим в каталог с текущим ходом и командуем

 ..\..\addfaction faction@email factionpassword Faction cool and beauty name
    

После чего на экран выведется текст созданного players.out
Если вас устраивает результат, можете повторить завершающие шаги из предыдущего способа - заменить players.in на свежесозданный.


Запуск игры.

Запускается игра просто. Очень просто.

 ..\..\atlantis.exe run
E:\engine\newgame\0
>..\..\atlantis.exe run
Atlantis Engine Version: 4.0.4 (beta)
Standard Atlantis, Version: 4.0.4 (beta)

Saved Game Engine Version: 4.0.4 (beta)
Saved Rule-Set Version: 4.0.4 (beta)
Reading the regions...
Setting up the neighbors...
Setting Up Turn...
Reading the Gamemaster File...
Reading the Orders File...
Running the Turn...
Running FIND Orders...
Running ENTER/LEAVE Orders...
Running PROMOTE Orders...
Running Combat...
Running STEAL/ASSASSINATE Orders...
Running GIVE/PAY/TRANSFER Orders...
Running DESTROY Orders...
Running PILLAGE Orders...
Running TAX Orders...
Running GUARD 1 Orders...
Running Magic Orders...
Running SELL Orders...
Running BUY Orders...
Running FORGET Orders...
Running QUIT Orders...
Removing Empty Units...
Running Sail Orders...
Running Move Orders...
Running Teach Orders...
Running Month-long Orders...
Assessing Maintenance costs...
Post-Turn Processing...
Writing the Report File...
....Writing Playerinfo File...
Removing Dead Factions...
done

E:\engine\newgame\0
>

Все! Атлантис сформировал файлы отчетов report.N и файлы следующего хода game.out и players.out

Теперь что с ними делать. Рапорты для первой и второй фракции можно прибить - это пустышки нулевого размера. Файлы *.in оставить, пусть лежат.

Свои рапорты забрать :) Чужие рапорты отослать по адресам.

Теперь займемся сухим остатком - собственно результатами игры :) т.е. файлами следующего хода.

Каждый ход Атлантис будет создавать файлы *.out, которые надо перенести в каталог следующего хода. Делаем это так:

 md ..\1
 copy *.out ..\1\*.in
 cd ..\1

В этот же каталог будем складывать файлы orders.N с приказами фракциям.

Когда подойдет время следующего хода, уже из каталога newgame\1\ вы позовете ..\..\atlantis.exe run, и уже в ..\2\ будете копировать *.out

Через какое-то время вы поймете, что ручками рулить долго, нудно и напряжно... :) Приходите! У меня есть, что вам рассказать.