Описание: Игра про строительство |
Поиск в теме | Версия для печати |
krre |
Отправлено: 24 Сентября, 2016 - 16:34:24 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Если контора делает игру на собственном движке, то одного движка обычно мало, нужно ещё куча вспомогательного софта. Если используется сторонний движок, то к нему все необходимые инструменты уже прилагаются. Крупные конторы традиционно всё своё делают, это даёт больший простор для оптимизаций и добавления новых фич. Готовые движки берутся чаще всего конторами из двух-трёх человек или если программист вообще один, делает игру для мобильных устройств, например.
Когда я работал в геймдеве, у нас все программы свои были, но написали их ещё до кризиса, когда контора процветала, и в ней работало много человек. Когда я туда попал, программистов было всего два, и оба они были заняты игрой, на вспомогательные инструменты времени не оставалось. Это в итоге вылилось в большую проблему. Движок изначально создавался для десктопных игр, а мы делали на нём игру для айпадов, то есть под мобильные девайсы. В общем, получился страх и ужас, десктопно выглядящая игра на планшете.
В моём текущем случае взять готовый движок и все прилагающиеся к нему инструменты не получится, так как у меня всё уникальное. Воксели ещё ни один доступный движок не поддерживает. К тому же, это не так интересно. Я пару лет вяло пытался (никому не говоря) запилить одну стратегическую игру на готовом движке LibGDX, но вдохновения было мало. Получалась ещё одна шаблонная игра, каких много. Сейчас, когда понимаешь, что создаёшь что-то новое, дело повеселей идёт. |
|
|
krre |
Отправлено: 25 Сентября, 2016 - 16:34:16 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Результат двухдневных стараний - OctreeFarm, наконец, смог показать тестовое октодерево из игры. Камера пока не вращается, стоит в фиксированном месте, поэтому вид такой скучный.
Пришлось маленько подолбаться. В игре доступ к OpenGL осуществляется через мультимедийную прослойку SDL, а в OctreeFarm то же самое средствами фреймворка Qt, на котором делается графический интерфейс. Подходы разные, и не сразу удалось их согласовать. Уже думал вообще от OctreeFarm отказаться, а как-нибудь в самой игре октодеревья редактировать. В последний момент меня посетило озарение, я почитал документацию по Qt и нашёл причину, почему в неё не работало всё, как надо. |
|
|
krre |
Отправлено: 29 Сентября, 2016 - 15:33:15 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
С менюшками и стандартными файловыми операциями я разделался быстро. Сохранение файла, открытие, создание нового - такое я делал уже сто раз, поэтому не пришлось долго лазить по интернетам и разбираться с проблемами. А потом пошли нестандартные фичи, и процесс снова замедлился.
На то, чтобы сделать выделение мышкой вокселей, у меня ушло два дня кропотливой работы. Да и то сделано было не до конца. Выделение в целом работает, но есть ещё много нюансов. Пока выделенный воксель выделяется жёлтым цветом. Что-то другое, типа какой-нибудь рамки сделать - это очень сложно, не сейчас. Выделенный воксель можно будет (позже) удалить, разделить, либо перекрасить в другой цвет. Кроме жёлтого, конечно. Но можно и в жёлтый, только тогда от выделения будет не отличить.
Чем дальше я влезаю во всё это, тем сложнее и медленнее становится. К счастью, меня никто не торопит. |
|
|
krre |
Отправлено: 30 Сентября, 2016 - 13:13:52 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Сделал мультивыделение нод в октодереве. Это когда нажимаешь и держишь Shift, потом кликаешь мышкой, и к старым выделениям добавляются новые. Если кликнуть на уже выделенной ноде, то выделение там снимется. Клик на пустом месте в стороне от октодерева снимет вообще все выделения сразу. Всё по фен-шую, короче, как в других структурных редакторах.
Теперь можно что-то делать с выделенными нодами. Возможных операций у меня пока на уме четыре: разделить ноду на 8 новых нод, объединить 8 нод в одну, удалить ноду, добавить ноду. Все эти операции требуют полной перестройки октодерева, а это очень сложная и нервная задача. Пойду накуплю валерьянки, в общем. Психику надо беречь. |
|
|
krre |
Отправлено: 30 Сентября, 2016 - 20:05:50 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
А это распределение коммитов по дням недели и часам. Ночью, как видно, я всегда сплю. Не работается мне ночью. Зато начиная с 5 утра и до 9 вечера начинается самая жара. Наличие дыры в 17 часов по будням вызвано тем, что с 17 до 18 я еду с работы домой, а в маршрутке особо не попрограммируешь. Ещё я еду в маршрутке с 7 до 8 утра, но откуда-то в это время взялись несколько коммитов. Вероятно, это из тех дней, когда я на работу не ездил, а програмировал дома. Бывало такое, когда загрузка была слабая, разрешали дома посидеть.
Есть также и другие графики, все они в отрытом доступе, и можно поглядеть их на странице репозитория. |
|
|
krre |
Отправлено: 01 Октября, 2016 - 14:52:49 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Чтобы оттянуть неизбежное, связанное с редактированием октодерева, я взялся за что-нибудь полегче - изменение цвета нод в октодереве. Это "полегче" заняло у меня полдня, зато какой эффект! Патриотичность октодерева зашкаливает! Кстати, этот тот самый роковой случай, когда цвет выделения совпадает с цветом ноды, и ничего с этим не поделаешь.
Теперь в OctreeFarm на левой панели есть индикатор цвета, при нажатии на него вываливается диалог, который меняет цвет выбранной ноды (или нескольких при мультивыделении). Результат сохраняется в файл, и его можно потом загрузить назад. Undo в OctreeFarm не работает и вряд ли скоро будет, поэтому сохранение промежуточных результатов в файл - это единственный путь вернуться на шаг назад. А больше чем на шаг мы отступать не будем! |
|
|
krre |
Отправлено: 02 Октября, 2016 - 10:51:06 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Коммит - это фиксация изменений в репозитории относительно предыдущих изменений. Обычно отмечается построчно. Например, Пушкин пишет поэму об Онегине и коммитит её в репозитории. В первый коммит он добавляет две строчки:
Мой папа самых честных правил,
Когда не в шутку заболел.
Потом Пушкин подумал и решил изменить вторую строчку:
Когда не в шутку занемог.
Относительно прошлого коммита изменилась одна строка, и Пушкин это изменение фиксирует в новом коммите. Потом он захотел поменять первую строчку:
Мой дядя самых честных правил,
И делает третий коммит. Если бы Пушкин сразу поменял обе строчки, то это пошло бы в один коммит, а так пришлось добавлять два раза. В одном коммите могут быть изменения в скольких угодно строках и скольки угодно файлах. Обычно перед коммитом программа показывает список всех изменений, в каких файлах какие строки изменились. Можно поменять хоть сто файлов, а потом только сделать коммит, но обычно стараются по возможности фиксировать как можно меньше изменений за раз.
Так работает система контроля версий, которую используют программисты. Это позволяет им вести историю изменений программы с самого начала, то есть я могу вернуть программу в любой день из прошлого, просто отмотав её по истории до нужного коммита. А чтобы в них легче было ориентироваться, к каждому коммиту программист пишет комментарий, что он там поменял. То есть получается этакая машина времени. Писатели сейчас тоже пытаются такие системы как-то использовать, но поскольку они больше под программистов заточены, то у них не сильно хорошо это получается. |
|
|
krre |
Отправлено: 04 Октября, 2016 - 12:35:29 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Придумал простую и гениальную идею, как упростить редактирование октодерева. Я решил хранить дерево не в виде линейного списка, а в древовидном формате JSON. Линейный формат хорош для быстрой отрисовки в видеокарте, а древовидный - для редактирования. Таким образом, самое трудное - это написать конвертер из JSON в линейный формат, а сама задача редактирования JSON-дерева тривиальная. Два дня я писал этот конвертер и когда закончил, достаточно быстро реализовал первую фичу по редактированию - удаление выделенных нод.
Удаляется всё отлично, но удалить можно только восемь нод, после чего ноды закончатся и октодерево исчезнет. Чтоб оно не исчезло, надо сделать следующую фичу - подразбиение нод. Казалось бы, что тут делать, задача же редактирования JSON-дерева тривиальная. Так то оно так, да конвертер пока ещё кривой, подразбитые ноды не хавает. Придётся ещё помучиться. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (12): В начало « ... 4 5 6 7 8 9 10 [11] 12 » |
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0) |
« флуд » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|