Как стать автором
Обновить

Беспокойные сердца или еще один способ написать 3D игру в свободное время без ущерба здоровью

Время на прочтение 3 мин
Количество просмотров 4.4K
Иногда, даже у вполне состоявшегося программиста, появляется желание написать что-то, что было бы интересно не только работодателю. Такой человек бреется по утрам и думает, а почему бы не подарить счастье всему человечеству. Обуреваемые примерно такого рода мыслями мы собрались как-то вечером за стаканчиком хорошего односолодового виски.

Решение пришло быстро — да мы люди весьма занятые, но сообразить, что-нибудь легкое и симпатичное в свободное время будет здорово. Теперь, при наличии решимости, рук и мозгов, надо было осознать к чему всё это богатство применить. Здесь дело тоже пошло вполне легко. Один из нас, большой мастер программирования движков трехмерной графики, предложил обратить взоры в сторону его специализации, т.е. в 3D. Возражений не было.

Взявшись за проект начали с обсуждения архитектуры грядущего шедевра. Ограничения у нас были следующие: прежде всего никто не хочет тяжело трудиться (и мы не хотели) т.е. надо найти хорошо развитый трехмерный движок с открытыми исходниками; кроме того желательна возможность использовать API этого движка из разных языков, а также поддержка как DirectX так и OpenGL. Взвесив многие за и против — если будет интерес, то подробности сомнений и критерии отбора можно будет обсудить в другом посте — в конце концов выкристаллизовалась следующая конструкция:

За основу был взят движок Nebula от Radonlabs, с открытыми исходниками, который мы основательно перебрали, укрепили, сделали компактным и который теперь под названием uNebula (по аналогии с uTorrent) выложен здесь, в открытом репозитории. Мы получили легкий, маленький (ран-тайм движка около 5МБ), кросс-платформенный, простой в управлении и с богатым API движок. Так же нами был написан плагин-конвертер, переводящий 3D сцены построенные в редакторе LightWave, в TCL скрипт использующий API нашего нового движка. Т.е. достаточно нарисовать что-то в LightWave, нажать на нужную кнопку и получится сцена готовая бежать в uNebula.

Теперь об API нашего движка. Он просто, что называется, на любой вкус. Прежде всего для мазохистов есть возможность писать на C++; для людей менее суровых есть вариант писать на TCL — язык хоть и древний, но гибкий и всё еще многими любимый; Python — тут, пожалуй, и говорить ничего не надо – чудо, а не язык; Lua — для модных любителей простоты: ну и Lisp — крутые могут пользоваться тяжелой артиллерией. Мы выбрали для себя путь Python в сочетании со вставками на Tcl. Почему Python, уже понятно – любим его и всё тут, а вот использование Tcl было обусловлено нашим конвертером из LightWave.

Под Windows, который у нас пока является основным OS, хотя в любой момент можно скомпилировать и под Linux, и под Mac, в качестве генератора установщика был взят unicode NSIS. Простой, свободный и симпатичный NSIS в точности отвечал нашим запросам.

И вот пришло время применить накопившийся материал на практике, иначе говоря, что-то нарисовать и запустить, да так чтоб у этого “чего-то” был смысл и польза для других. Как люди опытные, прежде всего мы решили начать с пилотного под-проекта. Так родилась мысль бесплатной игровой зарисовки Flip-Flop. Как я уже сказал, это должно было быть что-то маленькое, легкое для написания и предназначенное достойной публике… Публикой был избран пласт населения состоящий из серьезных людей в возрасте от 1-го года до 3-х лет.

Flip-Flop при запуске, открывается на весь экран и блокирует клавиатуру так, чтобы дорвавшийся до компьютера маленький человек не смог натворить бед стуча по клавишам. Мы видим красочную полянку на которой по нажатию произвольных кнопок, случайным образом появляются и исчезают персонажи, меняется положение камеры, а при наведении мышки на объект приятный баритон произносит его название. Как ни странно, за столь нехитрой штукой ребенок может просидеть весьма долго, такая у них детская психология, и при этом оставаться увлеченным и веселым. Нам же эта игрушка позволила обкатать технологию, накопить дополнительный опыт и выстроить план на перспективу.

Мы бы хотели привлечь внимание к движку uNebula и к технологии на которой он базируется — хочется верить, что простота и эффективность будут востребованы. В ближайшем будущем мы собираемся написать цикл статей о работе с uNebula и в частности о том как ее можно превратить в плагин для браузера.

Теги:
Хабы:
+69
Комментарии 33
Комментарии Комментарии 33

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн