Войти
ФлеймФорумПроЭкты

Царство небесного камня (sim online game) (4 стр)

Страницы: 13 4 5 615 Следующая »
#45
(Правка: 9:11) 9:06, 28 мая 2015

16 // место для рекламной вставки. Здесь будет размещатся реклама газированных напитков, сигарет и новых игр со Стима.
Нельзя же один код читать — голова разболится.)


#46
(Правка: 1 авг. 2016, 23:34) 22:32, 4 июня 2015

Прога subserv1 запускаеца глав-сервером, чтобы балансировать нагрузку.
Не исключено, что такие проги будут далеко от главного сервера,
чтобы быть поближе к игрокам.
Вся логика игры реализуеца здесь, а клиент-проги игроков, считаем
терминалами отправки управления и приёма визуализации игро-мира.

Допустим, что комната-локация, как набор мёртвых тайло-индексов.
А вся работа идёт из-за того, что при загрузке, некоторые тайлы
образовали спец-юниты (спаунеры монстров, корзины для разбития).

Масив юнитов крутим-обновляем - игро-события происходят.
А мертвые тайлы остаюца лиш для проверки блокирования движэния.

Пересылка Видимости покажет Юниты, которые видны в явном t_camp.
А мёртвые тайлы обязаны храница в кэш-ресурсах клиент-проги.
Подразумеваеца, что все варианты "случайных комнат" являюца
лиш фул-пресетом, а все пресеты были в архиве клиент-проги.

// subserv1::main.cpp

// ...
#47
(Правка: 1 авг. 2016, 23:35) 22:33, 4 июня 2015

// здесь был код // теперь его можно найти в архиве:
https://yadi.sk/d/7IFUfgs-tppEm

#48
(Правка: 1 авг. 2016, 23:39) 22:34, 4 июня 2015

// был код

#49
(Правка: 1 авг. 2016, 23:39) 22:36, 4 июня 2015

// был код

#50
(Правка: 1 авг. 2016, 23:48) 22:37, 4 июня 2015

// был код

#51
(Правка: 1 авг. 2016, 23:48) 22:40, 4 июня 2015

// был код

#52
(Правка: 1 авг. 2016, 23:50) 22:42, 4 июня 2015
// последняя 7-я часть subserv1::main.cpp

#53
(Правка: 7 июня 2015, 17:18) 1:31, 6 июня 2015

Картинка с тэстированием - два последовательных скриншота
//
Изображение

// +++++++

Далее, третья прога из тэст-комплекта.
Файлы-ресурсы ей не требуюца. Всё внутри - очень скромно.

Запускаем её два раза, когда mainserv и subserv ужэ работают.
В первом запуске, жмём Enter, а потом, вносим слово new.
Во втором пуске, сначала вносим единичку, и слово new.
Метка героя @ управляеца стрелками или клавишами WASD.
Малая буква показывает тэстового монстра.

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

#54
(Правка: 1 авг. 2016, 23:51) 1:31, 6 июня 2015

// здесь был код

#55
(Правка: 1 авг. 2016, 23:51) 1:32, 6 июня 2015

// здесь был код

#56
(Правка: 1 авг. 2016, 23:51) 1:32, 6 июня 2015

// здесь был код

#57
(Правка: 1 авг. 2016, 23:52) 1:33, 6 июня 2015

// здесь был код целый год

#58
(Правка: 2 авг. 2016, 0:00) 2:20, 10 июня 2015

// По коду чёрного прототипа..
// малая поправка внутри процедуры void admin_root1()
if( temp1.length() != 1 )
      return;


// ---
Мини-обзор чёрного прототипа..

Когда запускаем клиент-прогу game_k1_d.exe, то жмём Enter,
либо вносим единицу, чтобы рулить клавишами WASD.
После этого, можно внести слово new = демо-герой, без акаунта.
А если создали кабинет-акаунт (например, tester), то можно внести
его название и пароль от него.

Клиент-прога звонит на центральный сервер (mainserv_d)
и выдаёт весточку с логин-паролем
// send_login.cstr, send_pass.cstr) ) // логин пароль
Эту весточку проверяют в процедуре mainserv:: void user_cmp_login
Если проверка успешна, то на клиент шлют адрес ближнего саб-сервера.

// faza_on_recv_brief
Клиент-прога закрываеца, либо авто-продолжаеца, либо предлагает
выбрать героя акаунта-кабинета (внести слот героя, за которого играть).
Если не закрылась, то клиент-прога звонит на саб-сервер,
и передаёт первую весточку туда.

subserv1:: void an_player_recv_salut
Получаем 1-ую посылку от игрока, и пере-сылаем посылку на центральный,
чтобы замкнуть кольцо сверки, и получить от центрального одобрение.

mainserv:: void check_sub_salut
Если сверка удачна, то реанимируем задачу, которая была приостановлена
на саб-сервере, и этим, разрешаем саб-серверу вести регулярный обмен
пакетами с этим игроком (игроку - видимость, от игрока - сигналы управа).

Реанимированая задача на саб-сервере, попадает в процедуру
subserv1:: an_player_reg_user
И здесь, происходит создание Штаба игрока,
который будет являца представителем игрока в игровых событиях саб-сервера.

У штаба, есть единственый главный юнит и всякие технические свойства.
У главного юнита, есть линк на "знамя лагеря" - в рутине лагеря каждый
кадр собирают инфу о союзниках, о нейтралах, и о врагах - по собраным
юнитам пробегают всякий раз, когда готовят "пакет Видимости для клиента".
// ...
Каждый юнит должен копить свой "буфер событий перемен", и вкладывать его
в пакет видимости, если "юнит видят в этом лагере".
Но в коде чёрного прототипа, этот буфер перемен, обозначен словом "перспектива",
потому-что его составление требует сильной организации "устройства юнита".

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

Иногда, саб-сервер отправляет в mainserv событие "сохрани героя".
Тоесть, центральный сервер считаеца единственым оператором базы даных игры.
// ...
Конечно, уместно слать в центр события "получение чего-то извне", чтобы
разбирать поток дискретных новинок в файл героя
(прибавлять и сразу сохранять)
(можно накапливать операторы, и каждые 5-10 секунд исполнять-сохранять).


// ---
Когда будет готов новый прототип, пока не ясно.
Проявлю надежду, что проект не заглохнет :)

нова: (проект длилися ешё целый год)

#59
(Правка: 2 авг. 2016, 0:01) 23:45, 10 июня 2015

// здесь были осколки стены кода

Страницы: 13 4 5 615 Следующая »
ФлеймФорумПроЭкты