📜 ⬆️ ⬇️

Restless hearts or another way to write a 3D game in your free time without any damage to your health.

Sometimes, even a well-established programmer, there is a desire to write something that would be interesting not only for the employer. Such a person shaves in the morning and thinks, why not give happiness to all mankind. Overwhelmed with this kind of thoughts, we gathered one evening for a glass of good single malt whiskey.

The decision came quickly - yes, we are very busy people, but it would be great to figure out something light and nice in our free time. Now, with determination, hands and brains, it was necessary to realize what all this wealth should be applied to. Here, too, things went quite easily. One of us, a great master of programming for three-dimensional graphics engines, suggested turning our eyes to his specialization, i.e. in 3D. There were no objections.

Taking up the project began with a discussion of the architecture of the upcoming masterpiece. Our limitations were as follows: first of all, no one wants to work hard (and we didn’t want) ie need to find a well-developed three-dimensional open source engine; In addition, it is desirable to use the API of this engine from different languages, as well as support for both DirectX and OpenGL. After weighing many of the pros and cons - if there is interest, then the details of doubts and selection criteria can be discussed in another post - in the end the following construction crystallized:
The basis was taken from the Radonlabs Nebula engine, with open source, which we thoroughly reviewed, strengthened, made compact and which is now called uNebula (similar to uTorrent) posted here in an open repository . We got a light, small (run-time engine of about 5MB), cross-platform, easy to manage and with a rich API engine. We also wrote a plug-in converter that translates 3D scenes built in the LightWave editor into a TCL script using the API of our new engine. Those. just draw something in LightWave, click on the desired button and you will have a scene ready to run in uNebula .

Now about the API of our engine. It is just what is called, for every taste. First of all, for masochists there is an opportunity to write in C ++; for people less severe, there is an option to write on TCL - although the language is ancient, but flexible and still loved by many; Python - here, perhaps, it is not necessary to say anything - a miracle, not a language; Lua - for fashionable lovers of simplicity: well, and Lisp - cool can use heavy artillery. We have chosen the path of Python in combination with inserts on Tcl. Why Python is already clear - we love it and that's it, but the use of Tcl was due to our LightWave converter.

Under Windows, which is still our main OS, although at any time you can compile both under Linux and Mac, unicode NSIS was taken as the installer generator. Simple, free and pretty NSIS exactly answered our requests.

And now it's time to put the accumulated material into practice, in other words, draw something and launch it, so much so that this “something” has a meaning and benefit for others. As experienced people, first of all we decided to start with a pilot sub-project. Thus was born the idea of ​​a free gaming sketch Flip-Flop . As I have already said, it was supposed to be something small, easy to write and intended for a decent public ... The public elected the stratum of the population consisting of serious people aged from 1 to 3 years.

Flip-Flop at startup, opens to full screen and locks the keyboard so that the little man who has reached the computer could not mess things up by tapping on the keys. We see a colorful clearing on which, by pressing arbitrary buttons, characters randomly appear and disappear, the camera position changes, and when you hover the mouse over an object, a pleasant baritone pronounces its name. Strangely enough, a child can sit for such a simple thing for a very long time, such is their childish psychology, and at the same time remain enthusiastic and cheerful. This toy allowed us to roll in technology, accumulate additional experience and build a plan for the future.

We would like to draw attention to the uNebula engine and the technology on which it is based - I want to believe that simplicity and efficiency will be in demand. In the near future, we are going to write a series of articles about working with uNebula and, in particular, about how it can be turned into a browser plugin.

Source: https://habr.com/ru/post/105454/

All Articles