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

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

Решение пришло быстро — да мы люди весьма занятые, но сообразить, что-нибудь легкое и симпатичное в свободное время будет здорово. Теперь, при наличии решимости, рук и мозгов, надо было осознать к чему всё это богатство применить. Здесь дело тоже пошло вполне легко. Один из нас, большой мастер программирования движков трехмерной графики, предложил обратить взоры в сторону его специализации, т.е. в 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 и в частности о том как ее можно превратить в плагин для браузера.

Поделиться публикацией
Комментарии 33
    +3
    А не могли бы вы собрать Flip-Flop под другие ОС, например MacOS X?
      +3
      прошу прощения — ответ ниже
        0
        если ваш вопрос еще актуален, то игра теперь бежит на маке, не хватает деплоймента, но и он на подходе
      +4
      Вообще говоря — это в планах и почти все для этого готово, осталось возродить поддержку openAL для звука и открывать окна с помощью кросс платформенного API типа QT.
        +16
        Пост о геймдевелопменте без картинок — это плохо :)
          +2
          Зато сам пост — отлично!
            +3
            Ну пост то отличный, не спорю. А вот движок так себе. Очень старый, всмысле небула сама старенькая уже. При запуске демки в вин7 половина ресурсов не грузится если запускать без админских прав. Да много нареканий очень если честно. Но в основном не к топикстартеру, а к небуле. Взяли бы за основу www.ogre3d.org/ или совсем простой irrlicht.sourceforge.net/
            Просто не могу понять, почему именно небула, да и к тому же есть nebuladevice.cubik.org/
            Если не сложно — поясните плиз.
              +3
              Да, конечно же объясню:
              nebuladevice.cubik.org посвящен в основном, небуле2 и давно не обновлялся, небула 2 слегка перегружена кодом, линкуется статически и заточена под directX, правда на ней было сделано несколько серьезных тайтлов типа drakensang. 3я небула похоже заглохла из-за закрытия Radonlabs.
              1я небула имеет очень динамичную и модульную структуру, легкое ядро и бежит на очень слабом железе. Мы ее сильно перелопатили прежде чем начать использовать и выложить в коммьюнити. Там не все возможности еще активированы по умолчанию (например поддержка GLSL). Кроме того встроили Лисп (еще не окончательный вариант, но уже работает). Irrlicht и Ogre3D не являются динамическими движками, в той мере в которой является Небула, на наш взгляд.
                +2
                Возможно вы и правы. Только я не совсем понимаю выражение «динамический движек». Просто сам в свое время перепробовал огромное кол-во движков, остановился к конце концов на достаточной экзотике Panda3D (по причине питона)
                  +3
                  На самом деле — не так просто объяснить про «динамический» движек, без более подробного поста, но я попробую.
                  Обычно скриптовой интерфейс к какой нибудь системе или движку является этакой надстройкой над FFI скрипта, соответственно добавление поддержки нового скриптового языка требует написания новой надстройки. В случае с небулой достаточно реализовать один класс с несколькими методами для конкретного языка и весь скриптовой интерфейс движка становится доступным. При этом «ведущим» звеном останется движек. Ох, наверно я путанно объясняю. С этой небулой вообще так — сначала в нее трудно «въехать», зато потом не остановиться. Я использовал ее ядро во многих проектах вообще с графикой не связанных, настолько удобно ее ядро.
                  Если Вы уже скачали демку с коммьюнити и запустите демонстрацию с длинным названием — «u-Nebula source & demos-10.9» и после того как появится террайн с домиками нажмете на F2 — то откроется броузер по всем объектам движка. Можно обращатся к их методам через консоль или выбирая их справа из списка, список относится к выбранному слева в дереве объекту. То же самое можно сделать если в игре в файле [папка установки]/script/flipflop/env.tcl установить developer_mode в 1. (Не сработает в вин7 если установлено в program files/).
                0
                Ogre уж либо брать как есть, и вносить лишь минимальные изменения по необходимости, либо не трогать вообще — он достаточно большой, чтобы угробить огромное количество времени на крупномасштабные переделки, и не факт, что без вреда здоровью.
              +1
              пардон — 1й пост — не учел
              0
              смните пожалуйста цвета текста на сайте, просто чуть глаза не поломал
              в wine не завелась((((

              я буду пляяяякать!!!
                +1
                на которм из 2х? я надеюсь скоро нэйтив в линуксе поебежит.
                  +1
                  по поводу wine может быть с openGl заведется, попробуйте добавить в коммандную строку после -noremote -gfx nglserver
                    0
                    3doors.com
                    с параметрами тож не стартует(
                    +1
                    Сайт для детской игрушки, в чем проблема?
                      +7
                      разве дети не люди? им обязательно подсовывать разноцветное
                      кислотное убожище?
                        +1
                        в детях еще не развилась склонность к серости, присущая многим программерам :)
                    +3
                    А меня интересует как программиста. В каком 3D редакторе делать модели проще, именно для игр? И почему вы выбрали именно LightWave.
                      0
                      Проще делать в том — который знает Ваш 3д художник :) в свое время — я написал плагин, который экспортировал сцены с анимацией (в том числе и костной) к LightWave т.к. работали с японцами а у них это популярный редактор. На самом деле на уровне мешей большинство редакторов вполне совместимы — конвертируемы. Вопрос возникает при желании экспорта в движек целой сцены с анимациями. Blender3D мне кажется перспективным и при этом бесплатный, для Maya и Max проще всего найти художника. Мы собираемся поддерживать Collada — собственно это сильно «отвязывает» от редактора.
                      0
                      hp pavilion dv5-1079er (c2d p8600/3Gb/NVidia 9600M GT) / Win7 64bit

                      не работает, при запуске зависает намертво с черным экраном, помогает только ребут
                        0
                        Я бы посоветовала на озвучку кого-нибудь менее унылого. Без обид. Игрушка, все-таки детская.
                          0
                          Это дело очень субъективное, а есть кто-то на примете, для озвучки?
                            0
                            Да, абсолютно субъективное. Но просто для категории серьезных людей в возрасте 1-3 года все-таки хотелось бы что-то бодрое, веселое и позитивное. Дело не в дикции, а просто в интонациях, с которыми произносятся названия слов. Я понимаю, что это сложно.
                            На примете, к сожалению, нет.
                          0
                          > Такой человек бреется по утрам

                          Привыкаем говорить за себя, а не за всю сеть :)
                            +2
                            На моем тестовом олдскул-писи не стартанула. Celeron 433 Mhz/Geforce 2 MX 400 64Mb/128 Ram/WinXP sp3
                              +2
                              что то делать помимо работы — это надо уметь. молодцы!
                                0
                                Здорово, мне понравилось. Сам занимаюсь База Данных. И все как нибудь хочу заняться 3D играми.
                                  0
                                  Как вариант.
                                  Alternativa сделала свой 3D движок бесплатным.
                                  Для не очень сложных игр очень интересный вариант.
                                  Особенно в свете того, что флешплеер в конце октября обзаведется поддержкой аппаратного 3D.
                                  Флеш работает в основных десктопных системах. Так что очень удобно.
                                  И библиотека всего 270 кб.
                                    0
                                    Flip-Flop для детей просто офигенный.
                                    Вот только с курсором мышки всё плохо, мелкие просто его не замечают.
                                    Сделайте его гигантским, чтоб мелкие могли адекватно сопоставлять движение мышки и некого объекта на экране.
                                      0
                                      у нас в релизе так и будет :)

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое