Неспокійні серця або ще один спосіб написати 3D гру у вільний час без шкоди здоров'ю

Неспокійні серця або ще один спосіб написати 3D гру у вільний час без шкоди здоров'ю

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


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

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

За основу був узятий движок Nebceвід Radonlabs, з відкритими вихідниками, який ми ґрунтовно перебрали, зміцнили, зробили компактним і який тепер під назвою uNebce( за аналогією з uTorrent) викладений тут, у відкритому репозиторії. Ми отримали легкий, маленький (ран-тайм движка близько 5МБ), крос-платформенний, простий в управлінні і з багатим API движок. Так само нами був написаний плагін-конвертер, що перекладає 3D сцени побудовані в редакторі LceWave, в TCL скрипт використовує API нашого нового движку. Тобто. достатньо намалювати щось в LiveWave, натиснути на потрібну кнопку і вийде сцена готова бігти в uNeba.ru.

Тепер про API нашого движка. Він просто, що називається, на будь-який смак. Насамперед для мазохістів є можливість писати на C++; для людей менш суворих є варіант писати на TCL - мова хоч і стародавня, але гнучка і все ще багатьма кохана; Python - тут, мабуть, і говорити нічого не треба - диво, а не мова; Lua - для модних любителів простоти: ну і Lisp - круті можуть користуватися важкою артилерією. Ми вибрали для себе шлях Python в поєднанні зі вставками на Tcl. Чому Python, вже зрозуміло - любимо його і все тут, а ось використання Tcl було обумовлено нашим конвертером з LáWave.

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

І ось настав час застосувати накопичений матеріал на практиці, інакше кажучи, щось намалювати і запустити, та так щоб у цього «чогось» був сенс і користь для інших. Як люди досвідчені, насамперед ми вирішили почати з пілотного під-проекту. Так народилася думка безкоштовної ігрової замальовки Flip-Flop. Як я вже сказав, це повинно було бути щось маленьке, легке для написання і призначене гідній публіці... Публікою був обраний пласт населення що складається з серйозних людей у віці від 1-го року до 3-х років.

Flip-Flop при запуску, відкривається на весь екран і блокує клавіатуру так, щоб маленька людина, яка дорвалася до комп'ютера, не змогла накоїти бід стукача по клавішах. Ми бачимо барвисту полянку на якій за натисканням довільних кнопок, випадковим чином з'являються і зникають персонажі, змінюється положення камери, а при наведенні мишки на об'єкт приємний баритон вимовляє його назву. Як не дивно, за настільки нехитрою штукою дитина може просидіти досить довго, така у них дитяча психологія, і при цьому залишатися захопленим і веселим. Нам же ця іграшка дозволила обкатати технологію, накопичити додатковий досвід і вибудувати план на перспективу.

Ми б хотіли привернути увагу до движку uNebceі до технології на якій він базується - хочеться вірити, що простота і ефективність будуть затребувані. У найближчому майбутньому ми збираємося написати цикл статей про роботу з uNebceі зокрема про те, як її можна перетворити на плагін для браузера.

Image