How to create a big game by yourself. The best programs for creating games

  • 14.10.2019

What do you do when you're playing a game and you can't get past the same place multiple times? You can just find something already ready passing. This is great, of course, but what if you're stuck in development games? Which guide should I read? So let our article become your step-by-step guide to developing your first game, if you have not yet started writing one. If you have already started, then it still won’t hurt you to read our tips - maybe you will see something new.

Before we begin, we want to give you an example of the first game from the author of this article. It was a simple text game called Divine Blood:

This was the very first game, and programmed for the TI-83 Plus calculator. It was later rewritten by the author in Java while studying in high school. It is noteworthy that the game was never finished.

Unfortunately for everyone, not bringing games to their logical conclusion is one of the most common problems of novice developers. Accordingly, the question arises: how to increase your productivity and still finish the project you started? The answer is simple: read our "walkthrough" of the game's development.

Main stages

If you are developing a game yourself (and novice programmers usually write alone), then the writing process can be divided into 4 main stages (or levels, as in games):

  • planning;
  • prototyping;
  • programming;
  • release.

Each next level in the video game is more difficult than the previous one. Everything is the same here: each next stage has its own difficulties and problems that you will inevitably encounter. This step-by-step guide will help you never stop at any stage of game development. We will present various quotes and opinions of professionals who have completely traveled the path that we are just beginning.

In games, each level has its own problem areas, and at the end there is also a boss. It will be the same with us. We'll go over them in more detail and, as with any walkthrough, we'll show you how to get through these places and move on.

Level 1: Planning

Remember, once you've done 90% of the game, you think you've spent 90% of your time. And by finishing the remaining 10%, you spend the same amount of the “remaining” 90% of the time. Make your plan with this in mind. - Jan Schreiber

The first and at the same time the most important level of development is planning. At this stage, you must plan all your activities and consider all aspects of your game. The goal of this level is to think things through so thoroughly that you don't have to improvise the rest of the way.

As soon as you decide to develop something, first of all, take out a notebook, a pen and start writing your ideas. Go into as much detail as possible, this will help you in the future. Write everything you would like to see in your game. The whole point here is that at first it’s quite easy to do this: the project has not yet grown, and everything is in plain sight. But the more you develop a game, the more difficult it will be to start writing your ideas and take them into account later.

As mentioned above, pay attention to detail. Recorded a new feature for implementation? Note next to how it will work, how it will affect the player and directly on the gameplay. And remember, the secret to successful development is to solve existing problems before they accumulate.

Game development is a compromise. A high-quality game should not be able to do everything, but only a limited set of functions that work well. - Patrick Wyeth

This is why it is important to plan everything, otherwise at the development stage (level 3) you will want to add more features to the game and start implementing everything, which is absolutely wrong. Your project runs the risk of being too big, making it more difficult for you to control, and soon you will throw it into the back drawer in the hope that you will take it up later. If you've played the Halo series, imagine how difficult it would be to play the game if you were faced with a couple of hunters right after starting the game. You will simply die again and again until you get tired of this series of deaths. In game development everything is similar.

The main problem of the first stage is to dull your desire to code and start planning. You can always write code; for this you will have a whole stage. Plan as many aspects of your game as possible.

And the boss of this level is questions. Look at all your notes and make sure that you do not have any unclear points: neither in the tools used, nor in the algorithms, etc. If you really have all your questions resolved, then you can safely consider that the “Planning” level is completed. But if there are still unclear aspects, solve them before moving on.

Of course, you may have questions regarding, for example, game balance. In such cases, you are also ready to move on, since this problem will need to be solved in the second and third stages of game development.

Level 2: Prototyping

Design is a process, not a result. - Christopher Simmons

The second level of our game development is prototyping. This is where you should check and test the core mechanics and features of your game. We said above that at the previous stage questions may arise regarding the balance. The second level is precisely what is needed in order to polish this parameter.

At this stage, you will write code that is not very beautiful and not entirely correct. This is par for the course since you are writing a prototype. When you move on, you will already know what and where is not working as it should.

If you enjoy a game, you will want to play it again, no matter how many points or money you get there. - Stan Jarocki

Despite the fact that we have highlighted this stage separately, in some cases it can be skipped, since it has a lot in common with planning. You may think that we are not constant in our judgments: quite recently we urged you not to move to the next level until you have completed the current one, but now we are saying that you can skip the prototyping stage.

Do you remember the secret teleporters in Super Mario Bros? The player could find well-hidden pipes, jumping into which could skip several levels. So it is here. True, we do not completely skip prototyping, but combine it with planning.

We would like to note that the first two stages are interchangeable. Perhaps you want to test out the core mechanics of your game before you spend a ton of time on the details? Or maybe you want to try out some feature in your game? These are the main reasons why it makes sense to reverse the order of the first two steps.

A good game is a stream of interesting problems solved by the player. - Bruce Shelley

At this stage, you may encounter two main difficulties. The first is the desire to finally move on to the next stage and start writing code. As we said above, you should be as ready as possible to move to the next level, and therefore do not rush. The second difficulty is the desire to create a more accurate and complete prototype. This is definitely not worth doing, since a prototype, by definition, should not be a finished product.

And the boss of this level is fatness. You must put together all the developments of the first and second stages and understand what you should get in the end. If you have a good idea of ​​your final project, then you will definitely not have any problems when writing code. And therefore, the chances of finishing the game will increase.

Level 3: Programming

The third level is the most difficult level for beginner programmers. Having reached it, many abandon their project. But there is nothing to be afraid of here! The first two stages have been completed and you are already halfway to completing the development.

To begin this stage, you should decide on the target platform of your game. Will this game be for consoles, or maybe mobile or even browser-based? Having decided on the platform, select the necessary tools and programming language.

In fact, these two steps can be done in reverse order. Given a development environment (or programming language), you can analyze its capabilities and decide what you can write.

You will make your life a lot easier if you use free libraries and resources. Don't try to reinvent the wheel: use what is freely available. This will help you save some energy for finishing the project.

“I can’t draw” - use clipart. “I don’t know how to create sounds” - look for MIDI files. “I don’t know how to program” - no one cares, don’t program! - Rob

The main unpleasant moments at this stage are emerging problems and disappointment. You will repeatedly come across moments when you don't know how to solve the current problem. Moreover, it is quite possible that your game at some stage of development will not live up to your expectations.

But you shouldn't be discouraged! The best solution to these problems is to take a few days away from the project. You will clear your mind and allow new ideas to enter your mind. It has also been repeatedly noted that “the morning is wiser than the evening.” Stuck? Do not know how to solve the problem? Go to bed, and tomorrow morning you may immediately understand the reason for your failures. Don't work until you're exhausted and don't exhaust yourself: working on the project should be fun.

If you're trying and can't solve a really difficult problem, stop. Solve a simpler problem that does the same thing as the complex one. - Daniel Cook

Well, the boss of this level is the game itself. Yes, the game you write. It doesn't have to be perfect, but it has to be complete. One that people could and would want to play.

Level 4: Release

Never give up. - Alice Taylor

Finally we got to the release. Of course, this level is not as difficult as the previous one, but you shouldn’t take it lightly. At this stage, you must convince people to play your game and give you feedback (you want to improve your project?). Based on player feedback, make changes to your app that you think will make the game more fun.

The main problem of this stage is criticism. There will always be those who simply don't like your game. This is fine. Don't give up because of people like this. Focus better on those who play your application and suggest you add new features to it.

When starting to create a game, don't look at the results of others. Create what you want. - Rob

And the final boss of our entire journey will be your pride. You've made a complete game from start to finish! In fact, not everyone can boast of this.

Every developer will write a “bad” game at some point. If you haven't written yet, write. We will write everything. - Brenda Romero

And remember, the road to success is paved with repeated failures. Never give up!

Conclusion

Developing your first game is an exciting activity that gives us invaluable experience. And yet, many developers cannot complete their project, although this is absolutely not the case. By following our four "levels" of game development, you will increase your chances of bringing your project to its logical conclusion.

Now get together and write your game!

Come up with a plot and idea for the game you want to create. Whether it's an adventure game, a race or fighting options, it's up to you to decide. You should understand that creating a game is a tedious and time-consuming process. Without certain knowledge you will not be able to create a game. It is necessary to learn the basics of programming languages, scripting languages, and modeling.

Choose the format for creating the game - 2D or 3D. 2D is easier than 3D: they do not load the computer, and the required number of programs needed to create a game is reduced to a minimum. But even to create 2D games you need to be good at drawing. If you don’t know how to draw, you can use ready-made templates for locations, characters, etc.

One of the advantages of 3D games can be called beauty and entertainment, but it requires sacrifice, so the disadvantages immediately become visible. You will need knowledge of various programming languages. This is the most difficult part of creating a 3D game. The more complex the game is supposed to be, the more complex the languages. There are a huge number of them and they take a very long time to become known. When learning one language you will be faced with the need to know another. And so on increasingly. Another obvious disadvantage is that powerful computers are required. There is no need to draw here, but you need to learn to work in modeling programs, but this is no easier than drawing and you can’t do it without imagination.

There are special designers for creating games. From the ready-made parts that are given to you in the designer, you gradually create your own game. They are suitable for both 3D games and 2D games. If you don’t have enough ready-made parts, you can add your own and use them. To make something move, you will need to assign actions to objects using ready-made logical operations. If there is a lack of standard actions, scripting languages ​​will come to the rescue. There are constructors that include common programming languages, they are more functional, but their work is more difficult to understand. Designers are usually divided by genre, but there are also general ones that are suitable for creating games of various genres.

Creation of a computer games- a complex process, the most important part of which is design. You must first create a plan games, script, plot, choose a suitable programming language, consider the possibility of technical implementation of the given. There is no one way to write games, since its creation is a creative process.

Instructions

Work out the theme and genre of the future games. First you need to create an idea and formalize it. Create future heroes, think through the plot, each of its components. Compile all the collected data into one project design document, which will contain information about both the story and gameplay.

Select the programming language in which the project will be implemented. It should be one of the languages ​​that you are fluent in. Depending on the scale games, the peculiarities of the language should be taken into account. For example, many modern games are written in C++, but there are many other languages ​​that can be written. For example, Delphi, which is one of the best in terms of working with objects.

Select the engine on which the game project will be built. The engine is a control system responsible for displaying graphic elements, defining functions, controlling sound, etc. It is directly linked to the graphical application programming interface (API). If you are going to use a ready-made engine, you should think about the project, since purchasing program code, 3D, graphic and audio editors can cost a significant amount.

To write serious projects, you need to recruit a team that will consist of a 3D modeler, a graphic editor, a designer, a layout designer and a musician. The number of required specialized specialists depends on the complexity of the project.

Having created a plan and chosen an engine, you can begin the technical implementation of your plan. Break the work into stages, write the game gradually, implementing the main functionality first, and then creating more and more new features. Don’t be afraid to rewrite code that has already been created, but not entirely correctly written, even if there are already thousands of lines of it. Try to create the most efficient code possible.

Video on the topic

When teaching children and adolescents, it is important to instill in them logical thinking skills. Such skills will help in the future to explain abstract concepts, substantiate the phenomena of reality and competently defend one’s own point of view. The joint participation of children and adults in logic games will allow them to find better mutual understanding and simply bring many joyful moments.

You will need

  • - developed creative imagination.

Instructions

To understand the principles of constructing logic games, read the development manuals. Today there are a number of books that cover in detail the playful side of the learning process. It is best if you manage to read one of the collections of similar games, equipped with specific examples and practical recommendations.

Enter the necessary restrictions by defining the age limits for the participants in the game being created. Requirements for its logical structure and content will depend on how mature the players are. For children, it is undesirable to include in the play objects too abstract concepts that have no analogues in the surrounding material world.

Determine the direction of the future game. Among logic games, the most interesting and exciting are those that are aimed at developing ingenuity and intelligence. They allow participants to demonstrate speed of thinking while developing the ability to make correct judgments. Games of ingenuity are good when it is necessary to switch the child to another type of activity.

For example, consider a logic game conventionally called “Chain of Words”. According to the rules, participants sit in a circle, after which one of them names any word. The neighboring participant must immediately say a word starting with the last letter of the previous one, after which all players in a circle are included in the game sequentially. Set a rule that you cannot repeat previously spoken words. The advantage of such a gaming exercise is that it does not require any additional materials.

Take the structure of the described game as a basis, slightly modifying the task and introducing additional time restrictions. For example, it is allowed to name only the names of animate objects; For each mistake a penalty point is awarded; the one who finds it difficult to name the right word drops out of the game and so on. In this simple way, you can get several new logic games while maintaining interest in them on the part of the participants.

Sources:

  • “Logic games for children”, T.N. Obraztsova, 2010.
  • “The best active and logical games for children from 5 to 10 years old”, E.A. Boyko, 2008.
  • "Didactics. Logic train. Games for children 2-5 years old”, T.A. Barchan, 2003.

A fence in Minecraft is used to create pens for pets and to decorate the surrounding area. It's very easy to make if you have at least some wood.

Wood is the very first thing you need to get in the game.

Wood in Minecraft is obtained from the trunks of various trees. There are six types of wood, all of which have the same properties, although the appearance of the blocks of different species differs.

To get a block of wood, go to the nearest tree, click on the left mouse button, aiming at the tree trunk. Do not release the button until you get the desired block. Get as much wood as possible, you will need it not only to obtain, but also to create most of the necessary tools. In addition, you can craft planks from wood, from which you can easily build your first shelter from monsters.


Fence can be used instead of glass to create windows if there is no sand nearby or you are low on fuel. The fence allows light to pass through, but does not allow aggressive monsters or...

Once you have collected enough wood, open your inventory window. Place two or three mined blocks (the rest may be needed to create charcoal or decorate a future home) into one of the crafting or crafting slots that are located to the right of your character's schematic image, this will give you boards. There will be four times more of them than wood blocks.

Recipe for creating a fence in minecraft

To create a fence, you will need a workbench. This is a work surface with a 3x3 crafting area, which allows you to assemble most of the tools and items on it. To create a workbench, open the inventory window again and fill all available crafting slots with boards. Take the workbench and place it on a suitable horizontal surface.

The fence is created from sticks. Sticks can be made at any time from planks by placing two planks on top of each other in the crafting area of ​​a workbench or in the inventory window. Two boards make four sticks. To create a fence you will need six sticks. They need to be placed on the workbench so as to fill the bottom two horizontal lines of the crafting area.


With the help of a fence, players often fence off farms to protect them from trampling by animals and monsters. The ability to install torches on the fence allows you to sufficiently illuminate the crops being grown.

There is a special type of door for a fence. To make a gate or wicket, in the fence design, replace the two center poles with blocks of boards. Gates make interacting with livestock much easier.

The pickaxe is the main tool and main symbol of the Minecraft game. Without it, cave exploration and mining are impossible. The pickaxe is one of those things that you need to make at the very beginning.

What do you need for a pickaxe?

Any tool or weapon in Minecraft can be made from different types of materials. At the first stage, the most accessible resource is wood, since trees grow on any type of terrain (except desert) and are easily “disassembled”. Wood can be used to make sticks and boards. This is enough to create the first, most important tools.

After appearing in the game world, head to the nearest cluster of trees, but do not go far from the spawn point or try to remember the landmarks. Approaching the tree, start extracting wood by holding down the left mouse button. You can mine resources within a radius of three blocks. Get at least ten units of wood. Part of it will be used to create a pickaxe and other tools, the rest can be used to obtain coal, which is needed to illuminate the space and protect against monsters.

After collecting the wood, open the character window. Next to the image of your hero there is a crafting window (creating items) measuring 2x2. This is not enough to create a pickaxe, but here you can make a workbench, which is used for crafting most items. Place half of the extracted wood in one of the cells, this will allow you to get boards. One unit of wood produces four boards. Planks are excellent raw materials for creating the first tools and fuel for the furnace. In the same crafting window, place two planks on top of each other, this will give you sticks. Now fill all four cells with boards, the result should be a workbench.

