DIY game. Creation of a 3D game engine based on GLScene

Subscribe
Join the koon.ru community!
In contact with:

This is the fifth article in a series of resources for beginner game developers: Game engine - write it yourself or take it ready?

One of the most common mistakes novice developers make is the desire to write their own game engine at all costs and make a game on it. It is not uncommon when both of these cases are tried to be carried out in parallel, in the end, of course, successfully failing both.

Why You Shouldn't Write Your Own Game Engine

First of all, you need to answer yourself one simple question - what exactly do you want to do, game or engine? If the engine, then forget about the game and deal only with it. If a game, take a ready-made engine or constructor and make a game without being distracted by the development of its software part.

Creating a full-fledged game engine requires special knowledge, understanding how games work, a huge amount of free time and the desire to write source code. And believe me - this is by no means a fun activity, as it may seem. Even in free ready-made solutions available for use, thousands of man-hours of programming have been invested, not to mention commercial engines, in which, in addition to time, serious finances have also been invested. Reinventing the wheel when every other person drives a car around is a thankless and completely unnecessary task.

Apart from free game development systems, many commercial game engines, fully ready for immediate use in game projects, offer several very attractive licensing schemes: completely free ( Unity 3D in the former Indie edition), a mixed Royalties scheme ( Unreal Development Kit)- $99 license fee and 25% payouts after the first $5,000 earned, or the affordable cost of a full-fledged commercial license (Unity Pro for $1,500).

In addition, no one can prohibit the use of a free edition of any engine until a certain stage of game readiness, so that later, with a tangible and, most importantly, visual result of their work, they can start looking for third-party funding to transfer the project to a commercial license.

For 95% of game projects of any genre and orientation, it is possible to find a ready-made solution that meets their needs. The times when game engines were a curiosity for the domestic game development market and cost big money, gone - and with them ended the arguments in favor of writing your own game engine.

Moreover, the desire to write everything on your own, coupled with the illusion that such a solution will be a better product than existing analogues, can play a very cruel joke on novice developers when very limited resources are invested in a completely unnecessary task (personal experience) , eventually leading to the premature death of the project.

Summing up: writing your own game engine can be done by those who clearly understand what exactly and why they need it, see the adequate advantages of such an approach and are able to put their plan into practice in a reasonable time frame. Everyone else should look for a ready-made solution, since there have been enough of them lately - take at least the same Unity 3D and UDK.

Do you want to create your own 3D open world game with a compelling storyline? per century digital technologies everything is possible! Special game engines will allow you to realize any fantasy, even without programming knowledge.

Thanks to modern technologies, today almost everyone can build their own 3D game. All you need to work is a computer, a special program and a margin of perseverance. Try yourself as a creator of virtual worlds. Hone your skills in creating 3D games, and perhaps in a couple of years it will be your company that will delight us with wonderful digital entertainment.

Awaken your craving for art, and we will help you choose handy tool for creativity.

On what engine to build 3D games?

Due to the growing popularity of computer games, there are more and more programs for creating them. In such a variety of offers, it is easy to get confused and choose not the most suitable tool. To ensure your work is on the right track from the start, we'll help you choose the perfect engine for creating 3D games.

For our guests we have collected best programs In one place. Here you can study in detail the properties of the engines, see screenshots and video tutorials. Read reviews, compare ratings and download suitable 3D engines via torrent or file sharing services (MEGA or Yandex.Disk).

Earlier we touched on the topic of free game engines - . True, the title of the article was given a simpler one in order to attract more people who want to make their own 2D / 3D game.

In this review, I decided to consider more serious game engines CryENGINE 3, Unreal Engine. And also look at the new version of Unity3D.

CryENGINE 3 Free SDK

CryENGINE 3 is a free game engine created by Crytek, which released the first version of the engine in 2002. The third version was released in 2009. The worldwide fame of this engine is justified by the amazing graphic performance of the products produced, some of which look incredibly photorealistic.


Possibilities:

  • I consider ready-made games to be the best demonstration of the possibilities, and here CryENGINE 3 has something to brag about. For all the time this engine has been used by the developers of games such as Far Cry, Crysis and AION. Of course, the list of created games is much longer, but I have listed the most famous games.
  • CryEngine 3 is a cross-platform engine and supports PC, PlayStation ® 3 and Xbox 360 ™.
  • You can import textures from 3ds max, maya and also from previous versions of the engine.
  • I will quote the words of the founder of the company, Tsevat Yerli: “The engine was ready for the next generation 3 years ago. We have had an advanced particle system for a long time, GPU rendering, Deferred shading, tessellation, DX11 support and so on. real examples created games, speak volumes.

Game examples: the official website presents the most popular games on CryENGINE http://mycryengine.com/index.php?conid=68

Where to begin?

The SDK is downloaded as an archive, without an installer. The archive contains several folders, each of which has its own purpose. For example, to launch the editor, use the bin32 or bin64 folders (depending on the bitness of your system). Editor file editor.exe, but to see the result - launcher.ex e.

Actually, this is a small explanation, to what you download, everything else will be told to you by numerous video tutorials. Fortunately, this engine turned out to be very popular and there is a whole Russian-speaking community for it (link below), here you will find training materials and you can ask a question. This, of course, plays in favor of the engine for Russian-speaking developers, because the process of developing a game is not so simple, and it does not do without familiarization with the technical documentation.

Limitation free version is that you will not be able to obtain a license and distribute (sell) the game you have developed.

Interface language: English

Unreal Development Kit (UDK)

Unreal - this is the word that the developers of Unreal Engine decided to use not only in the name of the engine, but also in the name of some games - "Unreal", Unreal Tournament, Unreal Championship. Among the released products there are also mass effect, XCOM, Borderlands 2 and over a hundred more unusual games that have received worldwide recognition.


Possibilities:

  • Unreal Engine is a cross-platform engine and supports IBM PC-compatible computers, Xbox 360, PlayStation 3, Wii, Android. To be more precise, you can develop a game on Windows, and run the resulting product on the game consoles described above and, of course, on Windows itself.
  • Initially, the engine is adapted for the creation of shooters, but is also suitable for other genres, such as MMO games.
  • Graphics at a very high level. High detail shadows and lights. There is a system for calculating lighting Unreal Lightmass.
  • The built-in editor has a huge set of built-in tools, including FaceFX Studio (face animation), mesh editor, Unreal Facade (development of architecture and buildings), Unreal PhAT (work with physics) as well as editors for animation, textures, sounds, levels, landscape and others .
  • Scripting is carried out in the Unreal Script language, which includes many features that simplify the development of 3D games. Despite some difficulties, such as class inheritance, the appearance of the Unreal Script code is similar to the same C / C ++.

Game examples: here is a plus to what I wrote above - http://www.unrealengine.com/en/showcase/

Interface language: English

Unity3D

An engine that is rapidly gaining popularity among beginners. The reason for this is quite natural - the ease and intuitiveness of both the interface and the game construction system as a whole. A lot of video tutorials and high-quality documentation give an additional advantage to this engine. In operation, Unity3D is quite productive and stable.



Possibilities:

  • Multiplatform games and the engine itself. Android, iOS, Blackberry, Windows XP/Vista/7, OSX, Wii, Playstation 3, Xbox, Flash, Web Player are supported. I would especially like to emphasize the web plugin, because now you can play the created 3D games directly in the browser, below I have given a link with examples of games.
  • Almost every genre covered modern games, it's really impressive (http://unity3d.com/gallery/made-with-unity/profiles/)!
  • Simplified import of textures, sounds, fonts. To import, just drag the elements to the textures folder on the engine panel. Supported formats: JPEG, PNG, GIF, BMP, TGA, IFF, PICT, PSD, TIFF (images); FBX, COLLADA, 3DS, DXF (3D models); MP3, OGG, AIFF, WAV, MOD, IT, S3M, XM (audio).
  • Scripting. Scripts can be written in JavaScript, C#, and a dialect of Python called Boo. Most often, the code is written in JavaScript, in addition, almost all Unity help contains examples in JavaScript. You can check the operation of the script right in the game without leaving the Unity window.
  • The graphics system is well optimized and runs on DirectX (includes support for DirectX 11) and OpenGL. There is support for Deferred Shading and real-time shadows. There is also a built-in terrain generator and a built-in shader editor.
  • If you want to develop a game in a team, the engine provides a collaborative development system for you - Asset Server.

Game examples: Bad Piggies, Wasteland 2. Some games can be played directly on Unity website(requires installation of a special UnityWebPlayer plugin)

Interface language: English

Where to begin?

On our forum there is a topic dedicated to this engine (link below). Here you will find video tutorials and other material for learning Unity3D.

Let's summarize. What to choose?

Of course, in order to choose an engine, you must clearly know for which platform you are going to develop the game. For mobile platforms, choose between Unity3D and Unreal Development Kit(UDK). Unity3D has the richest choice of platforms: Android, iOS, Blackberry, Windows XP/Vista/7, OSX, Wii, Playstation 3, Xbox, Flash, Web Player (most platforms are excluded in the free version).

Game genre:

With these three engines you can make a game of any genre, but CryENGINE 3 and UDK will be more focused on FPS (shooters). Racing sims are UDK because it's better with physics, but Unity is fine too.

Training/Interface:

Scripting is an integral part of game development and Unity is at its best here. Some beginners can figure out how to write simple scripts even without documentation. As for the training material, there is enough of it in RuNet for all the engines described above, but Unity3D is in the lead here too.

Graphic arts:

The review provides examples of finished products, they are already enough to draw conclusions. CryENGINE 3 outperforms the competition, but it's not clear superiority. Unity in the free version has lost many technologies, full list see here - https://store.unity3d.com/ (button "read more" > "License Comparison")

Choose an engine based on your needs and knowledge. It is still worth trying each and choosing what is closer and easier for you.

Some time ago, we touched on the topic of creating computer games and talked about a unique free 3D engine written in Delphi - GLScene(take the engine from our CD/DVD ). The topic of creating full-fledged 3D computer games was very interesting to you, which could be judged by the number of letters you received. However, then we decided that it was too difficult to talk about programming for the engine. Since then, your level has increased markedly (this can also be judged by letters and activity on the magazine's forum), you have become more savvy in programming matters. Especially after the publication of the cycle “ Programmer's pantry”.
From this issue we begin the publication of a series of articles in which we will consider in detail various stages creating a 3D game. You will improve your programming skills and, as they say, look behind the veil of secrecy that separates serious game developers from mere mortals.
The engine of any game is made up of many and often independent building blocks: collision control, physics model, game interface, main menu, level loading and much more. There are specific bricks
that are needed only for one genre. For example, the weather module is important and needed in an aviation or marine simulator, but in a real-time strategy it is secondary or not needed at all, and in a football simulator, the shots module is useless. But several dozen bricks are present in any game. In a series of articles, we will talk about each of these bricks, show how it is implemented and how to connect it with the rest. By the end of the cycle, you will be able to assemble your own computer game of a fairly high level from these bricks.

What are you doing here?
For those who missed some of my previous articles (or even all of them), I will answer your questions. So to say, a small technical introduction.
Why Delphi? This development environment and programming language Object Pascal flexible enough to create a full-fledged 3D game of almost any genre with modern graphics. Many will argue that the de facto standard for game development is MSVC++ or other environments based on C++. But such standards, as often happens, are formed spontaneously. Let's not confuse two concepts - language and development environment.
C++ is definitely more powerful than Object Pascal. But it is also less high-level, that is, many times more difficult. C++ is not suitable for beginners. Object Pascal, on the other hand, is not only simple, but also flexible enough to be able to develop a full-fledged modern-day computer game on it. Now for the environments. You can't say so categorically here. Development environment- a matter of taste and habit of each specific programmer. Let me share my opinion on this. MSVC++ generates slightly faster code than Delphi. Actually, this is where the advantages end (I repeat, in my subjective and non-binding view). Trumps of Delphi - high compilation speed (tens and even hundreds of times faster than MSVC ++), high quality debugging tools (in most cases, Delphi indicates exactly the line of code that contains the error, while MSVC ++ can indicate the line several pages from the one you are looking for) and a convenient interface.
Why GLScene? I have seen and tried a lot of free 3D engines, but I settled on this one. Its most important advantage is that GLScene is constantly being improved. The developers have not put an end to it and, most likely, they will never do it. The engine is constantly evolving and absorbs all the latest technical progress. This is the only free engine I know of that will never be called “outdated”. Several hundred enthusiasts constantly working on the “engine” will not allow this. As an example: in the engine, support for the very first shaders appeared a few months after NVIDIA issued relevant tools.
Another advantage: GLScene comes with its full source code. For beginners, this fact is probably unlikely to be useful. Although getting to know the source code written by a professional hand is worth a lot. But experienced programmers feel the main meaning of these words: after all, they will be able to reshape the engine as they like.
like it. The only condition in accordance with the MPL license is that any changes to the sources must be available to the project coordinator (now the coordinator is Eric Grange). Suddenly your code is still useful to someone ?!
Although all of the code examples that will be provided in this series will be written in Delphi using GLScene, they will also be useful to those who program in other languages ​​and with other graphics libraries. After all, the general principles of creating a graphics engine do not depend on either one or the other. So... we begin.

Why do you need a 3D engine?
Fellow newbies, focus! Perhaps what I will say now will not be very clear the first time. Be sure to re-read and understand: this is one of the basic principles of programming in general and the development of complex systems (and the game is a complex system) in particular. Imagine some simple game. Ping pong, for example. The programmer wrote it in pure OpenGL, the source codes fit in 200 lines of commercials. What will be the engine there, and what will be the main code of the game? You can't say that right away... And if you think about it, such a division into the engine and the main code is not necessary at all.
Now imagine that we want to make a more or less serious 3D action (tens of thousands of lines of code). And we will program in the same way as if we were doing the same ping-pong. And soon we'll be confused! Yes, this code willfast, there will be nothing superfluous, but... not every programmer will be able to complete it to the end. And errors in such dense codesearch is a living hell. So it needs to be sorted out somehow. The easiest way to do this is with highlighting levels of abstraction.
The level of abstraction is one of the most important concepts in modular programming. Imagine that you are a builder and you need to build a house. You operate with bricks: you take a brick, put it on the wall under construction, smear it with mortar, take the next brick... Bricks are your level of abstraction. Now imagine that you are a developer. And you need to build a neighborhood. You tell the builder where to build houses, which houses to demolish. Home is your level of abstraction. It would be strange if you told the builder which brick to put where. You said: this is where the house will be. All other concerns are taken care of by the builder. Well, now imagine that you are the mayor of the city. And you need to give the task to the crowd of developers by such and such a year to give the city so many new housing. It is unlikely that you will personally plan where which house should stand. This is the builder's job. The mayor's level of abstraction is the amount of housing stock that can be increased or decreased, but how this will be done is the tenth thing. By and large, at this level of abstraction, it doesn’t matter what houses are built from: even from bricks, even from mammoth tusks. And the mayor simply cannot have “ put a brick”, although any of his commands through several levels of abstraction will lead to this.
More or less complex computer program or game - the same. Each level of abstraction is responsible for its part of the work, relying on the possibilities of more low level. Each level of abstraction providesa higher level user-friendly interface for working with objects. In a computer game, the lowest level of abstraction is programming language (although, in fact, you can dig even deeper - to iron). Next come the commands OpenGL API(if we program with it). At this level, we can issue a command like “ draw a polygon" And " swap the visible and shadow parts of the video buffer". Then the commands GLScene. At this level, we can issue commands like “ build a cube”, “download 3ds model" And " apply some texture to the model". And then there's the game engine. And finally, the game code, which can give commands to the game engine like “ load level”, “shoot such-and-such a character with such-and-such a weapon" And " show intro video". Ideally, each level of abstraction uses only the commands of the previous level. It is not always possible. But this should be strived for, since in this case the code will be fast, convenient and easy to read.

Dynamic object creation
We have considered the vertical organization of a computer game. But each level of abstraction can be divided into semantic blocks - modules. The division is optional and will always be purely conditional, it's just easier to program. Today we will analyze a small, but very important module-brick - the dynamic creation of objects, which is present in all games without exception.
Let's say you're building a weapon module and want to program a queue ofmachine gun. Everything would be fine, but how do you know how many bullets a player can fire in the whole game? Through the object editor in the GLScene IDE, you can create any objects, but only if you clearly know how many and what kind of objects you need. In most cases this is not acceptable. For example, you have 20 levels in the game, each level has its own set of objects. And what, before the start of the game, create all the objects of all levels? This is long and takes up a lot of memory. The only way out- create objects directly during the game, dynamically. In GLScene, the dynamic creation of any object consists of two stages - creating an instance of the class of this object and assigning the necessary properties to it. Let's take the already mentioned example with bursts at the machine gun and dynamically create a bullet. Let's assume that our bullet will be an industrial sphere. The class is responsible for spheres in GLScene TGLSphere. It would seem that you can write like this:
Sphere:=TGLSphere.Create
However, the command will not work because every object in GLScene needs to be registered in the object queue. In addition, an object cannot be created in the “emptiness”, it must be attached to some higher-level object. The highest level root object is glscene1.Objects (if you have a TGLScene component object called glscene1). Correct option:
Sphere:=TGLSphere(glscene1.Objects.AddNewChild(TGLSphere))
Let's take this line apart. At the root object glscene1.objects we call the method AddNewChild, which adds the object of the class specified in the parameter to the root (in this case, it is a sphere -
TGLSphere). This is also possible: not objects, but entire classes, can be passed to procedures as parameters. Why do you need a type conversion to before assignment? TGLSphere? The point is that the method AddNewChild, whatever you pass to it as a parameter, returns an object of the class TGLBaseSceneObject. This does not suit us, so we will convert the type to TGLSphere. The resulting object is assigned to the Sphere variable. Now, using this variable, we can set different parameters for our pool, for example, position in space:
Sphere.Position.X:=
Sphere.Position.Y:=
Sphere.Position.Z:=
Or color:
Sphere.Material.FrontProperties.Diffuse=
We have discussed the dynamic creation of models, and now let's talk about their dynamic destruction. In fact, a bullet will someday hit a wall, a person, or fly off into the blue distance. From now on, it is no longer needed. If we leave it like that, it will occupy some memory area. Considering how many shots the average camper fires before its stash is discovered, we won't have enough computer memory to store that many bullets. Therefore, any game objects that have become unnecessary must be immediately destroyed. The only one The right way do it - call the method Free, For example:
Sphere Free
It is often necessary to check if an object exists or has already been destroyed. To do this, we compare the object with the universal constant zero - nil, For example:
If Sphere<>nil then
Begin
(the sphere has not yet been destroyed,
so we're doing something useful here)
End
Or we call the function Assigned, which does the same. And here one giant pitfall lies in wait for you, which sooner or later all programmers came across. If you freed an object with the method Free, this does not guarantee that the object variable has become equal to nil! That is, under a certain set of circumstances in the example above, even if the sphere is destroyed, the condition will be met. If you deal with this area after verification (and this almost always happens), a critical error will occur, which is fraught with the game crashing into blue windows. To ensure that the freed object becomes nil, use the special procedure FreeAndNil, For example:
FreeAndNil(Sphere)
Now you can be sure that you will never refer to an object that no longer exists. The described procedure for creating and destroying objects can be applied to any GLScene objects.

Why do games need a battery?
Consider the example above with a machine gun. Usually in games, bullets are not just spheres, but complex objects, which also have a texture. Each time you create a bullet, a piece of memory is freed, the properties of this bullet, the bullet model is loaded, the texture is loaded (from the hard drive!). All this takes some time. If the number of bullets that the machine gun spits out per second is very large, wild brakes can begin, especially on weak computers. With the destruction of bullets the same problem:you need to unload the object, free the memory... The same applies not only to bullets, but also to any objects that often appear and disappear, for example, raindrops, sparks from electrical wiring ... Such wastefulness system resources V computer games unacceptable. You don't want your game to run only on a super-cool graphics station, do you?
The exit is simple. We estimate how many objects of this kind, on average, can exist simultaneously. Let's say a machine gun can throw out several hundred bullets in ten seconds, and in the same ten seconds the bullets will definitely reach the target. Before the start of the game, we create all one hundred bullets. This is best done while the level is loading. No one will notice a small delay. Next, the bullets are placed in a list or array, which we call accumulator. We make bullets invisible or take them out somewhere outside the playing space. Once the machine gun has started firing, instead of creating bullets, we move to Right place already created bullets from the battery and make them visible. As soon as the bullet reaches the target, we do not destroy it, but make it invisible again and put it in the battery. As a result, for each bullet we save creation time and destruction time. And this is very, very much! But what if we made a little mistake in our estimates, the bullets in the battery ran out, but the machine gun continues to fire? There's nothing you can do about it - you will have to create new bullets dynamically until the old ones return to the battery. And we won’t destroy new bullets either, but we’ll store them in the battery - suddenly we need more ...

attack of the clones
Suppose we have a large forest in which there are many, many identical trees or, say, many trees of several different species. The example is similar to the previous one, only we do not dynamically create or destroy anything here - there are always trees at this level. The problem will be when loading the level. Creating so many trees will take a huge amount of time. But they are all the same! That is, we load from the hard drive over and over again and create copies of the same thing in memory. Downloaded. We play. Before rendering each of the trees, preparatory procedures are performed. For each tree they will be the same, but we will call them again a large number of times, according to the number of trees! It turns out wasteful. And the memory for each tree must be reserved, and the processing of each of them takes time.
It would be nice to load a single tree, and when it will be necessary to display the rest of the trees, just show the graphics library where to get the necessary data from. Well, what a saving of resources it will turn out, what a growth of FPS! Such “false” trees (and not just trees - whatever), about which only private information is stored in memory (position in space, rotation angles), and the same information is stored only once, are called proxy objects.
There is a special class in GLScene for creating proxy objects - TGLProxyObject. It is very easy to use it. First, we create a source object, that is, a single tree, like this:
Tree:=TGLFreeFrom(glscene1.objects.AddNewChild(TGLFreeFrom));
//Load
its model:
Tree.LoadFromFile('Tree.3ds');
//Load its texture:
Tree.Material.Texture.Disabled:=false;
Tree.Material.Texture.Image,LoadFromFile('tree.jpg');
//Now let's create ten clone trees in random places:
for i:=1 to 10 do begin
//Create another proxy object
proxy:=TGLProxyObject(glscene1.objects.AddNewChild(TGLProxyObject));
with proxy do begin
//We write our sample tree to the MasterObject property
MasterObject:=Tree;
//We show that only the structure of the object should be inherited
Proxy Options:=;
//Orientation of the tree in space must be left unchanged
Direction:= Tree.Direction;
Up:= Tree.Up;
//But the position is set random
Position.X:=Random(100);
Position.Y:=Random(100);
// And rotate the tree to a random angle to make it look better
RollAngle:=Random(360);
end;
end;
Now we have a dozen trees for the price of one. Please note that if we somehow change the original object, this change will instantly be reflected in all clone objects.

* * *
We talked about the first brick. In the following articles, we will give you a whole truckload of these bricks with which you can build the 3D game engine of your dreams. Well, to make it easier for you, we put the latest tested version on the compact GLScene.

With the recent release of the free version of Unreal Engine and the announcement of free Source 2, you have even more options to make your own games. But choosing an engine that suits your needs and skills is not the easiest thing. Let's run through the best examples free (well, almost, what is below) software for beginners and professionals.

In addition to the engines in this collection, there are also a lot of not very well-known, but, to put it mildly, very cool engines of the second tier. As a rule, on the developer's website there is a mention of the possibility of licensing, but in a very raw form, here you have to contact directly. All engines have their pros and cons. For example, Techland's recent Dying Light engine is well-suited for open-world games, but has issues with draw distance.

To get really deep into most of these software tools, you will need at least basic programming skills. But in some cases, you can even do without them and immediately get down to business.

At the forefront of technology - CryENGINE

CryENGINE is an extremely powerful game engine created by Crytek and first introduced in Far Cry. It is intended for development on PC and consoles, including PlayStation 4 and Xbox One. Its graphical capabilities surpass Unity and UDK, and at times stand a step ahead of Unreal Engine 4: state-of-the-art lighting, realistic physics, advanced animation systems, and more. Last game on CryENGINE was Ryse: Son of Rome. Similar to the UDK and UE4, CryENGINE has built-in powerful and intuitive features for working with level design.

Productive use of CryENGINE will take some time to learn, and you may find it difficult if you have no experience with other engines. If you don't need graphics like Crysis 3 or Ryse: Son of Rome, you should look into something more user friendly.

The CryENGINE pricing model is somewhat different from the competition. For using the engine. It's not completely free like UE4 or Unity 5, but it doesn't require royalty payments, so $9.90 is all you have to pay to Crytek. Depending on the size of your studio and team, being royalty-free can be a huge advantage.

Beginners - Stencyl or GameMaker

If you're just getting started making games and have no programming experience, you're better off starting with the simplest tools. Of these, the most popular and generally recognized are Stencyl and GameMaker. Both are easy to learn for beginners, and several quality games have already been created based on them.

Stencyl allows you to make games without programming. The interface is completely drag and drop based, games can be released on Windows, Mac, Linux, iOS, Android and Flash. If you've ever dealt with something like Scratch, you'll immediately recognize the LEGO-like approach to building code through block placement. Stencyl is designed for simple creation sprite games, and therefore often serves as the basis for puzzles and side-scrollers. Anything difficult to do will be problematic, so if you decide to work on an RPG or strategy, look at other software. With the help of Stencyl, several popular games were born, including Impossible Pixel and Zuki's Quest. It also has a built-in tutorial that will tell you everything you need to know.

GameMaker is another free utility for beginners to make games for Windows, Mac, iOS, and Android. Like Stencyl, almost everything is drag and drop, but there are also hooks for multiplayer games, links to external SDKs, the ability to dig into the code, and much more. The free version watermarks the export, but GameMaker is great for a first timer though, and includes built-in tutorials on the basics. There is no such genre restriction as in Stencyl, and you can find separate guides for different types of games. GameMaker made the original version of Spelunky and Hotline Miami.

Of course, everything is not limited to these two options. Buildbox is a relatively new utility that is available during a trial period and offers a training program to learn how it works, while GameSalad is a well-known popular platform for a long time, although it is complained about because of bugs and unstable work. Construct is worth considering if you want to make games in HTML5. In every case the main problem that you have to restrain your design ideas. This is software for beginners, and you will just break it in an attempt to do something difficult. That is, games will get buggy and non-working if you try to go beyond the intended system. And yet, this excellent place to start and suitable option with no programming experience.

Intermediate programmers aiming for 2D games - Cocos2D

Cocos2D is an open source program for creating 2D games. Games can be released on Windows, Mac, Android, iOS, Windows Phone or web platform.

Most of what you'll be doing in Cocos2D is working with C++ (there's also support for Lua and JavaScript), so you'll need to be familiar with this programming language before you even take on Cocos2D. However, with knowledge of the mentioned languages, the program becomes quite easy to use. It has a full IDE and is completely free with no strings attached. As the name implies, the utility is designed to create two-dimensional games, so it works better with simple sprite games, where 3D is useless. 2D games can also be made in Unity (which we will look at a little later), but Cocos2D is easier to get into if you are just starting out (and of course, you know C ++).

Cocos2D has produced many successful games across a variety of genres, including the award-winning Badland.

Developers targeting mobile platforms - Unreal Engine or Unity

If you're interested in complex, 3D games, the two most popular tools for creating them are Unreal Engine and Unity. Both have their strengths and weak sides and various points in the license agreements that you should read before making a final decision.

Unity allows you to make 3D and 2D games for almost any platform including Windows, Mac, Xbox, Playstation, Android, iOS and more. It supports game assets created in 3ds Max, Maya, Softimage, Cinema 4D, Blender and more. Unity uses C#, along with its own programming language, so it doesn't hurt to learn them well first. If we compare Unity and Unreal, the first one is perhaps easier to learn. It has a rich set of pre-built behaviors and a built-in game resource library that makes them pretty easy to follow. While working on this text, I spoke with several developers, and they think that Unity - best engine for early projects because it is easier to understand and learn than Unreal. If you have already made a game, say, on GameMaker, then you will immediately figure out what's what in Unity. Unity also supports alternative payment models right in the engine, including several free-to-play monetization models.

The functionality of the free personal version is already rich enough for your first project. By creating a game on the free version, you do not have to pay royalties or royalties, but there are some caveats here, namely that you will not be able to receive more than $100,000 in sponsorship / profit. A lot of tutorial articles have been written to help novice Unity developers. Popular games on this engine include Alto's Adventure, Gone Home and the in-development .

Unreal Engine 4 uses C ++, so with proper knowledge of this language, you can choose it, however, games can be created without delving into the language itself. Games made with Unreal Engine can be released on PC, Mac, iOS, Android, Xbox One, and Playstation 4. Unreal has almost everything you need built into the engine, including 3D modeling and terrain work. Due to its rich content, Unreal Engine 4 is harder to master than other development tools, and even with a good knowledge of C ++, you should be prepared to learn a lot of new things. But you can create truly impressive games. You can learn more about the intricacies of the Unreal device with the help of reverse engineering, but still, without prior experience, it will not be easy to figure it out. Unreal Engine 4 is a relatively new engine, but games like Daylight and Tekken 7 have already been released on it.

To use Unreal Engine 4, you must agree to pay royalties if your game is to be sold. After the game or app starts selling, you pay per quarter. It may seem like a lot of money, but given the profit that the game will bring, it's not that much.

It's also worth taking a closer look at Valve's Source 2 engine, which should also become free this year.

Updated 01.10.15: In August at GDC. Stingray runs on the Bitsquid technology core and is based on a 64-bit architecture. Stingray has been designed to be highly flexible and work with all popular platforms, from mobile to virtual reality. Modularity and managed data technologies mean it's much easier for developers to make changes and see results on multiple connected devices at once, without recompiling. Plus, you can quickly transfer objects between Autodesk products. A breakthrough with development automation has not happened yet. If you are already using Unity or Unreal, then you should not switch, the gain is not very noticeable yet. We'll tell you more later.

Development King - Source 2

At GDC 2015, Valve made some big announcements, and perhaps the most important one for the gaming community was the announcement of Source 2. This is the successor to the Source engine used in Counter-Strike: Source, Half-Life 2 and many other games. Developers have been eagerly waiting for the next generation of the engine in the arsenal of Valve for several years. At the press conference, Valve's Jay Stelly said, “For content developers. Along with the announcements of Epic and Unity, this will help PC remain the dominant content creation platform.” Apparently, Valve decided to join the engine race along with Epic and Unity, giving developers more options to choose from. However, it is not yet entirely clear what “free for content developers” means: are we talking about any established developers or is it some kind of special category?

There is no specific information about the release date, it is only known that Source 2 will be released in the near future. Jay Stelly also stated, “We are focused on improving the productivity of content creators. Considering how important user-generated content is becoming, Source 2 is not only for professionals, it allows gamers themselves to take part in the development of their favorite games. These words suggest that Source 2 will be available not only to professional studios, but also to hobbyists and modders, which made many of Valve's games so popular.

We turned to Valve for additional information, and this article will be updated when more is known about the new engine. But already now we can say for sure that Source 2 will become a serious competitor to the heavyweights in the face of Unity and Unreal Engine 4, because, according to Gelli, it will also be free.

Writers - Twine/RPG Maker/AXMA

