XaeroX писал: Если честно - до сих пор удивляюсь, сколько же всего мне удалось наворотить, пока жил в относительно "тепличных" условиях Новосибирска, с вагоном свободного времени. Но ещё больше так и осталось на уровне задумок и планов.
Стареем
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Пришлось пока что остановить работу над редактором и заняться бакэндом.
А точнее - платформозависимым слоем абстракции. Поскольку движок изначально базировался на коде от Кармака, вы знаете, как там с этим обстоят дела - мультиплатформенность гарантируется только для самого движка, а вот утилиты и особенно редактор - ну как повезёт.
К тому же утилиты использовали собственную файловую систему, упрощённую. Пока я долгое время тешил себя надеждой, что можно будет обойтись сторонним редактором, это всё худо-бедно работало.
Но с учётом новой концепции, это будет единая среда, в которой каждый компонент может запускать другой. Движок из редактора, редактор из движка, утилиты. Неплохо бы предусмотреть гибкий механизм, который позволяет это сделать. Какие-то зачатки были еще в старом ксаше, там как вы помните, движок умел перезапускать сам себя, через хитрозакрученную систему каллбэков, но это не слишком надёжно.
Сейчас я выработал новый принцип для этого дела. Есть некая структурка, которая содержит в себе:
1. путь до загружаемой библиотеки
2. название инстанции (движок, редактор, дедикатед-сервер, компилятор)
3. строку командных параметров
Эта структурка заполняется внутри .exe файла. И передаётся внутрь дллки, которая будет вызвана. Дальше дллка может по собственному усмотрению записать туда новый путь к дллке, новую инстанцию и изменить командную строку. И при выходе из экспортной функции, соответственно, вернуть 0 - завершение работы. Или 1 - рестарт.
А сам вызов этой экспортной функции из дллки оформлен в цикле.
Точнее говоря, не просто функции, а загрузки библиотеки, вызова функции и выгрузки библиотеки. Т.е. мы можем подключать любые части движка по необходимости, минуя классический вызов экзешников с командной строкой, поскольку возникают сложности, с выводом в консоль, например при таком подходе. Там какие-то трубы надо городить.
Опять же смену игровой директории через этот механизм можно делать.
Вторая задача - абстракция платформозависимого кода, вынос его в отдельный класс, не только для движка, а для всей среды. Это будет нечто вроде SDL (для понимания), но для более широкого спектра задач и заточенное именно под XashNT.
Например в любом приложении будет доступна консоль с виндовым окошком, а не только системная.
Отдельно скажу по DLL Hell. В новом ксаше я принял за правило, что ни одно из приложений входящих в среду не может вызвать более одной дллки. Иначе получится натуральный DLL Hell. Т.е. всегда будет работать схема: exe->dll. А дллка будет содержать в себе абсолютно всё необходимое для работы. Конечно она может вызывать еще какие-то дллки, но только системные из папки windows. То есть в такой дллке будет целиком оформлена подсистема движка, но на уровне понятном пользователю. Библиотека - редактор, библиотека - движок, библиотека - компилятор уровней. То что, с точки зрения пользователя делает какое-то завершенное действие. А вот подход, когда у нас в этой библиотеке tier0, tier1, FileSystem, ParticleMan и прочее - такого не будет. Потому что неизбежно получится каша из разных версией с несовпадающими интерфейсами и работать ничего не будет.
Мое допущение заключается в том, что абсолютно у всех библиотек будет единая точка входа, с интерфейсом, описанным в начале этого поста.
И этот интерфейс никогда меняться не будет.
Из любопытного: теперь настройки для конкретного экзешника будут задаваться в командной строке, в которую экзешник будет автоматически добавлять параметры - вот в ту самую структурку. Таким образом пользователи смогут тоже вручную это контролировать в некоторых ситуациях. Довольно гибкий подход получится, я думаю.
XaeroX
У тебя уже есть полностью рабочий двиг для него рабочий редактор, что еще для жизни надо?!
Дядя Миша
Если не секрет, то сколько часов в день ты тратишь на свой двиг и все необходимое для него?
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
>> Отдельно скажу по DLL Hell. В новом ксаше я принял за правило, что ни одно из приложений входящих в среду не может вызвать более одной дллки.
Ну можно процесс иницилизации вынести в GameInfo.txt А сами дллки хранить в папках игры или мода, с подписью версии движка. Ну и создать папку base с базовыми библиотеками, на случай если в папке мода вообще ничего нет. В общем всё уже валва придумала за нас.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
(_-=ZhekA=-_) писал: Если не секрет, то сколько часов в день ты тратишь на свой двиг и все необходимое для него?
По-разному. Иногда по 6-8 часов в день, иногда вообще нет на это времени.
Еще бывают творческие отпуска, когда я целый месяц к коду не притрагиваюсь.
Цитата:
FiEctro писал: Ну и создать папку base с базовыми библиотеками
Папка base есть, для 32-х битной версии называется bin_x86, ну ты видел.
Но дллок в игровой папке скорее всего не будет, там теперь будут файлы виртуальной машины. А дллки - только в базовой.
Дядя Миша писал: По-разному. Иногда по 6-8 часов в день, иногда вообще нет на это времени.
А как же работа, если ты тратишь почти целый день на это? Если я правильно понимаю, то двиг для тебя сейчас, как хобби, который пока доход не приносит, так?
Цитата:
Дядя Миша писал: Еще бывают творческие отпуска, когда я целый месяц к коду не притрагиваюсь.
Такое кстати у меня тоже бывает...
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: По-разному. Иногда по 6-8 часов в день, иногда вообще нет на это времени.
Еще бывают творческие отпуска, когда я целый месяц к коду не притрагиваюсь.
Это похвально, я бы за такой период уже бы давно выгорел. Интересно как ты боришься с выгоранием?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
(_-=ZhekA=-_) писал: А как же работа, если ты тратишь почти целый день на это?
Работа разная бывает. Сравнивая Россию с Канадой, мне кажется, что в России можно получать относительно неплохие деньги, не особо напрягаясь. У меня даже в Яндексе оставалась куча времени на волатилу.
Тем временем, в Северной Америке в ходу вот такие грустные шутки:
Перевод:
"Отлучился с работы в Европе: я уехал путешествовать на всё лето, напишите емейл в сентябре.
Отлучился с работы в Америке: я покинул офис на два часа ради операции на почке, но вы всегда можете связаться со мной по мобильному телефону."
Так и живём! А вы говорите - "где апдейты, где сдк волатилы, где джек"...
Да, если бы я только за компьютером сидел и код писал, уже давно бы выгорел. Но у меня тут ручная работа, кофемашины жы.
Так что нормально получается в целом.
Дядя Миша писал: Интересно, как теперь подсчитать процент готовности движка?
Собрать все-все хотелки\фичи в один пост и сделать подсчет, что в итоге готово, а что еще нет или чего вообще не будет, как-то так )
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Кстати, мне всегда казалось, что UNDONE - это когда ты что-то сделал, потом понял, что получилась ерунда, удалил весь написанный код и написал комментарий - "UNDONE: xxx".