You can make an ax from boards and sticks, which will significantly speed up the extraction of wood.

Pickaxe - minecraft symbol

Take the workbench in your hand and place it on the surface by pressing the right mouse button. Right-click on the workbench again to open its interface. An active crafting field measuring 3x3 will appear in front of you. This is enough to create absolutely any items in the game. Fill the top horizontal line with boards (you should need three pieces), and place sticks along the central vertical line as handles. As a result, you will receive a pickaxe.

A wooden pickaxe is not durable, and not all types of resources can be obtained with its help. Once you have this tool, head to the nearest mountain or simply remove a couple of nearby blocks of dirt or sand to gain access to the stone. Use a pickaxe to mine three cobblestones and craft a new tool at the workbench.

Coal is the first resource that needs to be mined, since it is from it that the torches important for life are created.

A stone pickaxe is much stronger than a wooden one; it can mine almost all types of resources except emeralds, gold and red dust, which is not important in the early stages of the game. When setting out to explore the world, take three or four pickaxes with you, so as not to suddenly be left without your main tool.

The virtual world is increasingly becoming three-dimensional. Every software company that respects itself and the user strives to make its products in 3-D. The popularity of this visual display medium is so great that many people want to master the intricacies of 3D design on their own. And there are special programs for this.

A lot of programs have been created for 3D modeling. Some are for complete beginners in this field, others are more suitable for professional designers. The user can easily get confused in all the variety of proposals, so only the three most popular 3D construction products are offered to the reader, which anyone can understand if they wish.

3D Studio MAX

The program is currently called Autodesk 3ds Max. The project started back in 1990, when the most daring experimenters were just beginning to think about 3D modeling.

Often, special software is created for game or film projects, aimed at solving specific problems.

The package was developed by the Yost Group studio and the first four versions were released for DOS. For those who don’t remember the “pre-window” times, this is a command line operating system - the grandmother of modern OSes. Since 1994, the package began to be released for Windows.

Using the package, you can create videos, engage in architectural modeling, and bring computer game characters to life. For example, many of Blizzard's video games for Warcraft and Starcraft used 3D-Max capabilities. The product was also used to create models in these games.

Autodesk Maya

If anyone ever thinks about what product in 3D modeling can be considered the de facto standard, then it is Maya. At one time she made her mark in the world of three-dimensional graphics in film and television. The product had a rather complicated history. It officially appeared only in 2006, but before that there were various corporate mergers and reshuffles in the business segment, which in one way or another affected the project.

However, it has survived and is now actively used by many professionals and enthusiasts around the world. The list of famous cartoons and those created with its help alone deserves respect:

The image of Gollum in The Lord of the Rings
- mouse from the comedy “Stuart Little”
- "South Park".
- The Matrix trilogy
- spider man 2
- gold

And this is just the beginning, because it’s simply not possible to cover everything.

Cinema 4D

Judging by the name, the program is capable of creating four-dimensional space. However, as you know, the fourth is time. Hence the essence of the software package is to create three-dimensional objects that change over time. And here many can already guess that we're talking about about computer animation.

At the beginning, all 3D modeling programs seem complicated, but once you understand the basic principles, everything becomes easier.

And in fact, today the project represents serious competition to the two products described above. It is more convenient, has a simpler interface, and is easier to learn even for a beginner.

It first appeared on the Amiga computer in the early nineties of the last century. The first versions of the software were only for this machine. Maxon was then able to port it to other platforms.

It is impossible to list all the projects where the program was used. It is actively used to create animation. And among the most famous projects is Beowulf.

Video on the topic

Sources:

  • Interesting programs for beginners in 2019

Games of this kind do not require money and greatly delight the child. Having fun in this way, your child will not only lift his and your mood, but will also develop intellectually.

What's the most popular game? Surely, you remember it from childhood - this is “Soroka-Soroka”. When your parents played it with you, they weren't just thinking about your entertainment. The fact is that games of this kind stimulate the brain activity of children, help develop speech and unleash their creative potential. Finger games were invented in the distant past. For example, in Japan, children developed their fingers with the help of walnuts.


What are the benefits of finger games? Everything in our body is interconnected, let alone a child’s body, in which the main center - the brain - is located very close to the hands and fingers. Fine motor skills develop areas of the brain that are responsible for speech.


Children often face the problem that they, like a dog, understand everything, but cannot say anything. This is due to the fact that one hemisphere is responsible for creating pictures, images, and the other for speech. It is necessary to find a balance - finger games have no equal here!


Finger games for children need to be selected according to age - this is important. Remember that the main goal of such games is to help in development, there is no need to rush. You can start playing finger games almost from birth. The best age is from 3 months to 6 years.

Video on the topic

Money is material assets that give us more opportunities to live better. There's no arguing with that. So what should you do to earn more money to live on?

You always get what you earn

Some people feel like they are worth much more than they are paid. If you are one of this number of those unfairly offended, then take care of a job that will pay higher. After all, no one will look for a better job for you. The more you depend on others, the less you depend on yourself. Take control of your income. Those who give this power to other hands always play the role of a victim in society and, accordingly, do not earn enough.

You can only win the game when you understand its rules

Consider all areas of society as a large market, where all people are your equal partners, and each situation is an opportunity provided by the market to improve your financial well-being.
The rules of today's game are set by the market, and they are the same for everyone. Anyone who does not know the rules of the game has practically no chance of success. The main principle of any market is that the exchange must be truly mutually beneficial.

There is no rule that limits your income!

All the rules that limit your income today are invented by people themselves, and they can also change them. The value of your workforce is subjective; no one will give an objective assessment of your work, neither the boss nor the performer. You just need to raise your own criteria for evaluating your work and create the necessary conditions for increasing your earnings yourself.
Your income is assessed in three ways: your boss’s assessment, your own assessment, and your ability to negotiate.

You won't get a salary increase by other methods just like that - earn it! If you work in a team, the question is how indispensable you are in the team. Your task is to make your boss understand your irreplaceability, and this largely depends on how you negotiate with him.
If you work for yourself, then the question is how indispensable your products are to society. The task is to get your value noticed by this society. And it also depends on how well you negotiate with him.

Video on the topic

Helpful advice

The five rules given should provide a starting point for your thinking.
These rules are based on three important prerequisites for success:
1. self-confidence;
2. the ability to take responsibility;
3. ability to act.
These are the skills you need to work on.

The first thing we need is to decide on our goal. What do we ultimately want to get? If you want your game to work, you first need to aim more accurately and not hit at random.

The concept and goal definition stage is handled by project Manager.


Genre

You can imagine your finished game in great detail from the very beginning, or you can think out the plot, style, and features of the game as development progresses. In this matter, excessive precision is not necessary, but at a minimum, we need to set the direction for the development of our game project. The genre of the game must be chosen at the very beginning without fail. The genre will be the main direction of the game's development.