Not all of us are experts in programming, and even Stencyl may seem complicated to many. If you see yourself more as a storyteller, you have two great options to choose from: Twine and RPG Maker.

To create interactive non-linear stories. Simply put, you can make a game in the "choose your own adventure" genre. The utility is incredibly easy to use. You connect story segments with various transitions, much like in mind maps. Each choice available to the player leads to a new text. When you're done, you can immediately publish the result on the site. Everything is quite clear, but if you get stuck somewhere or want to add something else, the beginner's guide will help you. Popular games made with Twine include A Kiss and Cry$tal Warrior Ke$ha.

If Twine seems too old-fashioned to you, try RPG Maker. The free version has fewer features than the paid alternatives, but it can still do a lot. The system is simple to learn: graphics are dragged, dialogues are added in one click. To make anything more interesting than a regular RPG, you have to think outside the box, but examples in the face of the warmly received To the Moon and LISA make it clear that this is possible. You can enjoy free music and images, so you don't even need to know how to draw. Built-in learning, again, will help you in creating your first game. Popular games on RPGMaker are Clock of Atonement and One Night. Twine has a domestic analogue of AXMA Story Maker, which is also worth a closer look.

Free software for gaming resources

Of course, the game is not only the engine. You will need all sorts of game resources, including images and sounds. Several indie developers I interviewed shared helpful links:

Tiled is a simple map editor for Cocos2D, Unity and other tools.

OpenGamesArt - free images and graphic placeholders.

Free Music Archive - Free music with Creative Commons licenses.

FreeSound is a collection of free sound effects.

All this will help you make games without special costs. Of course, you will have to invest your time, blood, sweat and tears into them, but at least your wallet will not be hit.

Return

×
Join the koon.ru community!
In contact with:
I'm already subscribed to the koon.ru community