Апдейт. Пашем, сеем, пожинаем. Даже по выходным.
Важное достижение.
Удалось сформировать постоянную связь клиента с сервером и обратно и обмениваться данными, и главное их обрабатывать! До этого была связь, но сформировать нужное получалось не всегда и через одно место. Сейчас все стабильно. Раз в 20 секунд клиент и сервер обмениваются контрольными пакетами на предмет наличия жизни у обоих сторон. Если повезет, сегодня прикручу доступ к БД и реально заработает логин и регистрация. По настоящему. Формы и логика на клиенте уже готовы.
Началась сборка финального проекта из прототипов предидущих лет. Несомненно все будет довольно сырым, но рабочим. Видео демонстрирует звездную карту, которая нужна для межзвездной навигации. Оцените масштаб. Если железо будет тянуть, возможно расширю до 200 000 звезд. До оптимизации еле тянуло 20 000, фреймрейт был около 5 фпс. После - 45 000 бодро бегают. Это весь мой предидущий каталог.
Кстати. Если кто хочет попомогать с кодом, есть легкий вариант. Ставите себе с EpicGameStore анриал енжин, делаете пустой проект, там создаете новый БП и выбираете библиотеку функций. Теперь там можно клепать функции любого рода, которые имеют входные каналы и каналы выхода. Все визуальное, на графах. Не надо писать ни строчки кода.
Новости. Если в прошлом межсезонье я делал боевку кораблей, то сейчас возвращаюсь к экономической, стратегической и логистической части. До сих пор было понятно, что серверные взаимодействия необходимые для экономики в движке как-то можно сделать, но точно как - понимания небыло. Проблема в том, что движек заточен по сути на сессионную связь, когда у группы игроков комната игровая, и все там бегают, а один из компов выступает сервером. Полноценного или даже зачаточного взаимодействия с сервером, который мог бы держать всех игроков на связи и отдавать им информацию из базы данных - физически небыло. Можно было кое что накостылить, но получилась бы...фигня.
Ну что у нас... ноябрь и декабрь пришлось пожертвовать на работу нашей фирмы. Все-же надо денежку зарабатывать на жизнь. Сейчас я быстро напиливаю проект платформенной игрушки и буду выкладывать её на гуглплей, опять же в попытке приподнять денег. Посмотрим.
Через примерно месяц или два закончим текущий писательский проект и уже вплотную приступим к написанию заглавной книги серии по Эксодусу.
Поскольку недавно вышла игра Эксодус, кстати фантастика, шутер с сюжетом, будем наш проект переименовывать в Ласт Эксодус или что-то подобное.
Переехал на движок 5.3. Что это даёт. Размер. 32 битный размер координат давал нам грубо 2 000 000 000 единиц. Т.е. если одна единица - 1 сантиметр, то размер карты будет 20 000 метров. Т.е 20 километров. Если за единицу принять метр, то 2000 км. Что в принципе работает для локальной космической битки, но уже с точностью в 1 метр, что многовато. В 5.3 кроме всего прочего, поддержки нужной базы данных, битность координат совсем перешла в 64 бита без плясок с бубном. Это 9 000 000 000 000 000 000 координатных единиц. Мы можем точно позиционировать пулю или осколок и иметь карту размером в 90 000 000 000 000 километров. Да 90 триллионов километров. Если поделить на 150 000 000 километров или 1 АЕ, то получится 600 000 астрономических единиц. Мы можем смоделировать пулю, летящую через тройную звездную систему. Причём не напрягаясь. Без бубна. Для моделирования Солнечной системы достаточно грубо 300 АЕ. Если с облаками Оорта и прочими транснептуновыми приколами 1500.
Раньше, очень натягивая сову на глобус и не имея возможности смоделировать звездную систему больше нашей, мы имели минимальный шаг в 10 000 километров. Т.е корабли сблизившись менее чем на эту дистанцию считались находящимися в одной точке. Теперь мы можем посчитать до сантиметра.
Почти нет новостей, поскольку поболел, а когда болею - я жутко туплю и за код не сажусь. К тому-же я сейчас полез в организацию работы сервера с базой данных и организацией связи серверов и клиента. Основа для этого есть, игра уже работает в режиме сервер и клиенты, но сейчас надо дотянуть до нескольких распределеных серверов. Задачка сложная, но решаемая. Кое что уже заработало. Как бонус, вот вам аватарка одного из офицеров экипажа корабля.
Что добавилось? Переключение боеприпасов через меню, сами меню оружия и инженерии с кнопками и всякими данными, режимы стрельбы орудий, учет боеприпасов различных видов, начал тепловую механику модулей и всего корабля. После этого буду прикручивать ракетное вооружение, потом дроны, потом средства РЭБ. После - доработка меню обнаруженных целей, внос поправок и неопределенностей, зависящее от сенсоров и прочих обстоятельств. Полировка радаров и прочих сенсоров. Потом стартовое меню с интерфейсом по настройке и модификациям корабля. Потом сложное - настройка модели повреждений. И после этого можно уже тестить с друзьями!
Вчера сделал важный блок. Точнее ряд механик. Учёт энергоресурсов корабля, отключение модулей при дефиците по приоритету важности, подключение и зарядка/разрядка аккумов, тайминги перехода модулей из разных состояний активности с учётом возможных повреждений и опыта офицеров и команды.
Что отдельно приятно, это не работа для одного кораблика, а это система, обрабатывающая любое количество любых модулей в любой конфигурации для любых кораблей.
Отчёт по продвижению. Кроме багов и прочего и прочего, нормально заработали сектора сканнеров, сложные функции двигателя. Мы умеем теперь стрелять с упреждением учитывая и свою и скорость цели. Снаряды теперь зависят от качества и соответственно плавает их скорость на выходе их ствола. Ствол тоже имеет разброс. Это можно видеть по весьма неровной дорожке из выстрелов. Также в качестве отдыха и лучшего масштабирования прилепил временно в уровень модельку из СтарТрэка. Наш кораблик пристыкован к нему вплотную.
После лета и работы, настала пора отдохнуть, а после этого настало время снова кодить. И далеко не первый день я это уже делаю. И небезуспешно. Например сегодня я закончил и отладил функцию автоматической остановки корабля. Стрельбу по цели, причём как с движущейся платформы, так и по движущейся цели, внёс разброс по скоростям боеприпаса в зависимости от их качества. На подходе функция совмещения скоростей с целью и подлета к цели в упор для стыковки или абордажа. Очень долго мучался с остановкой. Надо было высчитать продолжительность работы и режим каждого двигателя в отдельности для полной остановки. А с учётом того, что корабль может находится и в перевернутом положении, носом совсем в другую сторону и у нас их 6, задача не так проста как может показаться. Особенно с учётом реального программирования. Сделал меню, которое появляется, если ткнуть мышкой в другой корабль и там можно кое что выбирать, хотя на мой взгляд, через интерфейс будет удобнее и правильнее. Но тот случай, когда одно другому не мешает.