We look at the round table of genres as a target, and select the gameplay elements we need (more information about the table of genres can be found in the article “ Computer game genres"). Some elements will give us high popularity among players (destruction, competition, hero, care), some will give us loyal but picky fans (tactics, control, evasion), and some will give us the absence of serious competitors (training, logic, travel, economics).

The chosen genre can be slightly adjusted as work progresses, but its essence should remain the same. Genre is a kind of foundation for the entire game. If you want to change the genre of your game, it will be easier to start developing a new game all over again than to remake what has already been developed.


Setting


The division of computer games into genres is very specific and is not similar to the system of genres of films and books. Game genres determine only the basic actions that players will perform during the game, thereby answering only the question “WHAT?” To the questions "WHERE?" and when?" Another main characteristic of the game is the setting.

Setting is the game’s belonging to a certain plot theme or to a specific virtual world. Several of the most popular settings have emerged among computer games: fantasy, science fiction (sci-fi), World War II, the Middle Ages, steampunk, post-nuclear world, anime, comics.

Creating a game in a popular setting ensures its own popularity, and players feel cozy and comfortable in an already familiar world. Some games are created in their own unique settings or in unusual combinations of standard themes. Such games are less popular, but, nevertheless, they have their own audience of special players who cannot stand stereotypes and monotony.

2. Remedy

The goal of the game project has been set, now we need to choose the means (materials and tools) to achieve it. And here we are faced with an unusual phenomenon of the computer world - both the material and the tool of the game project are the same entity - program code. Code as a building material is digital images, three-dimensional models, sounds and texts in the form of sequences of ones and zeros. Code as a tool is commands in lines of program code that control game objects of all listed types.


Creating game material (filling, content) is a purely creative part of the process, we’ll look at it a little later, but for now let’s look at the program code only as a tool. In this case, the program code is a framework (skeleton) on which the results of all subsequent stages of development will be strung.

This stage is carried out programmers.

First of all, we must choose the programming language that suits us best. After this, there will be hard and painstaking work on writing program code that can operate with two-dimensional or three-dimensional objects in space, linking images and sounds. To create a virtual three-dimensional space, you will have to use complex geometric formulas to construct a projection of 3D objects onto a plane (in the mind of a computer, objects exist in real three-dimensional space, but to display their image on a flat two-dimensional screen, you have to make recalculations). As development progresses, you will have to study all image and audio file formats, all kinds of codecs and encodings.


The use of game engines does not completely free us from using the services of programmers, but it reduces them to a minimum. You still have to customize the standard software module and add something of your own to it to make the game project more unique.

3. Game mechanics


The most important creative part of any game is the game mechanics. This thing is not on the surface, so it often escapes the attention of inattentive game connoisseurs.

Young teenagers (the main part of the gaming audience) mostly evaluate games based on the quality of graphics, and do not notice that although beautiful games are popular, their popularity lasts only a few months after release. And in the hearts of players and in the golden lists of eternal gaming classics, completely different games remain forever, perhaps a little unsightly in appearance, but with amazingly exciting gameplay. The more varied and interesting the gaming options, the longer the player stays in the game. For example, why did Minecraft receive universal love? Certainly not for the primitive cubic graphics, but for the fact that this game gives truly limitless gaming possibilities.

If you imagine the game in the form of a living organism, then the game mechanics will be its nervous system and brain. And if you imagine the game in the form of a house under construction, then the game mechanics will appear as electrical wiring, pipelines and other household utilities. Imagine what happens to beautiful and fashionable, but not well-thought-out games from this point of view: you can live in a beautiful house, but if it does not have lighting, running water and sewerage, then at the first opportunity you will leave it in search of more comfortable housing.

Game mechanics, at their core, are a set of rules by which the game will function. What action will happen if the player takes this bonus? If the player comes into contact with an enemy, what will happen then? Will he lose health from this contact, or will this only happen after being hit by an enemy? If a player approaches a car, will he be able to get in and ride? Will the player be able to build anything or at least move objects? There may be several hundred or even thousands of such questions. The answers to all these questions will constitute the game mechanics.


Objects

The basis of all mechanics are game objects. The main character of the game, computer opponents, secondary characters (NPCs), bonuses, moving objects, decorations - all these are game objects with their own properties and possible actions.


Control

Game mechanics determine which keys the main character or the main game object will control, what action will occur after pressing a particular button. This also includes the laws of behavior of game objects (physics engine) and the behavior of enemies (artificial intelligence).


Physics engine


If “control” is responsible for moving the character under our control, then the physics engine is responsible for those movements that occur without the direct intervention of the player. These actions imitate the physical laws of the real world (sometimes slightly distorted towards fantasy). A thrown ball bounces off the floor, an overturned barrel rolls down an inclined surface, a shot from a powerful weapon throws the shooter back, a fragile object thrown from a height breaks - all these are examples of the action of the physics engine.

In ready-made game engines, physics engines are most often implemented. All you have to do is assign ready-made physical characteristics to your unique objects: weight, density, elasticity, destructibility. If you decide to create your own physics engine, then for this you will need a talented programmer who has a good understanding of the principles of object-oriented programming (OOP) and a little knowledge of classical physics.


Artificial Intelligence (AI)

AI is responsible for the behavior of computer enemies or allies.

The role of AI varies significantly depending on the game genre. In action games, enemy actions are extremely primitive; in RTS strategies, a couple of dozen scripts are enough to give the opponent seeming intelligence; In stealth action games, slashers and fighting games, it is necessary to create a unique behavior system for each type of enemy, otherwise stupid enemies will make the game uninteresting. A serious strategy game requires enormous work on AI, but in simple casual games and online projects focused on battles only between real players, artificial intelligence is not needed at all.

4. Levels


The rules of the game in the form of game mechanics are ready, now we need to create platforms where these rules will begin to work. The created game objects are placed in separate virtual spaces – levels (locations). Games most often contain many separate levels, the transition between which occurs as the story progresses. But recently, thanks to the increased performance of computers, games are being released with one large, integral world, only conditionally divided into different locations (GTA, Skyrim).

At each individual level, game objects, walls, platforms, decorations, and backgrounds are placed. Levels are created in games of all genres. Even in a simple casual game of rearranging colored pebbles, there are levels - their role is played by the playing fields and the placement of stones. In browser games, individual html pages act as locations.

If, again, we imagine the game in the form of a house, then the construction of game levels is the layout of the floors, and the number of levels is the number of storeys of the building.

They are building levels level designers.

Ideally, level designers are taken from among avid gamers. This happens because any other person from the outside, even if creative, but very far from the topic of games, will not be able to cope with this task well. The level designer must have a good understanding of the gameplay, and feel how the game situation will change from moving objects on the level.



Quite often, a game comes with a level editor, with which ordinary players can independently create new maps and levels for themselves. Game developers support the distribution of homemade maps among players and often post the best works on their official servers. Level editors are created not only to entertain players and increase the lifespan of a particular game, but also to find the most talented people among the gaming audience. Thus, game studios solve their personnel problem. As mentioned above: the best level designer is an avid player.

The most important component of the game – the gameplay – depends on the design (not the design, but the layout) of the levels. (This rule does not apply only to most casual games, fighting games and sports games, where the levels are extremely primitive). Uninteresting and monotonous level layouts have ruined many games with great designs backed by the latest technology. If you want to create a full-fledged, exciting game, and not a dummy in a beautiful wrapper, then you need to spend maximum creative effort on level design.

5. Design


They create graphics artists, game designers.

Of course, if you are developing a simple 2D game, then you can draw something from pixels yourself, but in more serious and large projects it is better to hire professional artists and designers.


Arts

First you need to create images of heroes, enemies, game objects, backgrounds. They are initially drawn either on paper or on a computer using a graphics tablet. For small game studios, this stage is not necessary, but it is simply necessary in large companies in order to explain to all designers, not with fingers, but with visual images, what they should end up with.


2D, 3D models

Based on art, designers create either 2D sprites from pixels or 3D models from polygons.



Animations

Animations are created for game objects that will move during the game. It will be especially difficult with heroes and enemies, the number of animations of which sometimes exceeds a hundred different movements.

Currently, to create humanoid 3D characters, there is a special technology called “Motion Capture”, which allows you to create animations based on the movements of real people. This technology is available only to large and very rich companies. To use Motion Capture, you not only need to purchase expensive equipment, but also hire a group of actors from whom movements will be recorded.


Backgrounds

With backgrounds, everything is much simpler - I drew it once, put it in the right place on the level without any changes, and forgot.


Special effects

Visual special effects are essentially the same as animations, but instead of moving objects, they use moving particles and light filters. Beams of light in different directions when taking bonuses, fire on a burning building, a smoke screen after a grenade explosion, laser beams from the barrel of rifles, the application of blur filters when underwater and darkening filters in poorly lit places - all these are special effects. Without such effects, the game will seem bland and too ordinary. The use of special effects adds brightness, richness and expressiveness to the game.



Screen and menu design

It is necessary to design not only the game levels, but also the system that unites them into a single whole - the game menu (lines, buttons, settings pages). The initial menu is generally the calling card of the game, and it should look perfect. The game screen also has many elements to which you can apply design - the number of lives, lifebar, minimap, quick action menu, hero's inventory, task lists, dialogue screens. In English, all this is called one abbreviation - GUI (Graphical User Interface - graphical user interface).

The interface and menu are designed artists, programmers And HTML page layout designers. (Site site)

6. Plot


It is very difficult to attract a player to your project, but it is even more difficult to make the player complete the game to the end. Any frustrating, boring or difficult passage can instantly turn a player off from further playing. In most cases, the player will leave and forget the game without any regret. And only a well-presented, high-quality plot can force the player to gather his strength, complete the entire game, and therefore listen to your interactive story to the end.

At the dawn of their existence, computer games did without a plot, drawing players in only with their gameplay. But nowadays, even the simplest casual game has a plot attached to it, not to mention large AAA game projects.

Although the existence of a plot in the game just for show does not give any positive effect, the developers continue to come up with more and more new stories, one more stupid than the other. A story is only useful if it can engage the player's emotions. This requires a unique, interesting and believable plot; each character must have his own unique personality and act according to it; there should be no more characters and events than the human brain can perceive, otherwise the plot will turn into an incomprehensible vinaigrette; events should occur logically (mystery and vagueness are welcomed to maintain plot intrigue, but there should also be a logic hidden from the player).


Scripts, events

The best option is when the plot exists right inside the game. This is achieved through the use of scripted scenes.

The script is the following: the player enters a certain place, or performs the desired action, or some other necessary conditions are met, and after that the actions that you have programmed for this case begin to be performed. For example, in a military 3D shooter we rise to a hill, approach an installed machine gun (the condition is met), 10-15 seconds after that, a massive enemy attack suddenly begins below, and we have someone to use the machine gun on (events have occurred).

With the help of scripted events, you can add variety to the gameplay or even turn the game into an attraction of endless scripts (this is what the Call of Duty series of games is built on). The only disadvantage of this method is that the player’s freedom of action is reduced. Everything happens at the will of the scripts, and depends little on the player’s actions.

They are thinking through scripts screenwriters, and their implementation – programmers.


Dialogues, narrations


In old classic games, the story exists separately from the gameplay. For example, when loading or finishing levels, we are introduced to the plot story, told about the relationship between heroes and enemies, and explained what needs to be done at the level and why. During the game itself, none of the above has any meaning, and the player can safely skip all these texts. Most often this is what happens - texts remain unread. And all because there is no good reason to read them.

Another thing is in-game texts or dialogues. They occur during the game, but in safe places, or with game time stopped so that the player can focus only on the text. The player has to listen to the narration, since the game freezes for this time, but does not stop completely. And in dialogues you also need to choose an answer option. Choosing an option gives interactivity and at least some practical meaning to listening to the text - the correctly chosen answer can bring an additional bonus, make further play easier, or preserve the chosen character of the hero in role-playing games.

When creating a game, it is better to store the texts of narratives and dialogues in separate files that are loaded during the game. Separating the artistic text from the technical codes will help in the future if you decide to create a localized version of the game in other languages ​​​​of the world.

Writing texts and dialogues screenwriters And writers.



Video inserts

Between levels of the game or at certain checkpoints of levels, instead of dry text and voice acting, you can show video inserts (cutscenes) to players. Such screensavers can be created either using separate video files or using a game engine.

Video files allow you to transmit a picture of any quality and complexity to the player, but when creating a game distribution, they take up a lot of disk space. Screensavers created on the game engine are almost as good in quality as pre-rendered videos, but to view them well, the player must have a fairly powerful computer, which is not always the case in reality.

They create video inserts artists, animators, 3D modelers, screenwriters, directors.

7. Sound

A beautifully drawn and impressively designed project silently looks at us and waits for us to add sound to it. This is another important component of the game.


Sound effects


For any small game movement you need to add an appropriate sound. This could be sword strikes, a melee strike, the sounds of a car moving, receiving a bonus, or the hero being detected by an enemy. Don't think that this is some kind of excess, and you can get by with just a few basic sounds. For example, most 3D Action games neglect to add footstep sounds for the protagonist and enemies. As a result, when viewed from the first person, you can see that the hero is moving in space, but it seems that he is not walking, but smoothly sliding forward. And enemies without voiceover of their steps can completely silently run up to the hero from behind and greatly spoil the nerves of the players.

Good sound effects not only fill the silence, but also serve as an extension of the game's graphical style. A cheerful arcade game is filled with no less cheerful melodic sounds, a sports car simulator is filled with the rumbling roar of engines and the clanging of brakes, a three-dimensional action movie is deafening with machine-gun fire, falling shell casings and clicking rifle bolts.

Most often, real sounds recorded digitally are used as sound effects. There are many free collections of sound effects on the Internet, you just need to find them and choose the ones that suit you best.


Music


In addition to sounds, for a full-fledged game you also need music (soundtrack). It will be the sound background for what is happening on the screen. Music is also one of the stylistic elements of the game, and has the greatest influence on the player’s mood. It takes a long time to select finished music according to the appropriate tempo and mood. There are many paid and free collections of game background tracks that you can use in your game (article " Music for creating games"). Or you can order composers to write new music specifically for the game.


Voice acting

The third sound element of the game is the voice acting of game dialogues and monologues. This component is very expensive, but its presence in the game is not necessary. Some games have almost no dialogue or text, and where there is, they can be left unvoiced in the form of text subtitles. Small games do without voice acting at all, and in large projects they even invite world-famous professional actors to do voice acting.


The presence of music and full-fledged voice acting in the game significantly increases the volume of the finished game occupied on the hard drive. But if possible, it is better to still add voice acting to the game. This will increase the player's involvement in the plot and the story you are telling, since most players ignore and do not read regular unvoiced texts at all.

8. Sanding


The process of developing a large game is structured in such a way that different specialists work on its different elements. At the initial stage, the game is a disparate set of creative developments in various fields of art: images, sounds, 3D models, architecture, texts, scenes, video inserts, design. And finally, the moment comes when the scattered stones need to be collected. With the help of software, disparate objects are connected into a single complex system.


Mixing of material (a-version)

When building a game on a game engine, the merging of objects occurs gradually from the very beginning of the process. Until the game is completed, it is called the alpha version. At this point, you can already start testing individual levels, scripts and other mechanisms.

At this stage, it is already technically possible to release a demo version or at least a video with gameplay in order to attract players to your project in advance.


Troubleshooting (b-version)

When the game is completely assembled, all that remains is to eliminate the resulting bugs. They appear in any case, since the game is a system with a complex structure. The game elements themselves are clear and simple, but the connections between them are so complex and ornate that the process of debugging and eliminating errors can take up to 40% of the entire project development time. A fully assembled game, but not yet tested for errors, is called a beta version.

They are looking for bugs in the game testers. Very often, groups of ordinary players are involved as testers, and this serves as the beginning of their career in the gaming industry. The easiest way to solve this problem is in online games - developers organize open beta tests, in which all interested players participate.

9. Sale


The creation of the game and all creative issues are handled by the development studio, and all other issues (loans, finances, contracts, rights protection, promotions, localization, sales) are usually transferred to the shoulders of another organization - the game publisher.

The relationship between developers and publishers can be very different: an agreement on cooperation on equal terms; all rights, financial risks and possible profits belong to the publisher, and the developers only receive their small percentage of the profits; all rights belong to the developers, the publishing house is a separate company temporarily hired by the developers; developers and publishing house are different divisions of one large corporation.


Before selling a game to the end user, publishers first need to communicate the game's existence. Of course, they can buy a game without knowing anything about it, simply choosing it at random in the store, but the chance that they will choose your game in this way is extremely low. It is much more profitable to spread information about the game through all possible channels. To do this, they use either advertising in a computer disk store or advertising on Internet resources.

The gaming industry is not like the market for ordinary goods; it has its own characteristics. Information spreads among the active gaming audience at lightning speed and covers everyone around. With this feature, the most effective advertisement for a game is its high quality. If your game is interesting and exciting, then gaming magazines and Internet information portals will write about it completely free of charge, players will begin to discuss the game and spread the information further and further, and after completing the first game they will look forward to additions and continuations of this project. Thus, without spending a penny on advertising, but earning the respect of the players, you will ensure the success of both the current game and all subsequent additions.


Localization

Released the game in your native Russian language? Get ready for the fact that the audience of potential players will consist of only a few countries, and the profit will be meager. It is much more profitable to release a game in English - its text will be understood by the majority of players around the world, these players will be much more solvent, and therefore the profit will be an order of magnitude greater.

Ideally, you need to release the game in several of the world's most popular languages ​​at once (English, German, French, Spanish, Chinese, Japanese), but for this you need to have a whole staff translators And localizers. Moreover, it is desirable that translators be native speakers. They will be able to transfer the maximum meaning of the original text into their native language. But ordinary single developers do not have such luxury, and most large companies are in no hurry to spend money on this matter.

Separating the artistic text from the technical part of the game will help to significantly simplify the localization process. To do this, you need to place texts, subtitles and voice-over audio files in separate, easily accessible files of standard types. And in the game’s program code you only need to leave links so that the text is loaded into the game from these files. The most popular games are translated by enthusiastic players on their own, without any involvement from developers. Separating the literary text at the game development stage will greatly help such enthusiasts do their good deed.


Sales system


The game is ready, players are waiting for its release, all that remains is to decide how to deliver the game to end users and take money from them.

The classic method (producing large quantities of computer disks and selling them through retail stores) is still relevant, but is only suitable for large companies and for games that have at least some initial popularity.

For small groups of developers, distributing the game through digital distribution systems (large online stores) is ideal. This option provides a newly created little-known game with a ready-made audience of buyers that has formed around the service. The most famous example is the Steam service. Thanks to the huge audience of players using Steam, almost every game released in this online store immediately gains worldwide fame.

Or you can easily create your own online store with one single product - a created game. But in this case, you will have to advertise not only the game, but also the online address of the store, and win the audience yourself.

10. Support

Creating a game and selling it is not the end of the life cycle of a game project. When the game is already in the hands of end users, players may still need your help. Large companies even have entire technical support departments dealing with such issues.


Release of patches

The previous beta test eliminated the most obvious bugs from the game, but this does not mean that they are completely gone from the game. It often happens that widespread use of a game reveals smaller, more subtle bugs that small groups of beta testers were unable to detect. These could be problems due to incompatibility with less popular brands of equipment, or errors due to unnatural use of gaming features. The imagination of some players exceeds the imagination of the developers; they can take actions in the game that the developers could not even think of.

All this contributes to the fact that we often have to make bug fixes in a finished game. These fixes are called patches, and this term is very common in the gaming industry. Few people manage to immediately release perfect games; most often, games are brought to perfection after their official release.

If for the game you received money from the players for each copy sold, then you receive absolutely nothing for releasing patches. From a market point of view, releasing patches is an unprofitable and useless action that does not have to be performed. But in the realities of the gaming industry, if you don't fully support your product, you get a bad reputation among players and lose possible future profits. Despite being free, releasing patches is a very useful and necessary thing.


Release of add-ons

An interesting and exciting game without serious flaws and errors gives you the green light for further creative activity. Have players received your gaming product with a bang? This means that an addition or a full-fledged second part can be prepared for an already finished game, and the begun plot can be developed further, turned into a whole epic or even a full-fledged gaming universe.

We take the game development plan and begin to create a new work of art using the same ten stages, but now fully armed with the accumulated experience and acquired skills.


Achievement "Honorary Reader Site"
Did you like the article? In gratitude, you can like it through any social network. For you this is one click, for us it is another step up in the ranking of gaming sites.
Achievement "Honorary Sponsor Site"
For those who are especially generous, there is the opportunity to transfer money to the site’s account. In this case, you can influence the choice of a new topic for an article or walkthrough.

Game development is afloat, it is promising and gaining popularity. We have prepared a detailed infographic on the path to learning game development.

There are many areas associated with game development, and each stage of training builds on the previous stage. For example, you shouldn’t immediately jump to game engines. Start with software development, studying mathematics with a focus on game programming, and only then move on to game development. Each of the stages presented is a step-by-step guide, including books and other materials.

0. Development of games for children

Many books focus on working with the legendary and intuitive development environment for children Scratch, including ScratchJr. After the basis comes information about Python Pygame. There is a book for 5-year-olds, but most of the material is suitable for children aged 8 years and older.

1. Computer science

Theoretical knowledge is a mandatory component, without which further study is meaningless. This selection of educational literature includes the basics, information about algorithms and mathematics in the context of studying computer science.

2. Programming languages

Speaking the language of a computer is not easy, but it is possible. And there are a lot of such ways. For example, the C language has significantly influenced the software industry by sharing its syntax with the popular C#, C++ and Java. C++, in turn, is a powerful language for creating effective programs and software systems. Many also write games in C#: the language is fast, convenient and allows you to start development faster.

But Lua adopted something from C++. Script language is good for game logic. It will make it easier to initialize a level, bind tasks to objects, change the behavior of NPCs interactively without having to recompile the project, and much more.

3. Creating applications

And if computer science is a theoretical basis, then there is more practice here. Game development is a bumpy road, and the best place to start is with apps. Books with practical tasks, as well as information about patterns and UML will help you figure out what's what.

4. Mathematics for game development

No, there will not be a school course in algebra and geometry. The selection is divided into the basics of mathematics in the field of game development and a more advanced level.

5. Game programming

Hardware platforms, operating systems, API sets, algorithms, cross-platform and other important aspects that will form the basis of the game being developed. The books are supplemented by a number of game development articles that contain useful information on programming.

6. Game engine development

The engine is the heart of the game, which “downloads” the functionality and necessary tools. In the first books you will get acquainted with architecture and design. Further, “game engines” are divided into tools, optimization, scripts and additional materials in the form of articles. During the introduction, patterns, algorithmic tricks, optimization in Unity and other nuances are touched upon.

7. Computer graphics

Yes, content is important, but it is computer graphics that are analogous to the application interface that users will see. Therefore, it should be given special attention.

No wonder this section is the largest. This includes the basics of programming with Real-Time 3D, DirectX and OpenGL. Everything is supplemented with information about rendering and technologies. Direct3D and OpenGL received special attention in the selection.



8. Game audio

Game development also concerns audio: these are sounds made by NPCs, the main character, phenomena or objects, as well as music. Audio programming included only two books, but they provide the necessary information in an accessible way.

9. Game physics and animation

One of the most difficult stages. In addition to the software basis and pictures, there must be laws by which all this interacts. Game physics and animation programming are covered in 17 books. Imitation of liquid is separately affected.

RPG in a week? From scratch? Is it even possible?
I took a chance and I did it.

The Internet is full of information resources available to small, independent (indie) game developers. On one such public forum, during an argument, I had the temerity to blurt out that if I was given a week of time, a computer with freshly installed Windows, and a good Internet connection, I could create a decent game without spending a dime on it. No, it certainly won't be able to compete with Halo 2 or anything of the same level (if I could create such a game in a week, I would have quit my job a long time ago), but it will be quite interesting and playable.

Tom Bampton, monthly game reviewer for Game of the Day (www.gameinaday.com), said, "Go for it!" Then he added an additional condition - I must do this without using existing game engines. I can only use the core libraries/APIs.

At first I refused this idea. I didn't have the extra time to take a week off from developing the current game project at work. But then I thought: to hell with it, what is a week? In a typical company, such as E.A., the work week is 40 hours. So why not make the game not in a calendar week, but in 40 pure hours? This is already more real, but I didn’t want to create another Tetris or Arkanoid. What about role-playing games - one of the most challenging gaming genres? Is this possible?

I knew it would be extremely difficult. But I accepted the challenge.

In addition, I wrote down in detail what I was doing and how I was doing it, and described the progress of development. I thought it might be interesting for game developers - or at least it would be an entertaining record of how I fell on my face if I didn't succeed. All I got was a long, rambling record of my hourly activities. I tried to change it so that reading would not be boring. How it turned out, judge for yourself.

So this is how I created a game in one week from scratch, and without a budget. If you are too lazy to read and want to quickly glance at the end of the story to find out what the final product looks like and see all its bugs, you can download the Windows version of the game here: http://www.rampantgames.com/hackenslash.html

PLANNING
Target
Create an old-school RPG in the style of old games from the early 80s, with a top-down view, such as The Temple of Apshai, Ultima III, and Telengard. The player will move through rooms in a typical dungeon, fighting various monsters using "sword and sorcery". Gradually, he will improve his capabilities by gaining experience, raising his level, and acquiring magical equipment.

However, the game will not only consist of the actual combat. The player will also have the opportunity to sneak past monsters, or enter into negotiations with them. There will be locked doors and chests, and unique dungeon features that have unexpected effects. The game will not have long descriptions or dialogues - it will mainly be a typical hack & slash. You will progress along the path until you are strong enough to face the final boss, complete the quest, and return home safely (to your starting room).

Development Rules

Rule #1: Development time is limited to one week (comprising 40 hours)
A total of no more than 40 hours should be spent on developing the game. This will include time spent actually working on the game and thinking about it. Breaks in development longer than ten minutes will not be taken into account. This would be an “ideal” work week of 40 highly productive hours.

A fully functional alpha version will be made in 40 hours. Further finishing, such as final debugging of the game, creation of an installer for distribution will not be taken into account in the total time, no new functionality will be added at this stage. Documenting the development process is also not taken into account.

Rule #2: Use only free tools
With the exception of the software that comes with the Windows installation, only free software is used, where possible open source. The point of this is to show that you don't need expensive (or even cheap) tools to develop a game. This rule does not apply to equipment such as a scanner, microphone and digital camera - if you do not have them, we will assume that you can borrow them from someone.

Rule #3: No engines, only standard libraries/APIs
The game must be created from scratch without using existing game engines. No cheating, or creating a game or any of its parts using game designers or using similar software.

Tools
Code:

Python 2.3 (http://www.python.org/)
PythonWin
PyGame (http://www.pygame.org/)
Py2exe - to compile what happens into an executable file for distribution. (http://starship.python.net/crew/theller/py2exe/)

Gimp 2.0 (http://gimp-win.sourceforge.net/)
MS Paint (the one that comes with Windows) - for inserting screenshots captured by the PrintScreen key (GIMP for some reason refused to do this)
Free textures were taken from (http://www.textureartist.net/textures/index.htm) and (http://www.mayang.com/textures/)

Audacity (http://audacity.sourceforge.net/) plus my microphone or free ones.

Schedule (Plan) of work
Schedules are made to be broken, but they are still needed to monitor progress and lines, and make adjustments as necessary.

Hour 1-10: Basic Architecture
Design of the engine and main components. Get the world displayed on the screen. I have to implement the ability to move a test player around the world and look at things and then turn that into a game editor.

Hour 11-20: Player Options
Implementation of all the main possibilities for the player - moving, attacking, opening doors, dying, picking up things and using inventory. Create a skeleton representation of all objects in the environment to test the player’s capabilities in interacting with the world.

Hour 21-30: Bringing the world to life
Add artificial intelligence, game events, traps, special effects. By the end of this period I should have a fairly complete tech demo, including all the main features of the game.

Hour 31-40: Adding content and rules
Get a full game from the tech demo. Add all additional content. Achieve completeness and balance of game mechanics. Polish everything you have time for, add special effects, animation, etc.

After 40 hours: Game testing and release
Test and eliminate the errors found (without adding new features!) Collect everything in a heap and post it on the Internet. Complete documentation.

Hackenslash Developer Diary: Game of the Week

Hour 1 – Wild Design and Basic Classes
This hour was spent creating some basic classes for the game - and using them in further design. The world will be presented as a sequence of rooms connected by a portal. Everything in the world is based on rooms, similar to how it was in old adventure games or MUDs. Most objects in the game are represented as a "GameObject", which has a position and content (and may contain other objects - a map can contain rooms, a room can contain a chest, a chest can contain a sword... and I think a sword can contain several rooms, but we won’t do that.)

I create creature and player objects
I generate a set of attributes for creatures, and implement them in a class. Apparently I'm a nerd who plays too many RPG games. I don't yet know exactly how the game mechanics will look and work.
I'm making a room object that inherits from GameObject. A room has width, height, and walls - and for the moment nothing else.

Slowly I begin to understand how everything will work and make the necessary corrections. I'm not even trying to use PyGame at this point and the program isn't showing anything other than the console. But I feel that everything that has been done is great progress!

Hour 2 - PyGame 101
The goal of this hour is to initialize PyGame and start drawing at least something on the screen. In fact, I spend most of my time reading the PyGame documentation, trying to figure out what's there and how to do it, since I have almost no experience using PyGame or SDL.

The hour ends with a program displaying a blank screen filled with black. Not impressive. In fact, there is a lot behind this window. There's a game loop, frame switching, calling multiple classes, and a lot of idle stuff. But this doesn't make the black screen any more impressive.

Hour 3 - If the walls had ears, I would scold them severely.
The purpose of this hour is to define the outline of the room with the walls, and display this on the still black screen. To do this, I need a room, and I need graphics. I have to sit a lot in GIMP, editing textures downloaded from the Internet so that they turn into suitable tiles. I'm creating a texture manager class. And I fill in the structure of the sample room. I also spent a little more time looking through the PyGame documentation to find anything else I could use to make the job easier.

An hour has passed. But I still have the same black screen. There were still no walls.

4 hours – There is a free room in the hotel
After struggling with some syntax errors, I was finally able to get the walls to appear on the screen. True, they are displayed incorrectly, they are not in the indicated place, and even with gaps between the segments. It's horrible. But with a little tweaking and editing, I ended up with what looked like a 10 by 10 square room on the screen.

Without a detailed project plan, it's actually quite easy to get confused when you've completed some work and wonder, "What's next?" I decided that if drawing one room was good, then drawing two would be twice as good.

To store the created rooms I created a file "minidungeon".
I'll start adding logic for "portals" - holes in the walls that lead to other rooms (and provide all the offset information needed to correctly display adjacent rooms).

Hour 5 - Hackenslash gets more rooms

I changed the window title to "Hackenslash!". Just because it's cool.
I created a feature map to store rooms, and a MapMaster class containing several maps.
I added a second room and connected it to the first through a portal.
Neighboring rooms are connected to the current one through portals, and are now displayed on the screen.
I fixed some clipping errors so that walls partially extending outside the window are displayed correctly.

Hour 6 - during which we improve our drawing skills

Added a door class and also configured maps for door placement (the door must be common to two rooms). (Edit: I wish I had never used this!)
I created 3 more wall tiles and combined them into one image.
The graphic appearance of the walls varies depending on the type.
I'm making simple graphics for a top-down view.

Hours 7-8 – Spins and exclamations!

I figured out how to rotate bitmaps in PyGame.
I got the test player to spin smoothly. Many adjustments are necessary to correct the angle of rotation.
I've learned how to use fonts in PyGame and I'm creating some classes to display and animate text.
Added a class for automatic text processing, since this functionality will be often used in the future.

Hours 9-11 – Elements - brrrr!

And here again, I need to solve the question “What’s next?”

Rooms need more interesting elements, so you need to make a list of them. I don't know how to systematize them, so I decided to start with the general ones. I introduced three static elements that can be found in a typical dungeon room: a carpet, a column (a block with the same functionality as the walls), and a ladder (allows you to move it to a new location)

I decided that the elements could occupy more than one tile and could be rotated to any degree. (Edit: In retrospect, a very stupid solution - I spent too much time implementing it, but it turned out to be almost useless.)

In total, I spent about three hours working on the elements, torn between creating graphics and writing code.

Hours 12 - 13 - We need Loot!

I create graphics and code for things. It's amazing how much time drawing can take. It’s especially annoying when the image looks like it was drawn by a chicken with its paw, no matter how much effort was put into it.

I added a lot of characteristics to items, including their cost, size, equipment slots, and much more. They can't be interacted with yet, but at least they appear in the correct places in the room.

Hour 14 - Carpets

I'm way behind schedule, what should I do?
The black background seems too ugly, so I covered the floors inside the room with carpets - separate tiles.

After that, it suddenly turned out that I forgot to add a transparent background to the sprites of the player and things. I had to spend a lot of time correcting this oversight.

But the level looks cool now. Well, at least cooler than black.

Hours 15-16 - Click! Click!

I took up mouse control and event processing.
Added character control with the mouse. The movement is still jerky, there is no smooth scrolling of the level.
The player can walk outside the room, there is no collision checking.
I've fixed a few bugs.
I tortured GIMP and created beautiful stairs.
.
I've already spent almost 17 hours on development, so I'm starting to get a little nervous. I'm 2/5 of the way through creating the game - the second "working day" of development has ended. What I have already done is impressive, but I understand that there is a lot more left to do. I have four more hours to finish the basic player features and fit into the schedule. It will be difficult... but I still don't regret spending the extra time drawing graphics!

Hour 17 – We move smoothly until we hit our foreheads against the wall

Most of the time was spent on fine-tuning the graphics and fixing bugs.
Added collision detection and smooth scrolling when the player moves.
The player can now take several steps (turns) in response to mouse action.

Hour 18 - Crossing the thresholds

The player can now go through portals to other rooms.
This causes a cosmetic bug with overlapping walls and floors between adjacent rooms.
Fixed many bugs related to rotation, which made portals impassable.

Hour 19 - Stairway to Heaven, Hell's Menu

My brother volunteered to make music for the game. He did the music for Void War and it turned out pretty good. This reminded me that I need to do some audio (and music) playback. This seems to be fairly easy to do in PyGame, so it shouldn't take too long. (Edit: I never found time for this, unfortunately you won't hear a single sound in Hackenslash.)

My next goal is to handle interactions with creatures and objects. I really like the way The Sims and Neverwinter Nights do it, when you want to interact with a game object, a context menu appears. I'm planning to implement something similar.

I teach stairs to move the player to a new room.
I scoured the Internet and the PyGame documentation a bit to see if there was any open source code for a similar PyGame menu. And I didn't find anything.
I started making my own menu.

Hours 20 - 21 - What's with the menu?

I'm still working on the menu. The menu can be easily connected to an object, or rather the object seems to generate a menu, which made it easy to implement feedback for processing the player's choice.
I started working on a menu of things. It already appears in the right place and allows you to select an item, but when pressed it does nothing yet, only the close menu button works.

Hour 22 – Fall asleep in progress

I continue to work on things - trying to implement their functionality and teach them to respond to menu commands, including the ability to add contextual information. Now it has little functionality, but it still works, displaying information about the running command
I improved the calculation of movement when performing various actions, gaining greater mobility.

I notice that it is late, and that I have gone far beyond the allotted hour for this work. If I hadn’t paid attention to the overall development time, I would probably have sat there until the morning. But since I'm limited on time, wasting an hour almost wasted is really bad news. It's interesting how priorities shift when time is tight. Anyway, I'm going to bed.

Hour 23 - Combat parameters!

I'm changing (well, actually just getting started) some of the class attributes created in the first hour.
In the top right corner I create a panel that will display the player's options.
I optimized this window by turning it into an image that draws faster than fonts. This image is updated only when the character parameters associated with it change.

Hour 24 - Player Menu

I have completed the optimizations for the options window.
Created a pop-up menu that appears when the player clicks on a character.
I created a quick menu for using potions, casting spells, etc.
I fixed some bugs in the menu.

Hour 25 – Before(time) sawing the floors and walls

This morning an idea appeared in my brain (is my brain really so big that it can hold so many ideas?) how to solve the problem of overlapping walls in adjacent rooms (see description of the eighteenth hour). What if I only paint half the walls? This way there will be no overlap at all, and there is no need to add complex logic to detect and correct overlaps.

I'm starting to work on implementing this idea. Unfortunately, in fact, the invented simplification complicates the rendering of the room (in particular the floors) even more, and it can not be implemented as quickly as I had hoped. It took about an hour to create and debug this system. But it was worth it.

While debugging the code, I discovered several more errors related to the transition between rooms.

BREAK - Crisis!

I just realized that more than 3/5 of the allotted development time has passed, and that there are less than fifteen hours left to finish the game. Having looked at the schedule of the necessary functions of the game, and estimating that each one needed an hour on average to implement, I realized that I needed about twenty-five hours to implement everything. Ten hours more than it is. The project is officially in jeopardy.

I can't go beyond the time limit. It is also impossible to attract an assistant or buy code/resources, since it is stipulated that I will make the game alone in 40 hours. I need to figure out how to work even more efficiently - but I’m already working hard at maximum productivity. It looks like I have no other choice, I'll have to reconsider the functionality and decide which features to throw out of the game.

Doors: Cut! I really want to make doors in the game. It's a shame to part with this function - especially since I've been working on it for some time. But there is still too much work left to do, such as artificial intelligence. And it would probably take 2-3 hours to get them to work, which I don't have.
Inventory: Simplify! Forget about additional inventory and the ability to change weapons at will. Everything that was picked up and did not become current equipment will be immediately converted into money.
Traps: Simplify! I'd like to have a variety of traps with interesting and varied consequences for activating them. It's not meant to be. Traps will have a simple visual effect, deal damage and temporarily increase the chance of running into a random monster
Bows (Small Weapons): Cut! The game will only have melee weapons; you can attack from a distance with spells.
Saving/Loading Game: Simplify! You can only save your character, not the state of the world. (EDIT: I didn't do that either!)
Particle System: Set aside! Particle system creation has been moved to the bottom of the priority list. I doubt I'll have to do them. I'd love to make some impressive visual effects using particles for spells... but that will probably never happen.
Spells: Simplify! I had a serious concept about spells: they could be found in the form of scrolls, and there were more than a dozen in number. It's sad, but there will only be a few spells: Heal, Damage, Weaken, Strengthen, and Restoration. When leveling up, it is possible to allow the player to strengthen spells by increasing the number of magic points.
Monster and Player Animations: Cut! I'm not a good artist to do this fast enough.

When deciding what I won't do (or what I'll put off until later), it's equally important to decide what needs to be done first.

There are a lot of things planned in the game that I think are very important - finding traps, secret doors (well now secret passages), and cracking chests. But the core of the game is combat. So I decided to focus on it, make it my top priority. I set a goal for myself: in one and a half hours, my monsters will come to life so much that they can be killed.

Great, we’ve sorted out the priorities, let’s continue development.

Hour 26 - Let's roll the dice

I'm working on the "dice" mechanic, a mechanism by which an element of randomness will be introduced into the game. Since we don't have the limitation of real dice, we can get a random number in any range we want. For example from 1 to 33, or from 6 to 17. So I can roll the dice, compare what came up with my attack and the enemy's defense. If the number rolled is higher than the defense, the attack is successful.

For example, let's say I have a total attack value of 15. I attack a monster that has 10 defense. My chances are 15 out of 25 (25 =15 +10), or 3 out of 5. So the game will generate a random number between 1 and 25, and if it is higher than ten, I win.

A slightly different method is used to calculate damage dealt. I added the “armor” parameter to the defender, and “damage” to the attacker. I generate a random number from 1 to their sum and then subtract the armor. If the result is less than one, no damage is dealt. Otherwise, it is equal to the result obtained. Thus, if a monster with 10 damage attacks a player with 5 armor, the game will generate a number from 1 to 15, from which it will subtract 5, which is the damage dealt.

This explanation and description took longer than its implementation.

At the end of the hour, I reduced the size of the dungeon display area, now the part of the window on the right is completely dedicated to the user interface, this change gave a slight increase in performance. I also made sure that player movement is not affected by framerate.