What do you need to create a game on a computer. Choosing a program to create a game

Every year the number of people playing computer or mobile games increases. People call them gamers who cannot imagine their life without toys. Many consider them sick people who need to be treated. But at the same time, there are people who have learned to make money on gamers by creating new games. In this case, many gamers think about creating a game on their own.


Today, creating games takes less time and effort than 5-10 years ago. For this, various programs for modeling three-dimensional graphics and engines for creating games have been developed. You just need to be patient.

If you want to create your own game, you need to have some gaming experience. If the user plays very rarely, it will be quite difficult to make a quality product. To create the right game, you must follow the game logic and be aware of all aspects of the game world.

To make a good enough game, you need to imagine the gameplay and come up with new ideas. If you create a unique game, it will be easier to find players. It is worth remembering that in order to create a game, you must have certain knowledge in this area. You need to learn programming languages, learn how to use three-dimensional editors. To do this, you can find many different articles and programs on the Internet.

Creating a game

Initially, you need to select the genre in which the game will be created. The core idea is an important part of every game. The most common games are based on the first-person shooter genre. Racing is also very popular. To find out the popularity of a particular game, just count their number in a certain category.

Action games and shooter is a shooting game in which you have to kill all the enemies. Strategies and RTS are also very popular. In addition, there are still a huge number of genres that also have the right to life.

After choosing a genre, you need to start creating a script. This is a very important part of creating a game. The script should have a plot, a main character, enemies or rivals, an ending. It is also worth working on the interface and graphics of the game.

If a beginner starts creating a game, it will be a rather complicated process for him, since this requires an engine that a novice user cannot make. To do this, you should use a special game designer. You can try to learn programming languages ​​and write an engine yourself or use a ready-made one.

Beginners are encouraged to use the constructors. This is a special program that has the structure of a future game. Elements and objects must be placed and scripts must be included. Such constructors are constantly expanding the number of their functions, while the price of the program is growing. If there is no desire to spend money on a game designer, then you can use free utilities.

If you use game engines, you need to have some knowledge in programming. Since the engine is a collection of functions and objects, the developer does not need to create any actions. Everything you need is already in the engine. You will have to use special editors to make graphics and connect them to scripts.

Creating your own game is a very complex and lengthy process. A novice user is not recommended to take on this, but if there is extra money, you can order a game in specialized studios. At the same time, programmers will take into account all wishes.

This guide details how to create a game: work out an idea, choose a toolkit, and organize the development process so that it flows easily and leads to a result.

Hi guys. In this article, I will be extremely honest with you and tell you how to create a game yourself. I warn you in advance that making a video game is difficult and very time consuming. And if your goal is not another clone of a snake, Tetris or any other game from a step-by-step tutorial, you will have to put a lot of effort into it.

Too many people, trying to make their first game, plunged headlong into the engine and abandoned the idea because it's "too difficult", "I'm tired", "I don't see progress". In fact, it's just a bunch of stupid excuses that appear because of the "down sight", that is, the desire to immediately make games of a large caliber, like The Witcher or Final Fantasy.

These are projects that entire teams of specialists, teams of hundreds of people, have been working on for several years, so even if you really want to and spend your whole life, you will not be able to make the same large-scale product.

Your first game is a practice session, a draft, but not a masterpiece. Even creating one level of the simplest pixel game can be overwhelming at first, and choosing something huge, you simply will not have an idea where to start, so you will spend a lot of time on details that absolutely do not matter.

The main task is to create a product that you can play yourself. I don't care if it's a two-color linear platformer that takes 7 minutes to complete. You did it, you didn’t lose heart, you didn’t decide to quit everything, which already makes you better, you are not one of those who despaired and gave up!

Let your mom, brother, friends, whoever you want play it. They will criticize, because they are used to seeing games as massive projects. Ignore, because, firstly: you yourself created your first game, secondly, next time you will make it faster and better, and thirdly, you will soon achieve the level of skill that all of them will ask for you let them play.

Your game should reflect your skills. Everything needs to be done consistently: an idea has appeared - you check the possibility of its implementation - if there is no possibility, you try to learn - having gained the skill, you implement the idea. And this is how it should be done every time. Over time, take a look at the Asset Store, maybe there is already a fragment that you hunch over for several days.

Finally - something like parting words: most likely, you are trying to develop in parallel with your studies or work. Sometimes it will be weeks before you can find the time, but if you really want to be successful in this area, find those hours and increase your skills. Remember, everyone can give up, but not everyone can reach the end.

Today, the Internet is full of various tutorials, training videos and free software. All this allows anyone who has a lot of free time and an idea to create their own computer game. However, it is also necessary to have a clear understanding of the process itself and its sequence.

What game to make?

Most likely a person who is interested in "How to make a game yourself?" already have an idea. Most often this is some kind of modification of one of the games he played. Maybe your favorite game is missing something and you decide to add it (think about whether your game has modding options: built-in editor or MOD-tool).

For example, the genre of MOBA games was created in the WarCraft 3 editor (the now popular Dota appeared precisely thanks to the broad capabilities of the editor).

In any case, the idea will be the starting point. That is where you should start.

Idea

But just in case, if you're wondering "What game to make?" - the article will help you with the search for ideas.

The gameplay component of your game idea will determine the genre of the game and the platform.

Genre and platform of the future game

When choosing a genre, keep in mind that you should start with something short and simple. The first pancake is most often lumpy, but if you can bake this pancake, your development muscles will strengthen and you will be able to do something more next time.

Then decide on a platform. This is incredibly important, because the gameplay depends on the platform. For example, making a dynamic shooter where the accuracy of the shot depends on the reaction and focusing on mobile devices with a touch screen is not a good idea.

Concept

After you have some thoughts, sit down and describe the concept of the game. At first, these can only be theses, which then turn into logically stated thoughts. If it was not possible to do this, reconsider your idea and get rid of the contradictions.

Determine what should attract potential players, that is, its very philosophy. For example, offer to become the sole ruler of a small island country, or to control a fighter aircraft directly from the cockpit, switching the necessary toggle switches in a timely manner.

Now to the features of your game. Most likely, a lot of experimenters have already tried themselves in your genre, but you still need to come up with something of your own, otherwise there will be no interest in the project. Here is a small example:

Example

Concept: small shop simulator.
Peculiarity: You personally negotiate with suppliers, attract new customers and desperately try to survive in harsh realities.
Explain what factors influence success, and also talk about the key features of the game mechanics.
Don't try to add items you don't want to implement. Your game should be something that you yourself would like to pay for.
The last step is to put all the drafts in a folder, and then in a drawer. After a couple of weeks, come back to them, as you may lose both desire and fuse, and it is better to go through this stage before the project begins than to leave everything in a half-finished state.

Development Plan


A clear development plan is a solid foundation for your project and a solid foundation for your growth as a game developer

This plan will be the skeleton of your game, so here you should mention every detail, every micro-moment, everything that you consider important. Those who make games alone can do without plans (provided they have a lot of experience), but if there is not much team or experience under you, then everything should be recorded.

