Game development
Hippiman/Conscience
This article consists of two large hours─
tey. In the first one I will try to cover the whole
game development process, without going into those─
nier details and without being tied to
specific platform and programming language─
roving, because for each platform separately─
many books have already been written. Into─
let's move on to more mundane issues─
myself: I will give a description of the game development environment
under ZX Evolution(which will also go
on ATM Turbo 2/2+and on Pentagon 2.6bbLE) -
Evo SDK.
It's ridiculously frustrating when you're waiting
some interesting game from regardless─
our developers. You wait a month, a year, and her
everything is fine, the developers are sharing information about
as development progresses, less and less often, and then completely
stop. The game never appears. And by─what? There are different reasons: for example, once─
the worker got married, changed jobs, and he...
There's no time to make a game now. This happens, but
most often game development is abandoned due to
for an incorrectly set process once─
work, simply because it’s hard to do it─
It's not interesting. Enthusiasm gradually
fades away, and the developer gets down to business
more interesting, but sends the game to a long time
box. Here's how to avoid this, and boo─
Det the first part of the article. She should help
someone to complete their abandoned projects─
you, someone decide to start making their own
the first game, and for someone to make it out of their own
project "candy" with excellent gameplay.
So how is a game made anyway?
The development process of any game can be learned─
roughly divided into 4 stages:
1.Idea.
2.Preparation.
3.Development and testing.
4.Release and post-release support.
Let's look at these stages in more detail.
Idea
Before starting game development you need
come up with what it will be about."I want to do
a game about an airplane flying through a labyrinth from
caves. And there’s more puff-puff, and more from belowwhat─
traps are running back and forth." How crazy
no matter how the idea sounds, it’s already enough to get started
development. It's better for a novice developer
curb your imagination a little and the first
make a couple of games simpler. Simpler logical─
skaya game, Tetris or a simple odnoek─
an early arcade game will be more than enough.
Believe me, when creating it even seemed
would be a primitive logical toy beginning─
a successful developer will face a huge co─
number of problems and, accordingly, acquisition─
gaining good experience, which is already possible with─
change to create a more complex game.
The next step is to decide
platform and development environment.Best
choose a platform and development environment, with
with which you are most familiar, especially for
first game. And for those who do not know pro─
programming in no language, created
many “constructors”, with the help of which─
You can make your own game with almost no food─
no line of code. This does not apply only
to PC. For ZX Spectrum (hereinafter simply
"Spectrum") is Arcade Game Designer. For
those who do not know assembly language have a wonderful
Churrera engine, which allows you to create
very decent games for Spectrum in languages─
keC. And for developing games for advanced
Spectrum clones like ATM Turbo 2there is Evo
SDK is a development environment in languageC, which
allows you to write games on your home computer─
tere faster and easier than doing this─
is in assembler.
So, decide on the platform and environment─
foxed Now, perhaps, I’ll have to subcorrect─
quote the idea. After all, you see, on the ZX
Spectrum 48K is unlikely to be created
3D real-time strategy
or something like that.
If you don't want to make a table game,
but you want someone to like her─
If you are, then it will be important to determine the key─
What are the main differences between your game and similar games─
nru on the target platform. Another clone
few people will be interested in a popular game,
but if the game has its own "trick", it already has
a chance to attract a potential user.
You may have to adjust the idea
one more time.
And lastly: for what audience is it intended?
game is scheduled. Repeatedly tested for
practice and proven by the failures of AAA games
class, that an attempt to please "both ours and yours─
shim" only leads to the fact that the game is neither─
who doesn't like it. Before development begins, well─
You need to clearly understand who will play your game
game, what this group of players likes, and
what you don’t like and adapt to them.
Preparation
At the preparation stage it is necessary to
think through and describe all aspects more carefully
future game. It is best to create a document
yescalled "Design document" or "Design"
doc" in which all ideas will be entered,
concerning the future game. All this can be done─
reap in the head, but in this case it will be
It’s very easy to get carried away by one aspect─
then completely forget about something else, not
less important. You'll end up losing
time and effort, and maybe even wasted─
site development.
As a result, you should have a document─
cop (let's still assume that you are
followed the advice and created at least a simple
text file) describing:
1.The world in which the game takes place.
2.Appearance and character of the main character.
3.Other characters, possibly enemies or
main villain.
4.The motivation of the main character.
5.Player motivation (not to be confused with the 4th point─
No, these are different things. The player may be
it makes absolutely no difference what in the world of the game ru─
Galaxies are shaking. He might just be indifferent─
It’s interesting to “collect voooo that bonus” and semi─
read a new level with a new background picture─
coy).
6.The means by which the hero...
hits its target (implying that
can a managed person do at all?character).
7.Gameplay features.
8.Interface.
9.The style of the levels.
10.Other.
So that this stage is not too tiring─
flax, just for some time
write down all the ideas for a new game in your head,
and then structure them and arrange them according to
shelves.
Development
Next comes the most interesting and
the difficult stage is the actual development itself
games. Where should I start here?
difficult. In serious studios where he works
a lot of people, the whole development plan of the composition─
appears at the stage of creating a design document, and
then each developer simply follows
plan drawn up for him: programmers
they write the engine, the designers invent the characters─
click, artists paint textures.
For independent developers who,
usually make games alone or
two/three, this approach is unacceptable.
(By independent developers I mean
you and me, for whom game development is
hobbies, not indie developers, for whom
this is a way to earn money. Their approaches are practical
technically the same as in full-fledged accounts─
rah.) In large companies, every developer
has a financial interest in publishing the game.
He has a salaryin the future "shines" pre─
Mia or something else. They just carry out
your job. Independent developers are both─
They are making the game for free, for their own pleasure─
event. If they start making the game according to plan─
well, then the whole development will quickly come down to
routine work, and the game will never be successful─
finished.
Here is an approximate development order, which─
I usually stick to this. This is an approximate
plan for playing with the character. For logical
game, many points will not be applicable, but
the general train of thought will still be clear:
1. First of all, you need to make a blank
the main character. You don’t have to heed it─
poke completely. For the first stage even
no need to do animation. One sprite
enough.
2. The next step is to prepare the graphic─
sky engine. At first you can just stagnate─
move the character sprite across empty
screen. For this I make a class template
or the structure of the game character. First
time is enough just a couple of fields for coordination─
nat.
3. Gradually making it more complicated, adding turns
in different directions and, if possible, I do
animation sketches. The engine frame is ready. That's it.
what will be done next will already be added─
attach to the main frame.
4. After the hero is cheerful and cheerful
runs across the screen, I start making the base
level cards.
5. I create a structure or class that
will contain, for starters, basic information─
information about the level or screen (walls, stairs
etc.).
6. I allocate a buffer in memory in which
the map and (manually for now) the map will be stored─
I trust him with his data.
7. Making the character interact somehow─
work with the map. For this stage you need─
Some tile graphics are broken. You can
make do with the most primitive dummies (si─
lower square, green circle, etc.).
8. After we already have “almost
game", you can run, jump and make
anything else, it's time to think about
music and voice acting. I usually ask someone─
write me a couple of tracks, but for now they
I'm not ready, I'll put in whatever I want. The sounds carried─
It’s false to do it yourself. But even if you
there are no sounds yet, at least mark the places
in the code where these sounds will be played to
then don’t rummage through the ever-growing foxes─
ting the program in search of the desired event.
9. The next step is adding differences─
obstacles (spikes, monsters, etc.), with─
selected items, graphics for them are drawn
andprocessing of their interaction with
player. Classes are expanded accordingly
player and cards, monster classes are added─
ditch, the objects of which can be stored both in
card, and a separate buffer.
10. Now we have almost ready─
your game. You can collect something, you can from
someone to run away or attack. You can mind─
Well, you can't just win, because... map
only one. At this stage you need to do under─
loading maps: either from disk or from a separate
memory areas. Perhaps to save pa─
memory cards will have to be stored in compressed form
- this means you will need to write a procedure for them
unpacking. And it is advisable to make an editor
levels in the most convenient environment. Do
levels in Notepad are not very convenient.
11. The game is almost ready. Let's finish
writing logic, making the player's "lives"
(if you haven’t done them before), make transitions
from card to card, somehow marking the end
games (by card number or some other name─
tyu).
12. At the very end the main menu is drawn,
splash screen, texts of congratulations and
Game Over. Graphics are finally being replaced─
heading to the final one. Final
adjustment before the testing phase.
13. Testing is a very important stage─
earnings. Try to get involved in it
as many people as possible, yes,
so that people are “different”, with different styles
games. These people in as much detail as possible
must describe what they liked and what they didn’t
I liked it. Where it was too difficult, where
too easy. Where did they find errors, etc.
14. After this, you may have to
return to one of the development stages─
ki. And perhaps more than once.
15. And only after all testers
"tormented", can't test anymore,
every single one of them says that your game is
ideal, and you yourself have nothing more to do with her─
add, only then can we move on to
the next stage - publishing the game.
Let me summarize what was written above. The most optimal─
a new and simple way to develop a game
small forces is an iterative approach.
First we develop the simplest kernel,
which performs a minimum of functions, testing─
We eat and achieve normal work. After
add some function to it and dream─
we test and debug. And so he repeats─
repeat many times until the game is over.
The advantages of this approach: ease of debugging (for─
often only the last one needs debugging─
iteration) and clarity (easy to see
and correct all design flaws of the future
games).
It would be even more optimal to separate
game engine fromthe game itself.
What do I mean? Often in games under little─
powerful systems game logic and gaming
the engine are intertwined so much that they are not─
possible to disconnect. This can be done by
several reasons: optimization (less
intermediate actions) and development speed─
boots. But this approach also entails
disadvantages: it is very difficult to debug
and modify, and subsequently game
the engine will be impossible (or very difficult)
reuse for another project.
Best (if you have resources) first
develop a more or less universal game─
new engine, write a tool for it─
tary, and then through minor modifications
use it for your game. So about─
you can kill two birds with one stone: code
it will be easy to debug, and the engine can be used─
children can be reused with the least
labor costs.
Release and post-release support
Before publishing the game you will need to create
to describe her: brief, without “water”, but
such that it illuminates all its positive
and unique sides. Make a few
screenshots of the most beautiful places. Very re─
I recommend making a user manual.
Even if the entire gameplay comes down to
rhythmic pressing of one button (as in
many mobile games), I’ll definitely find it─
there is a user who does not understand
control, which decides that you need to jump
on the spikes, and don't dodgefrom them, and both─
will definitely start trumpeting this at every
corner. Describe everything in the manual as best you can
more details. Write some winning ones
tactics and strategies. You can even describe about─
first level walking step by step. Work hard─
Be careful, because if suddenly there is such harm─
new user, then you can poke him
nose to the manual.
Well, then post your game on
network, write to thematic forums and new─
personal portals, create a page on social media─
online network, anything that will help anyone─
Let me know about your game. And get ready to...
a week or a couple of weeks promptly from─
respond to all wishes, suggestions and cries─
tiku. You may even have to go back to
developing the game and making a couple of patches or
release an updated version.
Next, I want to give some tips about
on how to bring your game development to
finals and show it to people, and about
how to make it the most interesting.
About the development:
* The main "fuel" of free development
tchika is enthusiasm (inspiration),
which disappears very quickly, like that─
As soon as the creation process becomes boring.
The most important thing when developing a game is under─
keep your interest.
* If you feel tired of drawing
graphics or write a complex procedure, bro─
sit down. Finish itthen. You don’t need to catch yourself─
damn, nothing good will come of this.
Do something else, there will always be something else
something else that needs to be done or improved.
* If you feel like you can’t cope with
something, ask for help.
* Maps are much easier to draw in parallel─
else with someone else, while sharing experiences─
vol.
* Best throughout the entire period─
bots of the game consult with someone. Let
it will be someone from the family, and let him
knows nothing about games, that's not a problem.
To an outsider, flaws in the
your game. In the meantime, you explain to him,
what you can’t do is most likely done by yourself
you will come to the right decision.
* Complex tasks are best broken down
much lighter, sequential re─
the solution of which will lead to the solution of a big
tasks. For example, the task of writing an A.I.
Enemies can be broken down into:
-simple movement;
-moving from point to point;
-path search;
-movement along the found path;
-reaction to player actions;
-...
* Each of the subtasks, if it is also ok─
has become complicated, you can, in turn, times─
hit a number of smaller ones.
* If you feel like you're getting tired of playing─
boots, don't throw it away. Then very
It's hard to force yourself to continue. Just
slow down. Do a little a day
(one sprite at a time, a piece of map or
piece of code), but do it.
* Feel free to peek at some
design decisions or tricky pieces of code
from more experienced developers. I don't have in
I see brazen theft of entire pieces of levels─
her, code procedures or textures. But why
every developer has to reinvent the wheel,
when you can learn from your elders. You can even
specially to play several famous
games of this genre to see how
the thing you are interested in is made in them.
* Don't try to jump over your head.Og─
a large number of promising games and
was not completed due to excessive ambitions
their developers who planned
do too much, but don't "pull".
Better to do less thanI want to, but the law─
read development than plan a lot,
but stop halfway due to difficulty
or a large amount of work.
* No matter how trivial it may sound, do
backups. It is best to make backups once every
day, after some major stage and pe─
before making some serious changes─
ny. It's even better if you store
only the latest backup, but several copies
over the past few days. This is not the same─
saved me many times in situations when I,
having made a wrong decision, I changed a lot
code, but didn't achieve the desired result.
After which he simply “rolled back” to the last one─
ny stage and continued work.
About design:
* Do not overload the game with unnecessary elements─
tami of gameplay. When you want something extra─
To get started with the game, ask yourself: “But really─
but is it necessary there? Will the game be better?
from this? No need to add anything to the game
something just for show.
* Entertain the player. Boredom is his angrier─
your enemy. Remember what happened with Crysis. Kra─
the greatest game at that time was absolutely
unplayable due to terrible boredom. All
it was just used for testing
computer performance.
* Think about interesting things first─
style of your game. If you have any idea
makes the game less interesting because of this ass─
It's worth getting rid of mki.
* Make gameplay as balanced as possible─
aligned, without distortions to any one
its aspect. Let's say you're making an arcade game -
jump rope like "Mario" and decided to dilute
The game process is riddles. The idea itself
good, but "turn on 3 levers in the correct
sequences" is one thing, but "stasis─
ask the player to solve a logarithmic equation─
tion, and then in binary code sixteen
use the levers to enter the correct result" -
it's completely different. I'm exaggerating, of course, but
the meaning is clear. Exciting arcade gameplay neozhi─
interrupted for a long time by a complex holo─
Volomka. This confuses the player and ru─
sews all the dynamics. Most likely, the player even
will not solve the riddle, but will climb into the information─
tether for a hint or simply hack
game.
* Don't push all possible resources
one level. If you have 10 different
monsters, spread out their appearance throughout the game─
ru. So the player will have to wait for something every time -
something new.
* Surprise the player. Try to do
so that each new level brings
something new in the game.
* Try for every game task
make several possible solutions to the differences─
no complexity and obviousness, with different
reward at the end. Let me give you an example
variability of solutions on the ideal (as
It seems to me) in this regard, the game Deus Ex.
Task: you need to get from point A to point
B. The player's path runs through the room with
a large number of opponents. What can
do the player?
-Maybe like Rambo shoot everyone;
-Can fit through ventilation;
-Can sneak into the shadows;
-Can hack a security robot, and
he will solve the problem with the enemies;
-And finally, it can hack the system oh─
wounds and reprogram the turrets that
deal with both the robot and the enemies.
Variability makes games more interesting─
new process and allows the player to go deeper
immerse yourself in the world of the game.
* Make secrets and traps (traps, etc.)
of course, you need to designate it. Don't put up a sign
"there's a trap here," of course, but blood stains or
the dice nearby will tell the attentive player─
ku, what’s dangerous here, and the inattentive priest─
Having woken up, he will immediately understand how foolish he was─
xia).Always rewardattentive and loving─
experienced player. Here the situation is the same as
and with variability. The presence of all kinds of sec─
retov increases interest in the game.
* Even if you have a line level with
the only correct option for passing,
make it so that the player feels that
he made this decision himself. Make an answer─
lanes, dead ends, additional passages, etc.
Long “gut-shaped” level without possibility─
It’s important to even take a step to the side - it’s
the worst choice you can make.
* Don't forget about sound and music. Even EU─
Do you have incredibly beautiful graphics, without
it will not provide the required sound design
atmosphere. Remember: even during silent
movies there was a special person sitting in the hall,
who played the appropriate music on the piano─
ku.
* Make a game in the genre in which
you understand best.
* Come up with some kind of
"zest". Something that will distinguish it from
similar, even if it’s banal Tetris.
On this basis, many unique
games. Like Tetris, for example, where all the pieces are
- “soft”, after landing they bend,
springy, behave like pillows and not for─
dying on the spot? There was one. Hundreds of the same type─
new clones - what could bemore boring? On─
example, now on the Spanish Churera engine
Dozens of identical games are coming out. Changes
Only graphics, not gameplay. Sta─
The new thing is just a shame for the developers:
spent so much time and effort, but to play
I absolutely don’t want to get into this, because but─
There is nothing in the game and everything has already been studied.
I don't want to say that the Churera engine is bad
or something like that. The engine itself is replaced─
friendly, easy to learn and quite
fast for written inC. I want ska─
know that many people absolutely do not know how to do it
dispose of. And instead of creating something unique─
new game on a ready-made engine (although such
yes) they just copy the same thing.
* IG graphic design style─
ry must be checked in the assembly. U
you can have beautifully drawn tai─
ly maps and masterpiece sprites of the person─
zhey, who can take first places on
pixel art competitions, but together they will
look like a daub and cause episodic attacks─
lepsy. So that after a hard month's work
in terms of drawing graphics, this didn’t happen, well─
It’s important to decide on a style in advance, nari─
stick a couple of tiles and a couple of sprites, yeah
see what they look like together.
Then make adjustments and calmly
continue to work with my soul, periodically about─
trusting the big picture, of course.
* It wouldn’t hurt to think about re─
the playability of your project. Here are a few
factors that can increase replayability─
flatness:
- Various levels of complexity.Nestest─
Surely, simply the increased strength of enemies is not enough
what will change, you need to approach it more cardinally─
It’s nice, for example, to close some of the levels at
low difficulty levels or do proti─
Vnikov smarter on high, or throw to the player
challenge, raising the difficulty bar to a very
high level. For example, the level is difficult─
stiNightmarein Doom/Doom2, on which everything
opponents are resurrected. Why not another reason?
go through a familiar game to test your
skills.
- Table of records.Somewhat outdated─
The best way to increase replayability, but that's all
still working. Now it can be used in
slightly modified form. For example, you can
store the table of records not on the platform
player, but on the Internet. So it appears right away
a certain competitive note.
- Secrets.I already wrote about them, but...
I'm trying. Well done, interesting secrets
(hidden places, hidden weapons, mini games
etc.) will force the player to sit down for a long time
game.
-Variability of gameplay.That's what I'm talking about
I wrote that too. I’ll just add one more example:
arcade race Outrun. The game itself isn't very good
difficult and with straight hands can be completed in 5
minutes, but you can replay it a lot─
th time because of the ability to change your march─
root right during the game. What it looks like:
the entire game world consists of sections of tracks─
sy, at the end of each of which there is a development
lka. The player always starts in the same
place, but can finish in one of
five stages, and visit all possible places
It’s simply physically impossible for one game.
Curiosity will push the player
go through the game over and over again, building each
once a new route.
- Random content generation. This
The topic is worth a separate article. I'll just cite
several popular games with random ge─
nerations of the world, which can be played very
long: Diablo, Rogue (and similar), Binding
of Isaac, Minecraft. In general, you understand.
- Various “goodies” that open─
are available after completing the game. The Japanese, for example─
measures, they really like to open additional
costumes for game characters, give new games─
new modes, etc. In the same Binding of Isaac
with each new playthrough the game becomes─
there is more, new pred─
metas, monsters, stylesenvironment, etc. And in
Traveler's popular LEGO series
In general, the main goal of the player is not to complete Tales
game, and reveal all the secrets, characters,
items, etc. As a result, playing time
increases tenfold.
(about Evo SDK, see the next article)
Share your thoughts about the article