A clear schedule of when to start programming or drawing the very first art can only be owned by you, so I share with you general points, the violation of which can set back a few weeks ago, or even make you abandon the idea of ​​​​creating your first game.

  1. Your plan should be designed for a month, no more. So trust your intuition and start simple. Better to finish early than miss the deadline.
  2. As soon as you understand that this product cannot teach you anything, put it on the shelf and forget it. You can test your skills by starting a similar project from scratch.
  3. Even the best developers strive to become even cooler, so every new game should start with the thought “I will do better than last time.”
  4. Don't ignore planning. In the development of any project, there are small "force majeure", and it is almost impossible to predict them, so it's easier to simply take into account the time spent on eliminating them in the schedule. Scheduled for 8 hours? Feel free to turn them into 12.
  5. Design is one of the last things a novice game developer should think about. Your job is to "grow your skills", so spend the weekend implementing a few new mechanics (unfamiliar to you before) rather than painting.
  6. Break your plan into several pieces. Reaching these milestones is a good way to increase motivation. If you can't meet your weekly requirements, simplify the overall plan.
  7. Do not set yourself too abstract tasks. Instead of "Tweak the character", write "introduce new shooting mechanics" or "change the appearance during the impact" - clear goals are much easier to achieve.
  8. Send yourself letters not email every Monday. They should contain all the actions performed in the past week. Comparing all the emails for the month, you can visually see the progress.
  9. Spend at least an hour a week playing your product. Ultimately, no one can make YOUR games better than you.
  10. After spending two weeks without working on a project, you will be confused and lose the thread, which will force you to start all over again. It is at this point that most people give up and give up on the idea of ​​creating their own game.
  11. Wasting time on sound and atmosphere in your very first game is incredibly pointless. The main thing: to develop the gameplay, because there are masterpieces consisting of ordinary moving pixels.
  12. If you've been doing something for more than an hour and it still doesn't work out, get help. Why stagnate for a week because you were embarrassed to create a topic on the forum?
  13. Let others try your game. Yes, criticism will immediately pour in, but you should not pay attention to it. Even the projects of leading studios are often slinged with mud, but that doesn't stop them from continuing to make masterpieces, right?
  14. You do not have unlimited resources - so you need to set realistic, achievable goals.
  15. Once you've polished your first game, immediately come up with a few new ideas and take on a fresh project. Don't forget to apply what you've learned before.
  16. Check out .

Let's move on to creating the title. Oddly enough, the plot is almost completely ignored here. The main thing is to write down all aspects of game mechanics and explain how they work. Basically, it is the table of contents that underlies the manual for the game.

Now we supplement each thesis of the table of contents with a detailed description of each little thing, and we do it as clearly as possible, otherwise problems with implementation may arise.

Finally, you need to show your plan to everyone you are going to use in development. It is possible that some ideas will not be realized, or you will be offered more comfortable alternatives. Having received a clear idea of ​​​​his part of the work, an experienced specialist will immediately make a few comments.

Choice of development tools



The engine is the heart of your game, choose responsibly, check out the article

It will be easier for a beginner to take a ready-made engine than to develop his own.
Each engine has its own characteristics. Some will make you learn how to program, and some don't even need to distinguish a procedure from a function, they have visual programming tools.

If we give an extremely broad classification, then the engines can be divided into two types: for two-dimensional projects (GameMaker: Studio, RPG Maker XV) and for three-dimensional games (Unity, Unreal Development Kit and Source)

Watch some official video tutorials and try to make something in the engine yourself. If this task seemed overwhelming to you, try to cooperate with a programmer, some guys may be inspired by your idea and help you refine it.

Prototype

The next stage is a test version. Sound and graphics do not matter here, the main thing is that all functions work exactly as you intended. By the way, be patient, because you will have to make changes until you start to enjoy the gameplay.

Also, be prepared for the need to create a finished prototype from scratch. Immediately you calibrate the control: it should be as convenient and intuitive as possible. Otherwise, the disappointed player will go looking for the exit button.

This phase is the polishing of your gameplay design. The phase of searching and trying different options.

Graphics and sound

Immediately decide what spectrum of colors you need. If it's a simple 2D platformer full of pixels, then it makes no sense to hire an orchestra and a whole team of graphic designers - a waste of time and money. At the same time, you should not save on resources if they are really necessary for the full expression of your idea. Feel free to combine other people's ideas. The only prohibition is copyright infringement.

Here you need to sketch out draft art. By the way, it is not necessary to be able to draw, because most indie projects use pixel art, due to its simplicity and popularity. If you still decide on a three-dimensional project, then you will have to hire professionals to create complex character models.

Finally, create some fragments of the game universe. These are concepts of what the level looks like, or how the characters interact outside of gameplay. It's time to bring your ideas to life!

Blender is a simple and free editor for creating 3D models.
Photoshop is indispensable for processing two-dimensional images, and also does a great job with textures.
net allows you to quickly create pixel art.
Sounds, along with graphics, create a feeling of atmosphere in your game. At your service is a huge set of ready-made sound libraries for free programs, and the missing tunes can be recorded at home, the main thing is to get a microphone.

Refinement

Play what you have created, and as often as possible. So you can see all the roughness. Learn one rule - either finalize the element to the ideal state, or remove it. For example, if the gameplay of a level seems too monotonous to you, try making it more varied.
Constantly refer to the philosophy of the game to avoid the moment when the project turns into a pile of incoherent levels and characters.
Polish the graphics and sound - the process is very time consuming, but the atmosphere depends on it.

Test phase

Once you have a pre-release version of the game (don't confuse it with a prototype), move on to looking for bugs and bugs. It will be better if you find them, and not potential players on the first day after the release.

Focus on things that are out of character for your playing style. For example, go to parts of the map that are not involved during the main gameplay. Testing sometimes takes more time than development itself, and its speed depends on the number and professionalism of testers.

If there are an incredible number of bugs, first fix the most ambitious ones. Therefore, start searching for them as early as possible - this will give you more time to make changes. In addition, offer to play with friends and acquaintances. A look from the outside will allow you to notice many nuances that you yourself would never have guessed. Plus, it's absolutely free.

Release

Organize a promo campaign: stir up interest on social networks, order reviews for gaming bloggers, and don't forget about a website with a forum, because fans will need to gather somewhere!
Choose a distribution platform. It is unlikely that you will immediately want to invest in hosting or dedicated servers, so pay attention to popular sites like Steam, GOG, Humble, Play Market and the like. Remember that the owners charge a certain percentage of the cost, so this issue requires detailed study.
Do not forget about the support of the game even after the release. Keep fixing bugs, releasing additional content, or jump straight into a sequel!

In the article, everything is stated very thesis, but at the same time, a general idea of ​​​​the full cycle of the release of the game is given. You should not immediately count on millions of dollars of earnings, because games are, first of all, creativity.

Many may not believe in you. What is there: for sure, there will be a couple of evenings when you will want to give up everything, but you should not give up. Remember: a really good product requires a lot of time, money and your nerves.

P.S.

If you have any questions or need help - write to the forum section, I receive notifications - I will always answer and help in any way I can.

Of course, modern large game projects like WoW or StarCraft are the result of many years of work of experienced programmers, which also require significant financial investments. To take on such a project, you must at least have a diploma, some experience and organizational talents. However, the complexity of the project is not always a measure of its success and does not guarantee the interest of the players. And everyone can try their hand at creating games, albeit less technically complex, but able to arouse the interest of both users and, possibly, large game producing companies. For this, it is not even necessary to have knowledge of programming languages.

Firstly, most modern games are equipped with tools that allow you to change the game world to: draw new and labyrinths, transform the appearance of characters and game objects, even design new missions and tasks. This allows, on the basis of the same StarCraft or 3D shooter, a computer game of its own design, in which the original game will be extremely difficult. There are game engines specifically designed for creating games.

3D Game Maker is one of the most popular engines that allows you to create your own 3D game. Due to the extraordinary simplicity of the interface, a full-fledged 3D game can be created using it in just 10 minutes. We choose the genre of the game being created, determine the number of required levels (the system allows you to design up to 20 different levels), select the main character among the ready-made models. The game can already be launched and tested, although work on it, of course, has only just begun. After all, the game is still deprived of the most important thing, that which keeps the attention and interest of the user - the plot. Therefore, it is also necessary to select opponents, think over other necessary details. The cost of this game development is $35 - quite a manageable amount for game creators.

3D Game Studio is the most powerful tool for creating both 3D and 2D games, and programming as such is practically not required. A set of all sorts of template situations, examples and effects gives the game designer a fairly wide palette of tools to realize their fantasies. Natural effects, mirror surfaces, shadows, transparent surfaces - all these attributes can be fully used in the development of game interiors. Ready-made elements of the game interface are also provided to the developer, allowing the user to communicate with the game in a stylish and convenient way. The professional version of this engine will cost $900, but the beginner version is much cheaper - only $70.

If 3D worlds do not appeal to you, pay attention to Game Maker - this gives you boundless scope for imagination, allowing you to create a computer game in 2D format. We select objects, think over their interaction. Images can be drawn in any graphics editor and imported into the system. The game can be equipped with sound effects and signals. The interface is extremely simple and logical, ideal for beginners.

The program is designed to create two-dimensional games without the use of programming languages. Instead of lines of code, ready-made actions of game characters are substituted. The user only needs to create game objects, supply them with two-dimensional sprites or animation, create rules for interaction between objects, arrange objects on levels. You can draw graphics and animation directly in Game Maker without using third-party programs.

In this program, top-down games and side-view platformers are excellent.

"Game Maker" will also be of interest to advanced programmers, the ability to add your own program code is also available here.

The free version of the program does not limit ordinary users in any way, compared to the paid version of Game Maker Pro. The paid version gives access to complex software modules that are interesting only for real professional programmers.


A very simple 2D game designer. Knowledge of programming languages ​​is not required.

Unlike Game Maker, Construct 2 can create games for iOS, Android, Facebook, Chrome Web Store, Desktop Windows, Windows 8 Apps, Web (HTML5), Kongregate, and many other platforms.

This is a higher quality program, but also more greedy for money. The program is free until you want to sell your game. In this case, you will need to buy a licensed version. There is also a special store on the developers' website where you can buy building resources for your game: sound sets, music, detailed instructions.

We recommend the Tutorial "TDS from A to Z" (creating a top-down shooter game).


Programs for creating 3D games (Site site)

"3D Rad" is the cheapest option among 3D game engines. The program can be used in general for free, and by paying $5 you get the latest updates on the day they are released (in the free version, updates appear only after three months). Most often, this engine is used to create racing games.

The program has a simple and intuitive interface, not burdened with trifles.

"3D Rad" supports the installation of separate plug-ins, has pre-installed AI models, shadow maps and textures. It is possible to create online games.


NeoAxis Game Engine SDK

An excellent game engine with a simple interface and high-quality graphics. Designed to create games in almost any genre.

Based on the Ogre3D engine. The programming language is C# and C++ and the .NET platform, but it is possible to do without programming thanks to special libraries of ready-made actions. For the engine, there are various add-ons and extensions developed by third-party users. It is possible to export for 3dsMax and Maya, Autodesk Softimage and Blender. PSSM (Parallel-Split Shadow Map) shaders, lighting and shadows are supported.

NeoAxis Engine is distributed under 4 types of license: Non-commercial - free of charge for non-commercial projects; Indie license - $ 95/295 (single / team); Commercial - $395/995 (single/team); Source license - from $9,800.

The main advantage of this game engine is maximum convenience and simplicity. In addition, the engine was developed by domestic programmers, thanks to which it has the Russian language by default. When you purchase a licensed version, you get high-quality technical support in your native language.


A comprehensive tool that contains everything you might need to create a game. The Unity 3D package includes a graphics engine that fully utilizes the capabilities of DirectX and OpenGL, a built-in 3D model editor, separate programs for creating and processing shaders, shadows, landscapes, physics and sounds, as well as rich script libraries. With Unity 3D, you can completely forget about third-party programs, or reduce their use to a minimum.

"Unity 3D" is suitable for creating games of any genre. Platforms supported are conventional computers (Windows XP/Vista/7, OSX), mobile devices (Android, iOS, Blackberry), game consoles (Wii, Playstation 3, Xbox), Internet browsers (Flash, Web Player).

There is a special system of joint development - Asset Server, which allows you to develop a game as part of a whole team directly via the Internet.

The only negative is that to use "Unity 3D" you need to know computer programming at least at an average level. Despite the rich library of ready-made practical software solutions and a powerful scripting engine with instant compilation, you will have to write part of the code yourself in JavaScript or C#.


Unreal Development Kit (UDK)

One of the most popular game engines in the professional environment of game developers. The Unreal Engine has been used to create games such as the Unreal Tournament series, the Mass Effect series, XCOM, Borderlands 2, DmC: Devil May Cry, and dozens and hundreds of smaller games.

"UDK" supports the following platforms: PC, Xbox 360, PlayStation 3, Wii, Android.

This engine was originally designed for creating 3D shooters, but there are also opportunities for creating games of related genres: slashers, adventures, MMO games.

The game engine is excellent at creating facial animations, complex architecture of buildings, processing complex physical objects. As part of the "UDK" has all the necessary tools for creating animations, textures, sounds, levels, models, software scripts. There is a built-in library containing over 1000 structures, other 3D models, standard textures and sounds. There is a possibility of programming in a special language "Unreal Script" (created on the basis of C ++).

You can use "UDK" for free, until you decide to officially publish your game created on this engine. In this case, you will have to fork out for an expensive license.


CryENGINE 3 Free SDK

"CryENGINE 3" is the pinnacle of modern game engines, delivering photorealistic graphics with support for DirectX 11 and third generation shaders. The third version of the engine was created in 2009. The Far Cry and Crysis series of games, the online game Aion, as well as dozens of lesser-known computer games have been created on this engine.

Crytek has decided to distribute this already popular game engine for free. But free-of-charge is valid exactly until the moment you want to officially release a game created on this engine. The licensed version is more expensive than all similar programs, but it is worth the money.

On "CryENGINE 3" you can create games for platforms: PC, PlayStation 3 and Xbox 360.

You can import textures from the graphics programs "3ds max", "Maya" and also from previous versions of the engine.

The CryENGINE 3 engine turned out to be very popular, it has a whole Russian-speaking community, thanks to which you can easily find all kinds of training materials, as well as answers to specific questions.


How to develop an RPG game in a week from scratch and without a budget. Part I

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

The Internet is full of information resources available to small, independent (indi) game developers. In one such public forum, during an argument, I had the imprudence to blurt out that if I was given a week of time, a computer with a fresh install of 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 something of the same caliber (if I could make a game like this in a week, I'd quit my job a long time ago), but it will be quite interesting and playable.

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

At first I gave up on this idea. I did not have too much time to take a week off from the development of the current game project at work. But then I thought: to hell with it, because what is a week? In a typical company, such as EA, the workweek is 40 hours. So why not make a game not in a calendar week, but in 40 clean hours? It's already more real - but I didn't want to create another Tetris or Arkanoid. And what about the role-playing game - one of the most difficult game genres? Is it possible?

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

In addition, I wrote down in detail what and how I do, described the development progress. I thought it might be interesting for game developers - or at least get entertaining records of how I fell on my face in the mud, if I suddenly fail. All I came up with was a long, rambling record of my hourly activity. I tried to change it in such a way that reading does not cause boredom. How it happened, judge for yourself.

So here's how I created a game in one week from scratch, and with no budget. If you're too lazy to read and want to quickly jump to the end of the story to see what the final product looks like and see all of 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 with "sword and magic". Gradually, he will improve his abilities by gaining experience, leveling up, acquiring magical equipment.

However, the game will consist of more than just combat itself. The player will also have the option to sneak past the monsters, or negotiate 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 mostly be a typical hack & slash. You will follow the path until you are strong enough to face the final boss, complete the quest, and return home (your starting room) safely.

Development rules

Rule #1: Development time is limited to one week (including 40 hours)
A total of no more than 40 hours should be spent on game development. These will include time spent actually working on the game and thinking about it. Development breaks greater than ten minutes will not be counted. This would be a "perfect" work week of 40 high-performance hours.

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

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

Rule #3: No Engines, Only Standard Libraries/APIs
The game must be created "from scratch" without using existing game engines. No cheating, and creating a game or any of its parts using game designers or using similar software.

Tools
Code:

Python 2.3 (http://www.python.org/)
Python Win
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) - to paste screenshots captured with 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 works
Schedules are made to be broken later, but they are still needed to control progress and lines, and make adjustments as necessary.

Hour 1-10: Basic architecture
Engine design and main components. Get the display of the world on the screen. I have to implement the ability to move the test player around the world, and look at things, and then turn what happens into a game editor.

Hour 11-20: Player options
The implementation of all the main features for the player - moving, attacking, opening doors, death, picking up things and using inventory. Create a wireframe representation of all objects in the environment to test the player's ability to interact with the world.

Hour 21-30: Revitalization of the world
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-fledged game from a techno demo. Add all additional content. To achieve completeness and balance of game mechanics. Polish everything for which there is enough time, add special effects, animation, etc.

After 40 hours: Testing and release of the game
Test and fix the found errors (without adding new features!) Gather everything together and put it on the Internet. Complete documentation.

Hackenslash Dev Diary: Game of the Week

Hour 1 - Wild Design and Base Classes
This hour was spent creating some base 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, just like it was in old adventure games or MUDs. Most of the objects in the game are represented as a "GameObject" that has a position and content (it can contain other objects as well - 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 will not do this.)

I create objects creature (creature) and player (Player)
I'm generating a set of attributes for creatures and injecting them into a class. Apparently I'm a nerd who plays too much 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 a width, a height, and walls - and nothing else at the moment.

Gradually, I begin to understand how everything will work, and make the necessary corrections. I'm not even trying to use PyGame at this stage and the program doesn't show anything but the console. But I feel that all that has been done is great progress!

Hour 2 - PyGame 101
The purpose of this hour is to initialize PyGame, well, 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 in there and how, since I have little to no experience with PyGame or SDL.

This hour ends with a program that displays a blank screen filled with black. Not impressive. In fact, there is a lot behind this window. There is a game loop, frame switching, multiple class calls, and a lot of idle stubs. But that doesn't make the black screen any more impressive.

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

The hour has passed. I still have the same black screen. There were no walls, and there are none.

Hour 4 - The hotel has a free room
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 slots between the segments. It's horrible. But with a bit of tweaking and editing, I got what looked like a room on the screen, 10 by 10 squares.

Without a detailed project plan, it's really quite easy to get confused when you've done a certain job and wonder "What's next?" I decided that if drawing one room is good, then drawing two is doubly better.

To store the created rooms, I created a "minidungeon" file.
I'll start adding the logic for "portals" - openings in the walls to go to other rooms (and providing all the offset information needed to display adjoining rooms correctly).

Hour 5 - Hackenslash gets more rooms

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

Hour 6 - during which we improve our drawing skills

Added a door class, and also set up maps for door placement (the door must be common for two rooms). (Edit: Too bad I never used it!)
I created 3 more wall tiles, combined them into one image.
The graphic appearance of the walls varies depending on the type.
I'm making a simple graphic for a top down view.

Hours 7-8 - Spins and exclamations!

I figured out how to rotate bitmaps in PyGame.
I achieved smooth rotation of the test player. Many adjustments are needed to correct the angle of rotation.
I have learned how to use fonts in PyGame and I am creating some classes to display and animate text.
Added a class for automatic text processing, since this functionality will be used frequently in the future.

Hours 9-11 - Elements - brrr!

And here again, I need to solve the question "What 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 have introduced three static elements that can be found in a typical dungeon room: a carpet, a column (a block with the same functionality as walls), and a ladder (allows you to move to a new location)

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

All in all, 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 long drawing can take. It is especially annoying when the image looks like the chicken was drawing with its paw, no matter how much effort was put into it.

I've added a lot of stats to items, including their cost, size, equipment slots, and more. They can't be interacted with yet, but at least they show up in the right places in the room.

Hour 14 - Carpets

I'm way behind schedule, what should I do?
The black background seems too ugly, so I paved 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 now looks cool. Well, at least cooler than black.

Hours 15-16 - Click! Click!

I got busy with mouse control and event handling.
Added mouse control. While the movement is jerky, there is no smooth scrolling of the level.
The player can move out of the room, there is no collision check.
I've fixed a few bugs.
Tortured GIMP and created beautiful stairs.
.
It's been almost 17 hours of development already, so I'm starting to get a little nervous. I went 2/5 of the way to create the game - the second "working day" of development ended. What I have already done is impressive, but I understand that there is much more left to do. I have four more hours to finish the core player features and get on schedule. It will be difficult... but I still don't regret spending the extra time drawing graphics!

Hour 17 - Slowly move until we hit our forehead against the wall

Most of the time is spent fine-tuning the graphics and fixing bugs.
Added collision detection and smooth scrolling when the player moves.
The player can now take multiple steps (turns) in response to a 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 adjoining rooms.
Fixed a lot of 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 made the music for Void War and it worked out pretty well. This reminded me to do sound (and music) playback. It seems to be quite easy to do this 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 it's done in The Sims and Neverwinter Nights, when you want to interact with a game object, a context menu pops up. I am planning to implement something similar.

Teaching stairs to move the player to a new room.
I've been poking around the internet and the PyGame documentation a bit, looking to see if there's an open source menu for a similar menu in PyGame. And didn't find anything.
I started making my own menu.

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

I continue to work on the menu. The menu can be easily connected to an object, more precisely, the object generates a menu, which made it easy to implement feedback for processing the player's choice.
I started working on the item menu. It already appears in the right place, and allows you to select some item, but when pressed, it does nothing yet, only the button to close the menu 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 still works, displaying information about the running command
I improved the calculation of movement when performing various actions, getting more mobility.

I notice that it is already late, and that I have gone far beyond the hour allotted for this work. If I did not pay attention to the total development time, I would probably sit out until the morning. But since I'm limited on time, an almost wasted hour is really bad news. It's interesting how priorities shift when there's not enough time. In general, I go to bed.

Hour 23 - Battle parameters!

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

Hour 24 - Player Menu

I completed the optimizations for the options window.
Created a popup 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 (once) sawing floors and walls

This morning I had an idea in my brain (do I really have such a big brain that it can fit so many ideas?) how to fix the problem of overlapping walls in adjoining rooms (see description of the eighteenth hour). What if I paint only half of the walls? This way there will be no overlap at all, and no complex logic needs to be added to detect and fix overlaps.

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

While debugging the code, I found a few more errors related to the transition between rooms.

BREAK - Crisis!

I just realized that more than 3/5 of the development time has passed, and that there are less than fifteen hours left to finish the game. After looking at the schedule of the necessary features of the game, and estimating that it would take an average of an hour to implement each, I realized that it would take me about twenty-five hours to implement everything. Ten hours ahead of time. 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 provided that I will make the game in 40 hours by myself. I need to figure out how to work even more efficiently - but I'm already working at maximum productivity. It looks like I have no other choice, I'll have to rethink the functionality, and decide which features to throw out of the game.

Doors: Cut! I really want to make doors in the game. It is a pity to part with this function - especially since I have been working on it for some time. But there is still too much work, such as artificial intelligence. And it will 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 is picked up and does not become the current equipment will be immediately converted into money.
Pitfalls: Simplify! I would like to have many 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, at a distance you can attack with spells.
Save/Load Game: Simplify! Only the character can be saved, not the state of the world. (EDIT: I didn't do that either!)
Particle System: Postpone! Moved particle system creation to the bottom of the priority list. I doubt they will need to be done. It would be nice to have impressive visuals with spell particles... but it probably never will.
Spells: Simplify! I had a serious concept about spells: they could be found in the form of scrolls, and the number is more than a dozen. It's sad, but there will only be a few spells: Heal, Damage, Weaken, Empower, and Restoration. By leveling up, you can allow the player to enhance spells by increasing the number of magic points.
Animation of monsters and players: Cut! I'm a poor artist to do it 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 that are planned in the game that I consider very important - finding traps, secret doors (well, secret passages now), and opening chests. But still the basis of the game is combat. So I decided to focus on it, to make it a top priority. I set a goal for myself, in a hour and a half, my monsters will come to life so that they can be killed.

Great, we figured out the priorities, we continue to develop.

Hour 26 - Let's roll the dice

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

For example, let's say I have a total attack value of 15. I'm attacking 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's higher than ten, I'll win.

Damage dealt is calculated in a slightly different way. I added "armor" 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. Thus, if a monster with 10 damage attacks a player with 5 armor points, the game will generate a number from 1 to 15, from which it will subtract 5, what happens 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 devoted to the user interface, this change gave a slight increase in performance. I also made sure that the player's movement does not depend on the frame rate.