Jump to content
  • Advertisement
Sign in to follow this  
  • entries
    22
  • comments
    2
  • views
    1109

About this blog

An article series for beginner game developers which teaches you fundamentals of making computer games.

Entries in this blog

Conclusion

Hi, I'm Paul Miller and today we conclude this series. Game development is a very challenging occupation. If you want to be a specialist in a big company, you don't need to know that much. You just have to be really good at you job. However, if you want to be an independent developer, then you have to be very well rounded and know a lot about many things. In this final article I will give you some advice about what to do next. After reading this series you have learned fundamentals of game development. You know about the community. You know better how to learn effectively. You know basics of managing yourself, your projects and your business. You know what is marketing process. You know basics of how game industry works. You understand that Unity is a good choice for small game makers. You know fundamentals of game architecture, programming and design. You know the importance of game content, testing and support. You learned something about computer science and computer graphics. We also touched upon artificial intelligence, multiplayer and simulations. What's next? The next step for you should be completing a small project on your own. Think about something which you can complete in at most a year. At first write full documentation for it. It should be a simple, abstract 2D game. If you want to practice only programming and content development, you can make a clone of a small hit game which is popular on Steam or on Google Play. If you want to make something more unique, the best course of action is modifying a hit made by somebody more experienced. Don't design your own game from scratch because you will make many mistakes which can be avoided by copying what works. You first game shouldn't be in 3D because it makes programming and asset development at least ten times harder. Your main goal should be to complete your project 100%. By releasing a polished, small game to the market you will learn more than by tinkering with something huge. You will also start building your portfolio of projects which present your skills should you later look for a job in the industry. Modern gaming is very different than when I was kid in the 90's. Games today changed and for me there is nothing to play. I lost my passion for games. I don't play almost at all and I'm not excited about any game currently available. One of the changes of modern games is that they became much more sophisticated graphically. At first this may be seen as a boon. However, it has its problems. More realistic games leave less for imagination. In the past crude graphics only suggested something and all the holes were filled by my mind. Today everything is "in your face" and there is very little room for imagining what could have been. Modern games often lack creativity and unique visual style. They are designed as cash cow services which milk your from money at every turn. Maybe I'm just an old, jaded gamer, but I'm not excited by what is currently on the market. Games should be made with a burning passion. All the best ones were made by people out of love of gaming, not just for money. Don't forget that when you make yours. If possible, make a game you love to play yourself. This caring will shine through your work and make your product much better and more memorable. I hope you enjoyed this article series. You now know all the basics needed to make great games. If you enjoyed my work: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Simulations

Hi, I'm Paul Miller and today's topic are simulations. Mimicking reality has a long history in gaming. Simulations are very powerful for enhancing gameplay in meaningful ways, but they come with some problems as well. It this article we will explore the use of simulations in game development. Since the dawn of games people were dreaming about more realistic virtual experiences. Many early games like Tennis for Two and Spacewar! were simply crude simulations. In the 80's and 90's the first realistic games were developed and they flourished. There was especially many flight simulators. Today many triple-A companies develop highly realistic games. Modern hardware is so powerful that it's feasible to create game worlds which look almost like the real thing. There is also an ongoing quest to create more believable looking and behaving virtual humans. Realistic simulations have their place in gaming for decades, but they aren't the solution to all problems and they may even create some new problems which are absent when realism is removed. One of the most successful game studios which focused on developing simulations is Maxis. It was founded in 1987 by the famous designer Will Wright with Jeff Braun. Their first product was SimCity: a city simulation. Initially publishers weren't interested in this game because it didn't have clear win-lose conditions. The game turned out to be a great hit and now is widely regarded as a classic. Later Maxis developed many other simulation games:  SimAnt, SimFarm, SimEarth, SimLife, SimTower, SimIsle and SimHealth. None of them were as commercially successful as SimCity. In the 2000 Maxis made their greatest hit: The Sims. It was a game which roughly recreated family life. Again, at first publishers dismissed this idea because they though it's not attractive to the most profitable hardcore market. Again, they were wrong and The Sims proceeded to sell 16 million copies becoming one of the best-selling games of all times. Today Will Wright is a household name and one of the towering figures of game design. Modern games often simulate physics. It's important to understand that in games only a very small subset of the real science of physics is simulated. In our industry physics means mostly Newtonian dynamics. There are no products which attempt to implement Einstein's relativistic theory which is a generalization of Newton's insights to high speeds and high energies. Game physics is still rather crude approximation which barely works even for typical combat games. Even projects with large budgets have problems simulating in a stable way objects which move very fast or have high mass. In gaming physics practically equals animation. The result is that modern graphics hardware directly supports it like Nvidia's PhysX toolkit. It's clear that games have a long way to go in order to properly present physical phenomena. Most products are full of hacks and shortcuts. They present only an illusion of the real world which has almost nothing to do with the way it works according to a professional physicist. Another active field or development is simulating realistic humans. There is a strong demand for this, since many games require believable characters in order to tell their stories. Modern graphics allows depicting humans in a almost convicting way, but there are still problems even with just presenting them. There is an issue known as "uncanny valley". It's an effect which makes almost realistic computer or robotic human models looks very unpleasant. There is a sensations of weirdness and revulsion towards humanoids which are very close to real, but not quite. There is no known solution to this problem, except piling on the efforts to get it even more real. The problem of uncanny valley is even present in high budget movies, where fully CGI humans look somewhat strange and alien, especially their facial expressions. This problem is compounded by great difficulties in simulating humanoid AI. Nobody knows how to make a virtual character behave in a acceptable way to an adult. This problems may have no solution and games will have to adapt and go in other directions instead of striving for ultimate realism. Going for the real thing in games creates many problems which can be completely avoided when your work is not realistic. There is a reason why most classic games are more likely to be stylish and unique. When you look at work of famous companies like Blizzard and Nintendo you will notice that all of their most popular games are not realistic at all. Neither Blizzard nor Nintendo ever made a game which could be classified as a simulation. This is not an accident. Realism is in many ways limiting to designers. Players come with various expectation about the real world and they want them reflected in a game. It's very easy to break the suspension of disbelief in a realistic game. People notice small differences from their every day life and consider them flaws. Realistic games must also avoid many gameplay mechanics which don't fit simulating reality. There are also many benefits of making realistic games. First of all, they are conductive to creating cinematic stories full of believable human characters. Realism is highly measurable from development standpoint. It's possible to very accurately check if a given scene or person is simulated accurately. This makes realism very attractive to managers. They can more easily control their staff and ensure quality. Realistic game worlds are also simpler to promote because people can more easily relate to something which looks familiar to them. Another benefit of realism is its mainstream popularity. While stylish, unique games might have a strong niche appear, reality is universally popular among less sophisticated gamers who don't want originality, but rather more of the stuff they already know well. Recently there has been a lot of talk of virtual reality. This topic returns like a boomerang every few years. A lot of people think that VR is the future of gaming. I don't subscribe to this view. There are many problems with VR headsets. They are expensive and it's likely to stay like that. They have many usability problems. For ex. they may cause nausea when used for a longer time. There are problems when using them with glasses. They isolate people from their environment. They are not suitable for many different kinds of games. They also require special type of input devices. Basically, they are highly attractive only to the people who want highly immersive first person experiences and that's a very limiting requirement for developers. Just consider how many great games were made to date which can't be converted in any way to virtual reality. I think that VR will forever remain a small niche, never archiving big popularity. There aren't many books directly about simulations in games on the market. I suggest studying physics as it's one of the most fruitful types of simulation in games. "A Mind for Numbers" by Oakley will teach how to learn science in a more effective way. "How to Solve It" by Polya is a classic for improving the ability to solve mathematical problems. "Fundamentals of Physics" by Halliday & Resnick is a thick, academic textbook which is an excellent introduction to serious physics. "What Is Relativity" by Bennet will expand your horizons of the relativistic physics which goes way beyond modern games. I hope you enjoyed this brief overview of simulations. They have a huge potential to improve depth of gameplay in your game. Next part concludes this series. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Multiplayer

Hi, I'm Paul Miller and today's topic is multiplayer. Playing games solo can be a great experience. Many people prefer it that way. However, cooperating or competing with others can be a source of unique thrills which can't be obtained in single player. Multiplayer games are one of most intense entertainment experiences out there. It this article we will explore the world of networked game development. Tennis for two from 1958 is one of the first computer games ever. It was a two player game. It can be considered an early example of multiplayer. Spacewar! from 1962 was also a two player game. Pong from 1972 supported both single player and two player modes. As you can see, multiplayer experiences were implemented in many old games. Early examples were made for two players because of the inherent simplicity in symmetrical designs where there are two opponents fighting each other. Most arcade machines of the 80's and 90's supported two people playing at the same time. Gauntlet from 1985 introduced to the arcades co-operative 4-player gaming. Early examples of multiplayer games were not networked. There was technology to support it. Internet was still in its infancy in the 80's. In the 90's home computers became more popular and their 16-bit power allowed making more advanced software. In the 90's most modern multiplayer genres were created. Games like first person shooters, real time strategies and massively multiplayer role-playing games took off in that defining decade. There were some earlier examples of true multiplayer in the form of MUDs, or multi-user dungeons. One of the earliest was "MUD1" created in 1978 by Roy Trubshaw and Richard Bartle at the University of Essex on a DEC PDP-10.  These kind of games were text-based role-playing adventures which were precursors to modern 3D MMORPGs like World of Warcraft. There are many benefits of making a multiplayer game instead of going single player. One reason is reducing piracy. If your game requires constant access to the main server then very few people will use a pirated copy because it has no utility offline. Another benefit of going always online is that you can gather lots of data about your players and how they use your game. This can be very valuable for marketing purposes because it allows you to update your product without guessing what your clients prefer. Internet play allows constant contact with your audience which means that you can quickly adapt to their tastes. This agility of online games allows a much more analytical approach to game design which is very valuable to more business-minded developers. Building multiplayer games has its fare share of challenges. First of all, online games require special design which is very different from single player design. Not everybody wants to make such games. If you love experiences based on deep stories and interesting characters then it may not be attractive to you. Multiplayer games have to be coded differently than solo games. They require special architecture to handle many players. This creates a technical challenge to beginners. Remember, you can't add online play as an afterthought late in development. Another issue is that your game will have to be made as a service and maintained for many years, including paid servers. Finally, there are problems with maintaining your player community. Some people are going to cheat, hack or troll others which isn't easy to handle. In order to make online games it's very important to learn about modern networking models. Today multiplayer practically equals playing over the internet. This global network can be conceptually modeled as a four layer stack. The main four layers are: link layer, internet layer, transport layer and application layer. There is an even more elaborate OSI model of networking which has seven layers. The four layer model is sufficient in most cases. Link layer is your physical layer. It encompasses things like your Ethernet cable, DSL modem and associated protocols. Internet layer is dominated by the internet protocol, but there are others. Transport layer contains protocols like TCP and UDP. Most games are built using these. At the top we have application layer and protocols like DNS, FTP and HTTP. Understanding this stack is required for building any decent online software. When developing your game you have to choose one of two main networking architectures: peer to peer or client-sever. Both have pluses and minuses. Client-server gives you more control over everything, but is more costly to make. You have to purchase servers and maintain them as long as your game is on the market. Client-server is a well understood architecture and is used by most games today. Another option is P2P. It has some big advantages. It's vastly cheaper to maintain and scales much better with larger games. That's because with P2P when you have 100 million players online you don't need a massive server grid to support them. They use their own computers to host games and save profile data. One of the main problems with pure P2P is maintaining control of the host swarm. Another problem is maintaining security. In pure P2P it's very hard to prevent cheating and hacking. Ultimately it seems that the best solution is some kind of hybrid of the two. Among problems with programming online games one stands out as the most prominent. It's coping with latency. Internet wasn't built for real-time communication. It was initially a military network which was supposed to survive a nuclear attack. Nobody cared to much about its delays. This problem is still with us today. If you are making an online action game you will have to spend a lot of time working on solving latency problems. If you don't do it, your game will feel sluggish and unresponsive to your players. Note that latency can't be completely removed. The goal is to hide it through various tricks in order create an illusion of latency-free play. Commonly used techniques are client prediction and time manipulation. Online games have a different nature than single player games. When you make a solo experience you generally just want to maximize sales. You count how many boxes of your product have flown from the shelves. With multiplayer games it's something else. You need to think about your game as an ongoing service. Initially your goal isn't making sales, but building a strong community. When you have developed a fan base you can milk it in various ways, for ex. using cash shops or with some kind of virtual economy. It's a completely different way of making money than traditional box sales. Multiplayer programming is not as popular as graphics programming and there are far fever books available. "Networking and Online Games" by Armitage is an excellent introduction to the field. "Multiplayer Game Programming" by Glazer & Madhav is a great volume for network coders. "Computer Networks" by Tanenbaum & Wetherall is a thick, academic textbook which will teach you fundamentals of connecting computers. "Database Systems" by Coronel & Morris is a textbook about databases which are very commonly used among online games. I hope you enjoyed this brief overview of multiplayer. The future belongs to online games, so learn how to make them with skill. Next topic are simulations. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Artificial Intelligence

Hi, I'm Paul Miller and today's topic is artificial intelligence. AI is a fascinating subject. It has an aura of mystery about it. Many people still believe that human mind can be simulated using a computer. This suggests that AI could some day be possibly smarter than men. I don't believe that, but learning how to code intelligent games is very important to make them fun. In this article we will explore the field of artificial intelligence. AI research is as old as computing. Alan Turing, one of the fathers of the Information Age, created a test in 1950 called by his name. Machines who want to pass it must mimic human conversations using plain text terminals. Today nobody takes this seriously, as AI research has largely expanded to other problems than just simulating people. Well made artificial intelligence can have an enormous utility in various fields. Early after World War II researches were very optimistic. Many though that we will  be able to create thinking machines before the turn of the twentieth century. It didn't happen and there are good reasons to believe that it will never happen. Academic AI is not like game AI. One of the main differences is that researches are looking to solve specific problems which appear to require intelligence. While developing games we want to typically achieve fun which doesn't always means that we want the computer to play perfectly. Human players when they start the game are very weak and make many errors. We don't want to pitch them against perfect opponents. Creating a robot soldier who never misses a shot and behaves intelligently on a battlefield is a worthy goal for any military, but such opponent in a game might be to hard to beat and cause frustration among gamers. Video game AI has somewhat different goals than academic AI. In gaming we are looking for intelligence which is primarily fun to interact with, instead of a ruthlessly efficient one. Programming AI is very different than programming other parts of a game. For ex. rendering is highly structured and practically all games use similar algorithms and techniques. AI is special because intelligent behaviors must be tailored for specific gameplay design goals. This means that artificial intelligence programmers must also think like game designers. Changes in AI coding can have a big impact on gameplay. This makes it harder to contain AI implementation as separate programming discipline. Another issue is that good AI may behave in unpredictable ways. This may be perceived as a benefit because it makes a game more interesting and full of surprises. It can also become a problem where your own AI is smarter at the game than you and it finds imbalances in your design, breaking the game for the players. Chess playing programs are considered one of the successes of AI development. Chess computers has made the news in 1997 after IBM's Deep Blue beat Garry Kasparov who was then the reigning world chess champion. At the time it was a sensation and even Kasparov was dismayed and surprised that he lost. Today times have changed. For many years now the best chess software can consistently beat world champions while running on consumer hardware, like a laptop. Vladimir Kramnik, also a world champion, played a show match vs. Deep Fritz in 2006 and lost convincingly without winning a single game. Although chess software appears smart it's in fact only doing clever searches through the game tree and picks best moves based on evaluating position score. It's possible to summarize its whole operation in one sentence. Chess proved to be a rather easy problem to solve on a computer. Modern chess software plays nothing like a human. Its strength is based almost completely on its speed of searching. Many games share certain AI problems. For ex. in most game worlds agents must find their way from point A to point B. This is called pathfinding and modern games have this nailed. The standard solution is using so called "A*" ("A star") algorithm which was originally designed as a general graph traversal method. Pathfinding works in somewhat similar way to chess programs. In both cases intelligent solutions are found using extensive search of all possibilities with scoring of best candidate moves. There is nothing particularly smart about these algorithms. They don't contain any deep insights about how the human mind works. Both chess programs and pathfinding are simply examples of solid computer science. They aren't very interesting to serious AI researchers. One of the classic methods of solving AI problems in games is by using state machines. In order to use such a machine you must divide desired behavior into a finite number of discreet states. You also must specify rules of transitioning between those states. Early games with simple mechanics relied on such systems. For ex. in a platform game you may have a monster which has the following states: attack, patrol, escape, taunt. You implement behavior for all states and specify what must happen to switch to a new state. One problem with this method is that it doesn't scale well with the number of different states. When you have just four it works fine. When you have dozens of them then density of connections between states can be very high and such systems become a tangled spaghetti code which is very hard to modify and maintain. Modern games often use a technique called behavior trees. This method of modeling artificial intelligence is somewhere similar to hierarchical state machines. You create a description of a behavior using nodes. In a state machine each node is a state, while in a behavior tree each node is a task. BTs are in many ways much more sophisticated than state machines. Using them it's possible to implement much more complicated behaviors. Another advantage is that they are hierarchical which allows creating modular systems, making behavior trees more suitable for team work and solid software engineering practices. One more technique which very popular among AI professionals are artificial neural networks. Initially they were intended to simulate how animal brain works. In practice it turned out that they are very different from a real brain and their purpose narrowed significantly. An ANN is based on a collection of connected units or nodes called artificial neurons which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit a signal from one artificial neuron to another. An artificial neuron that receives a signal can process it and then signal additional artificial neurons connected to it. One of the most interesting features of neural networks is that they have to be taught in order to operate correctly. This makes them somewhat similar to a living organism which needs also to learn in order to exhibit intelligent behaviors. There is a good selection of books about AI on the market. I recommend starting with "Artificial Intelligence for Dummies" as it seems to be an easy to read introductory book. "Artificial Intelligence for Games" by Millington contains a collection of commonly used techniques in game development. "Programming Game AI by Example" by Buckland is another good one for game coders.  Finally, "Artificial Intelligence - A Modern Approach" by Russell & Norvig is a thick, academic textbook which should teach you the fundamentals. I hope you enjoyed this brief overview of artificial intelligence. It's one of those fields where deep innovations are still possible. Next topic is multiplayer. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Computer Graphics

Hi, I'm Paul Miller and today's topic is computer graphics. When you make your first game you will notice that you spend huge amount of time working on your visuals. Delivering great looking graphics is the main challenge in game programming. It's so important that whole companies were built around making things look better. In this article we will explore fundamentals of this field. Computer graphics history started in the 50's with the first digital machines. Initially drawing anything was a challenge. Hardware was extremely limited and first displays were very primitive. One of the first games ever to feature any visuals was Tennis for Two. It was developed by William Higinbotham from  Brookhaven National Laboratory using an analog computer and it displayed its output on an oscilloscope. This game was somewhat similar to Pong, but it felt more like real tennis. The phrase "computer graphics" itself was coined in 1960 by William Fetter, a graphic designer for Boeing. The 70's saw a lot of progress, especially in the University of Utah. One of the enduring symbols of that era is the famous teapot model created by Martin Newell. In the 90's first accelerated 3D graphics card were developed for the home market. Although professional graphics workstations were available earlier from Silicon Graphics and others, it's the invention of a modern Graphics Processing Unit or GPU for home computers which transformed the landscape for gaming. The first commercially successful accelerator was 3dfx Voodoo 1 card. It paved the way for all the modern cards we have today. 3dfx pioneered hardware rasterization for the home market and changed the world. Later 3dfx made several business blunders and went bankrupt. Nvidia, today's powerhouse, acquired their assets and hired their best engineers. Rendering in modern games is highly standardized. The era of wild innovation is over. In the past people like John Carmack could invent whole new rendering systems, unlike anything before. Today it doesn't happen. The closest match would be Minecraft with its voxels, but even that game is largely based on classic rasterized rendering principles. Modern graphics hardware is optimized for drawing very fast lots of triangles with custom shaders. This unification of graphics technology has some big advantages. You aren't expected to reinvent the wheel every few years. If you learn solid theoretical principles you can apply them directly to your games, without a need for some kind of crude optimization hacks. Modern game renderers draw inspiration from the latest graphics research with ease. Two main methods of creating CGI today are rasterization and ray tracing. Rasterization is a process which takes vector data and converts it to pixel data. For ex. it takes three point description of a triangle with its color and it can draw on screen a group of colored pixels which look like a triangle. All modern computer games use this technique. In the past some games used other methods to draw 3D graphics. For ex. Wolfenstein, Doom and Duke Nukem 3D were based on variants of ray casting. There wasn't a single triangle drawn in those games. Ray tracing is used for offline rendering as seen on TV or in cinemas. It works  by tracing virtual rays from the camera. Early ray casting engine were in many ways more similar to ray tracing than to modern methods. Ray tracing is a technique which allows for higher image fidelity but it's too computationally expensive for interactive software. Recent advances in graphics hardware promise bringing true ray tracing to home computers as an auxiliary method of rendering for those phenomena which can't be accurately reproduced with rasterization. Computer graphics is a large field with a well developed body of knowledge. However to find your way around all that wealth of information you need to be familiar with just a few key concepts. In the reminder of this article I will mention some fundamental ideas which you should research further to gain practical understanding. The four main elements of any 3D image are: models, lights, cameras and the screens. Models are typically composed of triangles which make meshes. Lights are objects placed in a scene in order to control shading of models. This process of shading is accomplished using little GPU programs called shaders. Cameras are used to control transformations of 3D objects and their operations are implemented using matrices. Finally, the screen is where it all ends, but even at this stage you can apply various image-based effects in order to stylize your output. In order to render any 3D image on screen there must be some kind of transformation system in place. The problem is that when you have a vector model in a file your computer has countless ways to present it on screen. Transformations are geometric operations implemented using matrices which convert 3D data from object space to screen space. There are three commonly used transformations in a stack: object space to world space, world space to camera space and camera space to screen space. This transformations are combined into a single matrix which is applied to all triangle vertices per frame. Note that this process doesn't show anything on screen. It's just a mathematical conceptualization of operations in 3D space. In order to see something on your monitor the output of transformations must be rasterized or ray traced. Modern video games commonly use a concept of a scene graph. This graph is data structure which holds description of the main elements of the 3D area which should be rendered. It's a hierarchical structure based on a tree. Each scene graph has a root, various branches and ultimately leaves. These leaves might be for ex. meshes or other primitives supported by the renderer. Scene graphs are very important in games because many optimization techniques depend on them. When you think about a complex 3D environment in a game always remember that it can be completely reduced into a single hierarchy of objects which are then treated in a rather uniform way. It may look very complex, but inherently it's handled by just one big data structure which handles most spatial relationships between objects. While thinking about rendering solutions for your game it's useful to have a working model of the whole graphics processing pipeline. Going into details of this could easily fill a book and such books are already written. Now, I would like to share with you a very coarse, but solid, high level view of the stages in frame processing. The four main stages in order are: scene extraction, frustrum culling, visibility estimation, occlusion culling. Scene extraction means that your game must define very broadly what should be drawn as a fragment of your whole game world. Frustrum culling removes from processing all elements which are certain to be outside of the current camera view. Visibility estimation is often called PVS stage, or Potentially Visible Set. This stage further eliminates hidden objects. Finally, we have occlusion culling which again, removes hidden objects which are occluded by something else looking from the camera position. There are great many books about computer graphics, but only a few true classics. "Computer Graphics - Principles and Practice" is a classic CGI bible for all people who want to learn the basics. "Real-Time Rendering" by Akenine-Moller is another classic which is more suitable for computer game programming. "Graphics Shaders - Theory and Practice" by Bailey & Cunningham is an excellent introduction to shader development. "The Image Processing Handbook" by Russ & Neal is a solid choice for learning pixel manipulation techniques. I hope you enjoyed this brief overview of computer graphics. Game development is centered around creation of visuals and it will never change much. Next topic is artificial intelligence. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Computer Science

Hi, I'm Paul Miller and today's topic is computer science. Video games are software which is executed on a digital machine. Ultimately every game must be reduced to hard computer science in order to make it real. You should know computers really well if you want to be a skilled game developer, especially a programmer. In this article we will explore fundamentals of what computer science is. Modern game industry is a serious business. Garage days are largely over and making games requires some serious engineering and know-how. Triple-A games are massive computer science projects. Although those products are made so that we can have fun, creating them is no laughing matter. Completing a serious computer science engineering project calls for appropriate training. Among game developers it's engineers who need the most formal education. Artists and designers don't need a college degree to get really good and professional, but becoming an excellent systems engineer without a degree is very challenging, but still possible. John Carmack is one of the greatest game programmers of all times and he is a college dropout. Computer science is a large and diverse field of knowledge. There are many big branches which alone can be studied for many years. Major sub-disciplines in CS are: computer hardware, algorithmics, operating systems, networking, programming languages, software engineering, database systems, computer graphics, artificial intelligence and theory of computation. As you can see a lot of stuff goes into understanding computers. That's why this field has fascinated me for so long. You can spend a lifetime studying computer science and game development without mastering it fully. Making games is a much broader problem than just computer side of things, so if you want to be a well rounded independent developer prepare yourself for some serious learning. If you want to get good at computer science you shouldn't neglect studying mathematics. Historically the whole field of computing evolved from mathematical research. Alan Turing, the father of the digital age, was after all a mathematician. It's possible to be a great computer programmer without having a large math knowledge, but the more math you know as a coder, the better for you. Making a modern 3D game requires solid understanding of vectors, matrices and linear transformations. Physics simulations call for knowing calculus pretty well. Computational geometry is the backbone of collision detection. Ultimately the world of computers is built on top of the world of mathematics and there is no way to deny that. Theory of computation is the most fundamental aspect of computer science, beyond raw mathematics. People like Alan Turing and Alonzo Church studied what can be calculated using a machine. From their work the famous Turing machine concept emerged.  Every modern digital computer is a device which is in principle compatible with a Turing machine. Computation researchers are looking at the frontiers of algorithmics. They are analyzing what can and what can't be efficiently done on a computer. Not every problem can be solved by a machine. There are many problems which lay beyond capabilities of any computer or a robot. Computers as machines have certain possibilities and also certain limitations. Theory of computation explores those and gives us some interesting insights. Computer hardware is the backbone of any video game. It's a good idea to learn about it. Studying basics of electronics will broaden your horizons and may allow to troubleshoot defects in your own machines. Beyond raw electronics there is computer organization and design which is a separate discipline. There is a lot to be learned about how computers work. You should study also specific architectures, especially the PCs which are dominant across the globe. It's also a good idea to learn a bit about computer history. When you read about problems of programmers who worked with early digital machines you start to appreciate more all the progress we've experienced since then. Algorithmics is called by some experts "the spirit of computing". Learning to understand and to design algorithms is at the heart of computer science. If you want to build games and you want to pick one skill from computer science to master, it should be the art of algorithm design. Ultimately all gameplay in a every single video game ever can be reduced to algorithms. When you know how to design them well you are able to create a much more elegant, subtle, deep and precise gameplay systems which separate average games from the great ones. Learning algorithmics is essential for programmers, but many great designers are also skilled at it. Will Wright from Maxis and Peter Molyneux from Bullfrog are two famous examples. Thanks to their coding skills both are known for designing games with interesting and unique gameplay systems. There are countless types of programs on a typical computer, but one type stands out as special. It's the operating system. Every modern computer has such a system and the theory behind them is very elaborate. It's a very good idea to study this theory in order broaden and deepen your computer education. You are probably using an operating system every day, but how much do you know about their inner mechanics? There are good college texbooks about them. Computer games are built on top of engines which are made as a layer above an operating system. If you are interested in engine development, understanding deeply operating systems if crucial. Another field which is of paramount importance in practical computing are databases. Every modern online video game uses one. When you work on multiplayer aspect of your game you will very quickly find yourself working with a database solution. Also implementing business logic of modern game services requires solid understanding of database systems. You certainly don't have to be a database professional in order to make games, but reading at least one college textbook about them will teach you the basics in order find your way around. Computer science books could fill an entire library. "Computer Science" by Brookshear & Brylow is an excellent, broad general purpose introduction. For beginner programmers I recommend studying the theory of computation. "Algorithmics: The Spirit of Computing" by Harel & Feldman is a great primer about the most fundamental issues. "Computer Organization and Design" by Patterson & Hennessy is a primer about the hardware side of things. "3D Math Primer for Graphics and Game Development" by Dunn & Parberry is a gentle introduction to game math. I hope you enjoyed this brief overview of computer science. It's a discipline you must study deeply in order to become a competent game developer. Next topic is computer graphics. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Support

Hi, I'm Paul Miller and today's topic is game support. When you are just starting out you will probably be very focused on finishing a decent game. This is however not the whole story of game development. Games must be also supported in various ways after release. In this article we will explore fundamentals of what this means in practice. There is some overlap between game testing and support. When you test your product you are looking for flaws. When you are in support mode you are still searching for things to fix and change based on your player's feedback. Games which achieve high levels of popularity typically require much more support efforts. That's because larger player base can more easily find smaller flaws and will surely have more diverse needs. This results in a larger number and greater scope of changes to your game after release. Popularity is the main measure of success in this business, but it comes with some additional costs as well. Game support is part of customer service in your company. Customer service is a very important part of any business. It's so influential that whole world-class brands were built around it, like Nordstrom department store chain, which is famous for its "customer heroics". Support means interacting with people all the time in various ways. Customers will form opinions about your whole operation based on a single interaction with a service person. Great treatment of customers leads to higher satisfaction levels and ultimately may lead to higher loyalty. Loyalty equals easier subsequent sales and higher tolerance for premium pricing. In order to fully employ modern support techniques you need to make your game online only. Games which don't have constant access to internet are much more limited in this regard. In addition of achieving better contact with your players, going full online will also reduce piracy. Apart from a network connection you also need some kind of platform for delivering patches, updates and communicating with your player base. For a small indie studio the best option is using something like Valve's Steam or Google Play. Rolling your own solution is challenging and requires major effort. Customer service is a major topic and whole books were written about it. There people around the world who specialize in it as their main career. Here I would like to simplify this topic in order to organize your thinking. There are four main elements of game support which should be addressed by any indie studio. These are: metrics, patches, updates and tickets. You can't ignore any of these if you want to have a first class operation. There is much more to customer support than what is mentioned here, but it's a good start for developers who are new to this. When your game is out you should constantly gather player feedback. There are many ways to do it. You can for ex. collect data by analyzing social media buzz about your game. You can scan forums, Reddit posts or YouTube comments. There is however a better method to gather data first hand. This method is collecting metrics directly from your game client. Metrics are various measurements gathered by monitoring player activity. Typically you will analyze them using statistical methods. They can be a goldmine of marketing data which can be used to make smart decisions about changes to your game in the future. Every game contains flaws and bugs upon release. Nobody can do it perfect at the outset. The mark of all great game studios is that they are always chasing that elusive perfection. Studios like Blizzard Entertainment release patches to their games even after a decade since initial launch. This shows extreme dedication to quality and high levels of perfectionism. Excellent brands are always like that. It's said that they "sweat the little things". You should also release patches to your game as long as some people are playing it. Don't abandon your game unless it's completely dead. Game updates are different than patches. Patches are all about fixing bugs and improving balance. Updates typically add new content or mechanics. If you want to improve what is already there, you issue a patch. When you want to add some new functionality you deploy an update. In the long run updates are as important as patches. That's especially true for games which use "free to play" business model. When your goal is to keep players coming back possibly for years you must produce new content updates regularly. Generally speaking updates are very important for games which are designed as long-term services. Serious companies have automated support systems which are based on customer tickets. Tickets are typically messages from people who complain about some kind of problem or who are seeking help. In a first class business customer support person should respond to a ticket within 24 hours and sometimes instantly. Note that when you game becomes very popular the number of such tickets may become quite large. This may require hiring quite a bit of people to handle then. One way to solve this problem is using you biggest fans as an unpaid customer support resource through forums and other social media features. One of the most famous companies which takes game support seriously is Blizzard Entertainment. They are famous for making games which last on the market for decades. Blizzard takes the time to make a game which achieves greatness. They are not satisfied with making products which a just good. They are always striving for greatness. In their customer support efforts they are also one of the best. It's shocking for how long they release patches to their most popular games. For Diablo 2 which was launched in the year 2000 they released a patch in 2016. That's whole 16 years of active support. Starcraft was released in 1998 and they published a patch for it in 2018. That's a shocking 20 years of support. Imagine their dedication to quality. Extremely few companies are like that and  also very few computer games are played for two decades. There aren't any books about game support but there are many about customer service. "Customer Service for Dummies" is a good primer for beginners in this field. "Customer Service - A Practical Approach" by Harris is another good general purpose manual. If you want to do the supporting yourself, it's a good idea to learn more about writing well and about social skills. "The Elements of Style" by Strunk Jr. is a classic primer for ambitious writers. "People Skills" by Bolton is  great book about handling social interactions with grace, including stressful or conflicting situations. I hope you enjoyed this brief overview of game support. You must offer an excellent customer service to your players in order to make them loyal to your products and company. Next topic is computer science. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Testing

Hi, I'm Paul Miller and today's topic is game testing. When you just starting making games, testing is typically not on your mind. There are so many problems to be solved before you have anything half-decent to test. When you grow in experience you will find good solutions to most of those development issues and testing for correctness and quality will become more and more important. In this article we will explore fundamentals of game testing. In software development testing is an important and complex process. There are many books dedicated to teach you to do it well. There are lots of different types of tests used in practice. There are even whole agile methodologies built around them, like Test-Driven Development. It makes writing automatic tests almost more important than creating the code for testing in the first place. In games ensuring quality is especially involving since we have to check also if our games are fun to play which is a rather elusive concept. Video games are generally harder to test properly than regular software. At the other hand, game failures are less important than in many other, more critical fields. Modern software houses take testing very seriously. Each major company has its own Quality Assurance team. These people test software and look for various flaws full-time. In a larger firm it may be a sizable group. Testing of normal software is often highly formalized and organized which has to be done a bit differently with video games. The problem with computer entertainment is that judging quality of a product is only partially objective. You can always count crashes of your game, but you can't count how much fun people have. The result of this is that fully testing games for quality is to certain extent an art rather than science. There are many different types of tests in use among software developers. When you first learn about it, it may be even a bit overwhelming. At the core games are programs, so you can use most industry testing methodologies directly or with some modifications. It's useful to organize your thinking about testing and realize which game areas are most important to verify. I think those four areas are: reliability, interface, gameplay and performance. If you thoroughly validate these four elements, your game will not suffer from any major problems. Of course it's easier said than done, but you have do it in order to deliver quality to your customers. There are two main approaches to software testing: white-box and black-box. White box method assumes that testers have understanding of how the program works internally. White-box tests are often designed by programmers who implement the code to be tested. These methods are highly technical in nature. One popular type of white-box tests is code coverage analysis. The second approach is black-box testing. Here it's assumed that quality assurance people don't know how the program is built. They only judge how it appears to work. This type of testing doesn't require programmers and regular users can do it with little training. One type of popular black-box tests is verifying functionality through running use cases which are designed according to program specifications. Unit testing is the most fundamental type of program verification. It's a variant of white-box testing. Unit tests are little automated procedures which check code for correctness at the most basic level. In structured programming individual functions are tested. In object-oriented programming individual classes are verified. It's possible to design a more elaborate unit testing system. It may for ex. include metrics analysis, peer code reviews, code coverage analysis and other software testing practices. Two another variants of popular software tests are integration testing and system testing. Integration testing is a module or component level method. The idea is to verify that interfaces of different parts of a program are compatible and that they are functioning as specified. These parts are modules in structured programming or components in object-oriented programming. They are integrated together and tested if they work correctly as a whole. System testing is similar, but in this case the complete software package is tested against specifications for ex. by running predefined use cases. Integration and system testing are variants of white-box testing. Even most gamers are familiar with alpha and beta testing. Alpha tests are somewhat similar to system tests, but focused more on customer wants rather than raw specifications. Larger software houses have internal teams of full-time testers who run those alpha tests. These people typically write some kind of reports where they describe flaws they've found. Sometimes it may be less formal where testers are treated like customers and asked for their subjective opinions. Beta tests can be considered a form of external user acceptance testing. They are public and the number of testers is far greater than in any other phase of a project. Both alpha and beta tests are variants of black-box testing. Aside from classic software testing video games must be also playtested. Playtesting is  black-box method which involves real players checking the game holistically. Playtesting is very important part of development. It's especially crucial for highly innovative games which have unique gameplay. Game developers, who spend enormous amount of time on their game, can lose objectivity and fall in love with their own creation, like with their own baby. External players have typically a much more sober view of the game and they can rather easily find various flaws which are hidden from core developers. One of the classic examples is validating game difficulty. Developers play recent builds all the time and as a result they may tune difficulty far to high for the general audience without even noticing it. External playtesters can catch this problem very quickly. Getting into testing is one the easiest jobs to get in the game industry. If you have no marketable skills at all, but you love playing games, you may have what it takes to became a decent tester. Spending all day long hunting for bugs and flaws is not the most glamorous jobs there is. As a quality assurence employee you will not simply get paid for playing games full-time. Testing a game is very different from a normal playthrough. In many companies the best and most valuable testers have some career options. There are some cases where a humble tester became a lead designer for some later project. Think about it. You can get an easy, entry level job in games and later even become a designer. There aren't any good books precisely about game testing, but there are many about general software testing. I recommend "Quality Code" by Vance to learn fundamentals of software verification. "Debugging" by Agans will teach you solid, universal principles of removing bugs from software and hardware. "Clean Code" by Martin is an excellent work about how to write code which is of high quality at the outset. "Game Design Workshop" by Fullerton is a good volume about playcentric game design. I hope you enjoyed this brief overview of game testing. Constant verification of software is necessary to achieve high quality and strong sales. Next topic is game support. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Content

Hi, I'm Paul Miller and today's topic is game content. Computer games are a special type of software. While making most other programs developers spend nearly 100% of their time writing good code. In games huge amount of effort is required to create levels or worlds and fill with them with interesting stuff. This is one way in which makes video games are very different from most other types of computer software. In this article we will explore fundamentals of game content production. Game content is simply everything which goes into the final product, except code. There are many types of content: textures, icons, models, animations, effects, sounds, music, speech, cut-scenes, levels and even mods. While a single person can be a good game programmer who can make most game systems, it's practically impossible to be able to make all content on your own. While writing software it's often possible to hide your incompetence in various ways. This is not the case with assets like art, since here everything is in your face and must be of high quality. For ex. if you are not a composer, your programmer music will hurt the ears of the more sophisticated players. In game development asset production is organized into so called content pipeline. It's a management process designed to optimize creation of all new data which has to be integrated with code. In big game houses this process can get rather complex and quite expensive to run. Some teams use tools like Perforce to manage massive number of game files. The enterprise license for Perforce still costs hundreds of dollars per seat per year which may sound a bit scary to a beginner in his bedroom. Today there are many free tools to ease your pain in this department, so don't fret. Anyway, small games made by tiny teams don't require any sophisticated asset pipelines, so it's not a beginner problem. In the past development of games was dominated by solving technical challenges. Since computers were very limited it was the job of a programmer to squeeze as much juice from their machine as possible. Today hardware power is extremely large and the job of a coder is much less focused on clever optimizations. Modern games use massive amount of data comparing to their code size. A big triple-A game can take 50 or more GB of space on your drive. The amount of assets in larger games today is shocking. We are talking about millions of files in some cases. Compare that to Atari 2600 days where a full game could fit in a space occupied today by a single icon PNG. Not only modern game assets are numerous, they are also very complex. In the past characters in 2D games were simply drawn by a pixel artist, bitmap by bitmap. It required a lot of skill and patience, but it wasn't very complicated. Modern characters and game worlds are extremely sophisticated in comparison. Back in the 90's if you wanted a soldier to have an eye, you plotted a single pixel on his face and you were done in many cases. Today artists model eyeballs, eyelids, eyelashes and animate everything patiently. The amount of work to make a character in a modern game is several orders of magnitude larger. The same is true for other asset types, including animations. Graphics creation is the main bottleneck. All those complex assets which have to be made require lots of manpower. As a result modern development houses hire much more artists than programmers. In the distant past you needed one coder and one artist to make a hit game. Today you often need at least ten programmers and thirty artists. Largest studios hire whole armies of content developers. For ex. The Witcher 3 was touched by around 1500 creators. I'm sure that most of them were asset makers who worked on making that game look like a believable fantasy world. Just ponder that number. It's a massive group of people. It's so large that you can't even realistically make a single photo which shows your whole team smiling. In the future it's likely that elite teams will get even larger. Creating content for a modern game is a big challenge for independent developers. That's because they are often working in small teams and can't afford hiring lots of artists. It is why you see so many simple 2D games on Steam. Simplifying graphics allows greatly reducing required asset complexity allowing making a game on a tight budget and on a short schedule. If you want to make games on your own you must learn programming and basics of graphics creation. You should also have a good eye for well made art. There are many ways to bring in more assets into your game without spending a fortune. If you are rich, the best method to create assets for your game is by hiring enough people. This is the best way in many cases, especially when your game is highly unique and requires lots of complex, custom work. For many solo developers this option isn't available because of prohibitive costs. Another option is designing your game around very cheap or free content available online. If you have some art skills your can save yourself a lot of effort and money by modifying assets created by more skilled craftsmen. For many smaller indie games this solution may work well. If you design your game to be abstract and 2D you can make all assets needed on your own, even if you are mostly just a programmer. Even a tiny game can make significant money, so don't dismiss this idea at the outset. If you use Unity engine you can exploit its Asset Store. It's a shop for developers which contains a huge wealth of high quality 2D and 3D art, music, tools, scripts and other goodies available of-the-shelf. Using this store with Unity is an excellent choice for a solo developer or for a tiny studio. Another use of that place is finding talent for your projects. For ex. if you need a programmer or an artist for your indie team, you might be able to find somebody highly qualified to work for you on the Asset Store. You don't have to give them a full-time job. It can be just an assignment, where you pay only for the work done, instead of per hour. There is one other option to bring in more stuff into your game: procedural content creation. Some people believe that this is some kind of "holy grail" of game development which will solve all problems. I don't share to that viewpoint. It's possible to generate procedurally a lot of things in games, but this technique has limits. It's a good idea to think about procedural generation as an aid for your asset developers instead of as a replacement for them. This means that to exploit it fully you need even more programmers to create great procedural tools for your artists and you need even more skilled artists. For all your efforts you will be able to build much larger game worlds filled with more interesting stuff to do by your players. Procedural generation is hard to do well and it will be fully exploited only by the largest game studios. There are countless books about creating various types of game content. Far to many to list here, as there are many completely separated disciplines among asset makers. If you are mostly a programmer, you can do a lot to learn more about making art or levels. There are several good websites with totally free assets which can also be used for commercial purposes. There are sites with free photos, sounds, music and some other stuff. If you can learn to modify content made by others you get quite far just by using free materials. I hope you enjoyed this brief overview of game content. Learn how to deliver a lot of it in order to make your games feel rich. Next topic is game testing. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Genres

Hi, I'm Paul Miller and today's topic is game genres. There is more to them that meets the eye. Many people think that genres are simply labels of different game types. There is much more to that. Proper understanding of game genres will allow you to become a more creative and original designer. In this article we will explore fundamentals of how genres relate to good design and innovation. Beginner designers often tend to have a mindset of an artist. They are longing to make something very unique and at the same time groundbreaking. In games sales are everything and everybody wants to make a hit. You need to make a hit, since bigger games require large budgets and you can't afford to achieve poor sales, or you will suffer financial losses. In order to maximize your chances for success it's important to avoid designing in a vacuum. The safest way of creating a new game is by basing it upon an already existing successful one. You don't have to make a clone. Just start your design by standing upon "the shoulders of giants" which came before you, as Isaac Newton would put it. Lets try to understand game genres in a deeper way. It's not only a way to classify a game by type. A genre is ultimately a collection of design patterns. This simple realization is the key to unlock the potential of genre analysis. When you know that each genre is a label given to a coherent set of design patterns then your next task should be analyzing types of games which interest you as a designer, looking for valuable ideas. Each genre has its own unique set of patterns which are occurring very frequently. When you indentify and name those patterns you will build a personal design vocabulary and knowledge which will aid you in creating something original and impactful on your own. It's fruitful to analyze games looking for solid, proven design patterns. One of the simplest techniques to find new ones is taking a certain genre as a whole and looking for all those elements which are reoccurring in almost every example. For ex. in first person shooter games every single modern PC game uses WASD keys to move a character and mouse to aim a gun. In all of FPSs camera perspective is obviously from the first person. This two interface patterns are universal to first person shooters. You should probably use them too if you want to make game in this genre. You can innovate, but you shouldn't break player's expectations. For ex. giving an option to lean sideways from cover using Q and E keys is not than common, but it's a valid option. When you indentified lots of various, proven design patterns you can start some truly creative work. The next step is looking for new ways to recombine the patterns you've found. This can be a very powerful way to create solid and original designs which exhibit good qualities, like internal balance and interesting, interlocking mechanics. Lets say that you analyzed some driving games and some RPGs. You know now that in a driving game the most important aspects are simulation model and graphics. In RPGs you realized that the story, questing and characters are dominant when it comes to quality. You can combine these two insights by designing a driving game with strong characters and narrative. There are many American movies about driving which can inspire you further. You've  found a room for innovation in an organized and structured way. You should understand that cookie-cutter games are not for independent developers. When you make a game which is designed very conservatively, with no innovation, then you will be judged solely on your production values. For ex. if you make a generic military first person shooter then everybody will compare it to the latest Call of Duty. If you game looks worse then people will not forgive you that, since you didn't deliver anything new to market in order to please players with something else than your graphics. When your game is very interesting and fun to play people are willing to forgive you a lot. You don't need extreme visuals and incredible polish at the outset. Just make sure that your game is able to hook players and keep them glued to their monitors. You can often bring in polish and higher fidelity later with patches. One of the classic first person shooter games is System Shock from 1994 by Looking Glass Technologies. It was a deeply innovative game. It combined first person action with strong RPG elements. It's shooting was inferior to Doom's because they didn't use mouse look mode. The game was much slower and more cerebral than most action games of the time. What it lacked in speed it brought in depth. It had an excellent story and voice-acting. It had deep mechanics many of which are uncommon even today. For ex. while walking around the space station you could enter cyberspace terminals in order to experience totally different game world. There were also many mini-games which could be found on little disks scattered around. Today, games like BioShock try to follow in its footsteps. Among RTS games Homeworld stands out as a special title. Almost all real time strategies of the era were very flat, 2D games. Homeworld innovated by introducing real 3D action into the genre making complex spaceship maneuvering the key mechanic. The game also introduced many to the space opera Sci-Fi genre with it's larger than life epic story. It featured masterful narrative which was executed with extreme grace, excellent voice-acting, great, sketched illustrations and stylish naming. The whole experience was very fresh, interesting and polished at the same time. Homeworld is one of the masterpieces of game design. One of the most innovative games of all times is Minecraft. It's different in practically every way. Its has unique graphics, gameplay, mechanics, game world, technology and even business model. Minecraft was made using Java which is extremely rare among popular games. It has a lot of procedurally generated content which is almost unheard of outside of some specific genres like ARPG in the style of Diablo. It's a game with very few goals which makes it starkly contrasting to tightly scripted campaigns of most triple-A titles. It's a game which gives huge amount of freedom to its players. Probably more than any other game ever. It's also extremely flexible, allowing for incredible mods and total game conversions. Lastly, it pioneered financing models which we now know as croudfounding. Minecraft is an astonishing achievement of pure creativity of a single man: Marcus Persson. It's important to understand what true innovation means. Many people think that innovating means doing something significantly different. When you do so, your games becomes merely original, like a work of art. Originality and innovation are not the same. When you are original you are just doing something new. When you are innovative you are doing something new and better. The most enduring feature of any major innovation is its strong impact upon other creators. Look at the flood of Minecraft clones. There are dozens, if not hundreds, of games deeply inspired by Notch's success. The ultimate goal as a game designer is being able to create a whole new game genre. If you manage to do that, you will be walking among the stars. There aren't any books about game genres, but there are many about creativity. If you want to be a strong designer you should work on expanding your creative faculties. There are ways to improve it and one of them is by better understanding the process itself. "Creative Visualization" by Gawain is a good primer on using your mental eye. "Imagination First" by Liu will teach you how to open your mind for new possibilities. "Sparks of Genius" by Root-Bernstein is about mental techniques of exceptional people. Finally, "The Design of Everyday Things" by Norman is an excellent introduction to principles of general design. I hope you enjoyed this brief overview of game genres. Understanding them well will allow you to be much more effective as a designer. Next topic is game content. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Design

Hi, I'm Paul Miller and today's topic is game design. Designing is probably the most fun aspect of game development to many people. Although it seems that almost everybody can do it, in reality very few people are skilled at it. Modern game industry is desperately lacking in great designers. Not enough of solid design is also the most crippling flaw in any game which can totally kill a project. In this article we will explore fundamentals of game design. There are many different design disciplines. There is game design, graphics design, industrial design, fashion design and many others. If you want to be good at making games, you should broaden your interests into other types. For ex. there are some lessons to be learned from master architects if you want to make great levels for computer games. Every game needs a lot of graphics design. Most projects have things in them and characters with clothing, so industrial and fashion design applies. Study also general principles of design which apply to any sub-discipline, including games. Apart from directly studying design it's a very good idea to learn some psychology. Psychology is a large and well developed science. There are countless good books and articles about it. Studying it diligently will make you a much better designer. That's because you will understand more how your mind works and how to "push the right buttons" when pleasing others. Modern psychology is full of concepts which you can almost immediately use in game design. It's a goldmine of ideas. It's usefulness goes well beyond making games into your personal life. If you want to be a full-time designer, even getting a college degree in psychology is a not a bad course of action. Game design is a rather large field and there are many ideas floating around. It's useful to structure your efforts in a way which is conductive to good results. I divide this discipline into four main areas. My model is a modified version of Jesse Schell's work from his book "The Art of Game Design". According to my knowledge there are the four key elements to any game: interface, mechanics, progression and psychology. Note that these are four dimensions of your design and they are internally linked in design space. This means that you can't work on each of them completely separately, as there are interactions between them. Interface design is extremely important in games. That's because games are a highly interactive software, where users input lots of commands per minute and need appropriate responses. You must understand that interface does not mean just graphics and sound output. It's concerned mostly with analyzing and planning proper human-computer interactions. It's a much more diverse field than just graphics and audio design. Four key factors in interface design are: usability, simplicity, accessibility and aesthetics. Mechanics define what players actually do in your game most of the time. Gameplay is experiencing game mechanics in action. Four key factors in mechanics design are: dexterity, tactics, strategy and chance. A good game should balance those four dimensions, so that players can use more than just one of their abilities. A well made game should reward playing with dexterity, tactically and strategically and it should also give opportunities through chance. Proper design of game mechanics is a large topic and it's very genre specific. Progression defines how your game evolves over time. For ex. chess has the opening, the middle game and the endgame. Jesse Schell in his book suggested than progression is always based on a story. I disagree with that. There are many examples of classic video games which have practically no story at all. What is the story of Pac-man? What is the story of Tetris? What is the story of Asteroids? All those games have no story and no characters. However they all have some kind of progression system implemented. Psychology is at the core of any design. Ultimately playing games is a mental experience. A game like chess is purely intellectual. It doesn't require dexterity, only tactics and strategy, but there is so called "psychology of chess". Every game should be designed from the psychological point of view. Psychology is a large and well developed science which contains many insights about how our mind operates. It's a good idea to use behaviorism in your designs. This means mostly explicitly planning a structure of rewards and penalties in gameplay. Long term player motivation and experience can also be analyzed using psychology. There is no end of using this science for improving your games. When you design your games you should try to think about everything in terms of patterns. Patterns are reoccurring design features which are used in many successful games. For ex. WASD and mouse setup in FPS games is an interface design pattern. Almost all FPS games use it because it's solid. There are many other patterns in different design disciplines. Over time you should develop a personal pattern dictionary, where you have a set of your personal favorites which you use very often. Having a unique set of patters which you can call your own will allow you to develop a personal design style which can become part of your industry reputation. Currently game design as a practice is not in good shape. I remember many great games from the 90's which are still much better than anything currently on the market. The times have changed and modern games changed with them. Today most products are designed not out of passion, but for the lowest common denominator. This is done to increase mass market appeal. Modern triple-A games are often extremely simplified, so that they are fully accessible to the least sophisticated gamers. When was the last time you switched ammo type in your gun? I remember this feature in System Shock from 1994, but you will not find it in the latest Call of Duty. You should remember that quality of your ideas is not the only factor which determines if your game will be highly playable. Great designers know that every awesome concept needs a lot of time for incubation and polishing. Great games are based upon good ideas which are extremely well executed. Look at a legendary company like Blizzard Entertainment. Their designs are always very conservative, avoiding any revolutions. They use time-tested, solid, proven patterns. They innovate very cautiously. At the same time their games have great production values and are polished with a stream of patches for decades. This is the mindset of game development champions. There are quite a bit good books about available sharing the topic of this article. "The Art of Game Design" by Schell is an excellent introduction for beginners. "Flow" by Csikszentmihalyi is a great book about the psychology of happy states of mind. "Psychology and Life" by Gerrig is a great book for people who want to understand others and themselves better. "A Casual Revolution" by Juul will teach you some principles of designing games for the masses. I hope you enjoyed this brief overview of game design. If you learn to do it very well your games will surely stand out on the market. Next topic is game genres. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Architecture

Hi, I'm Paul Miller and today's topic is game architecture. In game programming architecture is a hot topic. There are many ways to structure your game, but some are clearly better than others. Many intuitive methods may work for a simple game, but fail completely for a large one. In this article we will explore solid, time-tested design patterns which can be applied to a game of any size or genre. When it comes to game architecture there are two main approaches: code-centric and asset-centric. Unity 3D is know to be asset-centric. This approach caters mostly to beginners. People who are just starting out making games tend to largely think in terms of graphics, because that's the only thing they can imagine. I reality, games are built by programmers and all the assets are just data which is fed to game systems. Inexperienced artists and designers rarely understand that. Unity embraces this beginner mindset and makes it the default way to work. In this tutorial I will present basic game architecture patterns which can be applied very broadly. They can be used with both small games, like an Android puzzler and with large ones, like a triple-A MMORPG. The patters presented here scale very well with massive, serious games. When you master them you will be able to structure a huge program in way which is efficient when working in a large team on a high budget project. This four patters are: nodes, tasks, events and systems. These are the most important fundamental blocks of any well made professional game. Nodes are directly supported in Unity through the concept of a Game Object. The idea is simple. You structure your game as a hierarchical tree of objects which form branches of that tree. This allows you to have a very elegant representation of your whole game. At a glance you see what fits where. With proper branch structure and naming system of your nodes you can very easily manage large projects. Using this pattern in Unity is natural and obvious and it's one of the strengths of that engine. You can create a similar system in your own game or even implement it on top of some other frameworks which don't support it. Tasks are abstractions of your main loop. An example of a task is something like: render task, physics task, input task or AI task. The idea is to encapsulate processes which occur in you game in a reusable object. Tasks are typically reoccurring activities, like rendering a frame, or updating your game world. A good task system should support different schedules for execution. For ex. you may want something to happen every second, instead of every frame. You also want an ability to easily add and remove tasks from your main loop as your game changes state. In Unity the only abstraction of the main loop is MonoBehaviour's Update function. There is no concept of a task directly implemented and you are on you own to make it. Events are the main communication method between different parts of your game. Instead of directly linking various systems and objects you send signals from one object which are received by other objects subscribing to that event or signal type. An example of a event is something like: game over event, collision event, key press event or score change event. This pattern allows very elegant design or a large system which isolates object from one another, promoting encapsulation and separation of interfaces from implementations. As a basic rule, different systems in your game shouldn't know almost anything about each other and coordinate activities only through events. This pattern makes most communication in your game explicit and allows for event logging to a file, as well as more effective networking and debugging. Systems are objects which abstract biggest chunks of your game. An example of a system is something like: video system, audio system, input system or world system. Each system object manages its global state and supports startup and shutdown sequences. This pattern is very useful for high level, coarse game structuring. Most of your code will be placed outside of your system objects, but they are still very useful as program hubs. It's a good idea to also support sub-systems, so that you can create convenient hierarchies. Systems can also have a status and generate reports of their activities. For ex. a video system can report frames per second, resolution in use and the number of triangles drawn. There is a commonly used architecture pattern known as Model-View-Controller. This solution is a mapping of a very common situation in software design. This behavior is first input, then processing then output. Controller refers to input. For ex. you might have a character in your game world which is controlled using a gamepad. Most of the code which translates gamepad usage to character responses goes into controller. Model in this case would be the character's gameplay logic. View would be typically some kind of interface representation of said character, but it can be also a network view or AI view in some cases. MVC is a very flexible pattern which is especially suitable for multiplayer games, but it works well in other scenarios too. Another common pattern in hardware and software design is pipelining. The idea is to structure some processes of your game so that you use the output of one part as an input to another part which then generates new output and the process repeats. Many problems in game development can be expressed using this technique. For ex. in computer graphics we typically speak of a programmable graphics pipelines. Audio processing can also be pipelined. It's also possible to use this for creating command chains as in Microsoft PowerShell terminal pipes. It's a flexible design tool which can be used in many scenarios. Entity Component Systems are popular among many high-profile developers. This is a global design pattern which is very technical in nature. The main idea is to design a game in terms of systems which work by processing entities which are made from components. Properly designed ECS allows more flexibility in development, eliminating some OO inheritance problems and offering higher performance through good CPU cache alignment. ECS is an advanced, niche technique. Not everybody is using it and for a good reason. It comes with a fare share of new problems centered around coordinating different components. One of the first game ever which used this technique is "Thief: The Dark Project" from 1998. There aren't any good books about general game architecture. It's still not standardized and a bit tentative subject. One of the best books of all times about software architecture "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma. It's a cult classic, still the best after more than two decades in print. In general if you want to study software architecture you should focus on patterns. There is a whole online community of programmers dedicated to discovering and documenting new design pattern and you should explore it to find new inspiration for structuring your games. Check also UML, o Universal Modeling Language for some tips. I hope you enjoyed this brief overview of game architecture. Structuring your project properly is very important in production. Next topic is game design. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Programming

Hi, I'm Paul Miller and today's topic is game programming. There are many disciplines in game development, but programming stands out as the most important. That's because computer games as ultimately software. If you want to truly understand how video games are made, you must know well how to program computers. In this article we will explore fundamentals of game programming. Game programming is a very challenging activity. It's definitely not for everybody. Designing systems and algorithms is very taxing to the brain. After a day of work you will be totally exhausted. At the other hand it's very enjoyable if you have what it takes. I remember many deeply rewarding moments while coding my games and prototypes. It's a work which requires both strong imagination as well as detail orientation. If you are cut for this it may be one of the most rewarding jobs ever. Early game programmers were pretty much hackers. This was caused by great limitations of the hardware they were forced to use. They spent huge amount of time thinking about various little, clever optimizations in order to make their games possible on early machines, like Atari 2600 or later Commodore 64. John Carmack has made a name for himself in the industry by becoming one of the greatest graphics hackers of all time. Today this hacker mentality is still present, but to a lesser extent. Game programming changes rapidly. Every few years a new generation of hardware arrives and it always brings new challenges and opportunities. For ex. recently we moved to highly parallel programming on the GPU and on the CPU as well. Nobody knows well how to make games which should run efficiently on dozens of processor cores. For decades we had to struggle with coding for a single processor. This is just an example of a modern problem. The future will surely bring many new challenges. Modern game development is a big business and a single well made game can make billions of dollars. With such huge sums at stake it's natural that it all becomes more serious. In the past a single amateur in his bedroom could make a hit. Today it's largely impossible. Modern programming teams are big and tightly managed. Programmers are expected to be highly professional and specialized. There is still some room for a lone genius, but if you work in a larger organization, you will likely feel like a little gear in a large machine. Big games of today and of the future are large software projects. This calls of establishing of some professional practices and standards. Increasingly larger game houses use solid systems engineering principles and modern methodologies, like agile methods. This relentless drive towards professionalism comes at a cost. It's stripping game programming from its early romanticism. If you want to experience making games like in the old times, your only choice is to become an independent developer. In such case you will be your own manager and you will be able to work in your bedroom filled with empty pizza boxes. Video games are one of the most demanding software around. Your home computer is more than capable of doing typical personal or business work. Modern hardware easily handles word processing or spreadsheet editing. It very easily plays music or videos. Only gaming is a challenge. Hardcore players have to constantly upgrade their hardware to keep up with requirements of the latest games. No other type of home software is so demanding as computer games. This means that optimization of code is a very important art which should be practiced seriously. Games are so power hungry mostly because of graphics. In game coding almost everything revolves around programming of visuals. In a typical project around 90% of all your challenges will be centered around your video output. It's practically impossible to be a good game programmer if you aren't a good graphics programmer. Real-time computer graphics is a rapidly evolving field. Just look at the progress of game visuals in the last two decades. Its simply shocking. Graphics is also very important for marketing reasons which makes this field the most important discipline in game programming. Most programmers in the software industry don't care about graphics hardware. This is not the case in game programming. If you want to get good with coding real-time CG, you must know quite a bit about graphics cards and their APIs. If you use a of-the-shelf engine you don't need to know much about DirectX, OpenGL or Vulkan, but you still need to know well how to use graphics devices efficiently. This requires mastering some arcane knowledge. You can't get away from it, if you want to be a competent game coder. Although game making has became highly professional over time, there is still quite a bit of room for innovation. Many problems have tentative solutions. Big graphics issues, like Global Illumination, aren't solved completely. Some disciplines, like AI programming, are just emerging from the hacking days. If you have a knack for it, you may leave your mark on the industry with your ingenuity. Who knows, maybe you will be the next John Carmack of gaming. There are many sub-disciplines in game programming and over time you may want to specialize in one of them. There are systems engineers who write the most fundamental code. There are graphics programmers. There are tools programmers who write auxiliary code. There are also AI programmers, audio programmers, gameplay programmers, UI programmers and network programmers. On larger teams this specialization may go even deeper. If you are just starting out, don't concern yourself to much with this. Make a few small games and see what you like to do the most and what comes easy to you. If you are serious about mastering game programming, you should learn C++. It's the dominant language of systems engineering in games and beyond. C++ is one of the hardest modern languages in use. It's complex and sophisticated. It's a language which offers extreme performance and very little overhead, but it's difficult to write high quality code. C++ has a large, thriving global community of users. There are countless libraries which will aid you in solving your problems. Be warned though, mastering it can easily take you several years of full-time effort. Software engineering is a large field, full of excellent books to choose from. One of the classics about the practice of making software is "The Mythical Man-Month" by Brooks. Another classic is "Code Complete" by McConnell. These two volumes are a must-read to anybody serious about programming anything. "Game Coding Complete" by McShaffry & Graham is an excellent introduction to techniques more specific to  game making. "Software Development, Design and Coding" by Dooley is a great introduction to general software craftsmanship. "Game Programming Gems" is a book series which contains something for everyone. I hope you enjoyed this brief overview of game programming. It's the key skill for all game makers. Next topic is game architecture. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Technology

Hi, I'm Paul Miller and today's topic is game technology. Making video games equals making software for computers. This means that digital technology is at the heart of game business. In this part I will touch on some technical subjects which are fundamental in making a modern video game. In particular we will look at modern, popular game engines and their differences. In this article we will explore fundamentals of game technology. There are two main types of game technology: hardware and software. People play video  games on home computers, mobile devices, game consoles or in arcades on specialized hardware. Although there are many subtle differences between all those machines, they have much in common. When you learn how to make a game for one those devices many of your skills will be easy to transfer to a different one. For most developers it's the software they use daily which makes the difference and that will be the focus of this tutorial. In the 70's and the 80's game developers worked very closely with hardware. Early game makers, like those from Atari, where simply electric engineers. They built their games literarily from hardware pieces, designing custom machine for every game. With time home computers and consoles become popular and game makers became programmers instead of hardware designers. This early coders were heavily limited by their machines. 8-bit computers were so slow and had so little memory that every game had to be full of little hacks to make it work decently. One of the most important choices you have to make when deciding to make a game is choosing its underlying technology. You have two main options: you can make your own or use something of-the-shelf. In the past game developers used to make custom tools for every single game they built. There are famous examples of this like the Ultima series. Richard Garriot insisted that his engineers start from scratch every time. Even back in the day this caused some friction in his team since experienced programmers know well how important it is to have solid reusable tools. The concept of a game engine has been popularized by John Carmack and his famous Doom engine. Back in the 1993 most programmers weren't using any popular engine. They were also writing lots of highly optimized assembly routines which could run only on a single machine type. Carmack innovated in several ways. He created an intermediary layer of code called "the engine". He also avoided using lots of assembly choosing instead to write his game in almost pure C language which some people like to call "the portable assembly". Today game engines are so popular that one may think that it has been like that forever. Currently game engines are the backbone of every game. Your game engine is the most important piece of game technology needed. Choosing the correct one is a major decision which must be made very early in the project. Since learning a new tool like an engine can take even years of effort this decision should not be taken lightly. If you pick a wrong one for your project you will suffer innumerable problems which may cripple your game in countless ways. Although today most major tools claim to be applicable to any game genre this certainly is not the case in practice. Different tools are good for different projects and this is true with game engines as well. A good game engine must have several traits. It must be highly usable and that means mostly easy to use. This is a very important thing. That's because making computer games is inherently hard and complex. It takes a lot of time and skill to make them. As a result you don't want to make it even harder by using a  tool which makes simple tasks complex. Quite the contrary, you want a tool which makes complex tasks easy. The second trait is that an engine should be reliable. It should work at all times without any crashes or hiccups. A good engine should be also flexible. That's because every project has different needs and your tools should be able to easily adapt. Finally, an engine should be portable. It should run well on as many platforms as possible. When you look around for good engines on the market today you will notice that there are not that many good choices. That's because making a large tool like that and promoting it takes huge amount of skill, time and effort. Today most games are made with a handful of engines, like Unity 3D or with Unreal. There are some other less popular options, but I will focus on these two since they are dominant on the market. Personally, I strongly prefer Unity 3D and I will shortly explain why is it so. In my opinion Unity is vastly superior to anything on the market for multiple reasons. When you look at the market and required traits of a good engine you will see that only Unity 3D meets them properly. Unity 3D, first and foremost, is really easy to use. It's designed from ground up to be highly approachable and it doesn't scream "complexity" at every corner. You can't argue that Unity 3D is vastly easier to make games than Unreal. I speak from the perspective of an experienced programmer. I spend many years writing C++ code and I still strongly prefer to write C# in Unity that coding in Unreal's C++. Unreal has Blueprints which in theory should make building games even easier than writing them in C#, but in practice this is not the case for many reasons. In terms of reliability Unity and Unreal seem even. Unreal has a track record of being used for high-end desktop and console games. This makes it seem more suitable for serious development. Unity looks to many like an amateur choice. This is not the case. Unity is as reliable as Unreal in most cases. Recently Unity changed its business model from product-oriented to service-oriented. This will have a long term positive impact on its reliability. Unreal offers its full source code for free, so it theory anybody can fix any bug they find. In practice very few people will be able to do that, so it's not that important. Unity shines when it comes to flexibility. It has an elegant and very simple to understand base architecture centered around Game Objects. Even total beginners can very quickly wrap their minds around it. Unity is more of a blank canvas to paint on rather than that a rigid system where there is only "our way or the highway". Unreal seams much more rigid in comparison. For ex. in unity there used to be no default material editor, but you can make any shader you want and apply it to almost anything. Unity is in many ways a more low-level tool than Unreal and you are indented to build higher functionality yourself. This is attractive to skilled programmers who like to customize everything to fit their ideas and habits. In terms of portability Unity 3D is a clear winner. It supports dozens of platforms. It can run well on Windows, MacOS and Linux. It supports really well Android and iOS. It can also run on many consoles and some more unusual devices. Unreal games have generally higher hardware requirements than those made with Unity. This means that if you want to make an old-school, retro game or something in 2D then Unity should be better. Low hardware requirements are especially important for small independent developers since you will be initially making low-tech, simple games at least for a few years. Lets talk a bit about making your own engine. The first think you need to know is that making something remotely competitive with Unity or Unreal is a major project which should not be undertaken lightly. Those two engines have decades of development behind them. I estimate that Unity 3D has around 2 million hours of coding work behind it. Just ponder this number. It's a mountain of work. Doing 2 million hours of programming in order to make something reliable and feature rich is a massive task which requires a 100-man team working for a decade. Remember this should you choose to make your own tool. As an indie developer your chances of outdoing Unity or Unreal are next to none. There aren't many good books directly about game technology. Instead, you should focus on works about general software engineering which are numerous. One of the best specific ones is "Game Engine Architecture" by Gregory. It's an excellent primer about how professional engines work. Should you decide to focus on Unity 3D you may want to check "C# 7.0 in a Nutshell" by Albahari. It will teach you fundamentals of .NET programming . "Framework Design Guidelines" by Cwalina & Abrams will teach you how to write good .NET code which uses Microsoft's insights. Finally, "Systems Analysis and Design" by Tilley & Rosenblatt is a good book for those of you who want to make their own engine. I hope you enjoyed this brief overview of game technology. Knowing your tools well is very important to deliver good results. Next topic is game programming. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Game Industry

Hi, I'm Paul Miller and today's topic is game industry. In order to be effective as an independent game developer or as an employee in a large organization you need to know your industry. It's crucial especially if you plan to start your own studio, but it will also help you to find a good job. In this article we will explore fundamentals of what game industry is in order to get you started. One of the first computer games ever was Spacewar!, developed in 1962 by Steve Russell on DEC PDP-1 computer at the Massachusetts Institute of Technology. It's not the first game ever, but it's a very influential one. It was a two player game of space combat between small ships shooting torpedoes at each other. It was  based on simple Newtonian dynamics simulation and allowed some cool tricks like "gravity assist" using attraction of a star on screen. This game inspired a whole genre or early arcade shooting games, like the famous Asteroids from 1979. The first successful company dedicated to making video games was Atari founded in 1972 by Nolan Bushnell. Atari created the first hit game: Pong. Pong was a crude tennis simulation. It was as primitive as possible, heavily constrained by the early hardware costs. In some ways it was similar to Spacewar!, since it was a two player, one screen game, although it supported single player gameplay as well. Later Atari dominated early arcade game market until it crashed in 1983. One of the earliest game consoles was Atari 2600 also known as Atari VCS or Video Computer System. It was released in 1977. It wasn't the first game console of all times, but it surely is one of the best known and popular ones. Atari 2600 was released in the era where computers were considered big business tools and cost millions. It wasn't a full home computer, but it allowed to play some very crude and simple games at home to almost everybody who had a TV set. To this day Atari 2600 is remembered fondly as one most important early game consoles. First home computers were released in the late 70's. The "1977 trinity" of early machines consisted of Commodore PET, Tandy TRS-80 and Apple II. In the 80's first truly popular 8-bit home computers were released. Three the most impactful machines were Commodore 64, Amiga and Sinclair ZX Spectrum. There were many other lesser known devices on the market, but C64 sold the most units and even today there are people who make games and demos for it. Demo scene is an international group of people originating from software crackers who created cool looking animated effects accompanying their cracks. If you have never seen a scene demo I encourage you to check some on YouTube. These are really fun to watch short movies full of cool effects which are procedurally generated in real-time. There are demos for most early computers since the 80's. Even today some people are making demos for ancient machines like C64 or Amiga. There are also many PC demos from the MS DOS times. On the classics is "Second Reality" by Future Crew. I consider the 90's the golden era of gaming, but I may be biased since I was a kid back then. In the 90's most modern game genres were created. Back in the day much fewer people had home computers and there was no internet as we know it today. Another difference was heavily constrained hardware. This made it impossible to make realistic games which look like a movie. Hardware limitations combined with a more educated and wealthier player base allowed for creating more unique looking and deeper games. In the 90's there was a far larger variety of game genres to choose from than today. I miss those times a bit. Modern game industry changes rapidly. Smartphones were invented by Apple Computers in 2007 and today there is almost two billion of such devices around the world. Today there is much more smartphones than home computers. Many youngsters start playing games on their phones instead of on game consoles or PCs. This is a major shift which occurred roughly in the last 10 years. This drive to mobile devices and casual gaming profoundly changed the landscape of the modern game industry. New business models were developed, like those very popular "Free to Play" games. In the past most games were sold of the shelf in boxes while currently lots of them are created as services available only through the internet. Game industry today is a large business worth more than 100 billion dollars annually. There a games now which make more than a billion in a single year. There is a trend among triple-A developers to merge major movie and toy franchises with gaming. Star Wars games sell very well, almost regardless of quality. Aside from mobile and casual gaming there are some emerging trends, like e-sports and virtual reality. Personally I think that VR will never get very popular. Some would argue with this statement, but there are very strong business reasons to believe that it will never be ubiquitous. E-sports will definitely grow in the future. If you are reading this series it is likely that you would like to be a member of the game industry. There are many ways to achieve that. The most obvious one is getting a job as a developer in a large game house. There are also several other options. You can rather easily become an independent game developer which will give you full creative freedom and a chance get rich. You can also become a game journalist and write articles about games for magazines like PC Gamer or websites like GameSpot. Today it's also possible to make a living by becoming a social media influencer through YouTube or Twitch. The choice is yours. Modern game industry isn't without its fair share of problems. Today there are almost no hardware limitations and skilled developers can make practically an game they want. This however comes at a cost. Modern high-end games are very complex and costly to build. Schedules for triple-A games last for 5 years and sometimes more. Modern teams for games like The Witcher 3 consist of hundreds of people. It's a big business and definitely not everybody in his bedroom can make the next hit. Sometimes it still happens, like the story of Minecraft shows us, but it's increasingly rare. Modern game development is dominated by marketing problems, rather than by technical difficulties. There are very few good books about game industry and video game history. One of the best volumes about history of gaming is "The Ultimate History of Video Games" by Kent. If you want to work in the industry don't miss: "How to Get A Job Making Video Games" by Adams. If you want to start an indie studio you need to know how to think like an entrepreneur. Check "Zero to One" by Thiel of PayPal fame to get some business insights. Finally, "Basic Economics" by Sowell is an excellent introduction to economy which is useful to any company owner. I hope you enjoyed this brief overview of game industry. Knowing it well is fundamental knowledge needed by any person who wants to make video games professionally. Next topic is game technology. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Marketing Process

Hi, I'm Paul Miller and today's topic is marketing process. Most beginner entrepreneurs and game developers have a very warped view of marketing. Here you can learn what marketing truly is and what it isn't and how to avoid common mistakes as a game maker. In this article we will explore fundamentals of marketing which apply to most business activities. Young game developers are often very idealistic. They simply want to make great games. Often they want to make games which they really want to play. This kind of mindset is similar to that of an artist. Artists often create work which is highly unique and personal. Sometimes this may also work in gaming, but it very often leads to massive failure. There is a well know motive of a "starving artist" for a reason. Notice that nobody is taking about "starving salesmen". In order to be successful with your games in terms of sales and profits you need to have so called "marketing orientation". This means that market concerns should drive all decisions of your little indie game studio. Initially you can't afford to think like an artist and make simply what you like. In order to succeed you need to be fiercely oriented toward needs and wants of you current and potential customers. To achieve high levels of profits needed to fund larger games in the future you should be obsessed with marketing. The first thing you need to understand is that marketing does not equal promotion. A lot of inexperienced people think that marketing people are all about making sales. Advertising is the most visible part of marketing to regular folks and many of them think that those ads they see everywhere is all there is to it. This is very far from the truth. In reality marketing is a process which affects all activities in a business, including initial decisions, like picking the right game to make. One of the most prominent figures in marketing theory is Philip Kotler. He wrote several classic books about this subject. If you are just starting out learning basics of  marketing, you should check Kotler's: "Principles of Marketing". It's a popular college textbook. You can find there one of the best descriptions of the base marketing process. This process has four stages and whole promotion is just a one-fourth of the third stage. The first stage is "understanding the market and customer needs and wants". This is the key where most game developers make their biggest mistakes. The worst kind of mistake you can make as a beginner game developer is spending years making a game which nobody wants to play. In order to prevent that at the outset you must conduct careful market research and intelligence. Research typically costs money and most indie developers can't afford it. Fortunately you can also do marketing intelligence. It simply means that you should Google as much information as possible about the situation on the market and about your competition. You should pick a game to make based on what people want to buy and what you can build. The second stage is designing a customer-driven marketing strategy. At first you should select customers to serve. You do that through segmentation and targeting. Next you define you so-called "value proposition" which requires you to differentiate and position you game on the market. In game development this is crucial. Correct differentiation ensures that your game stands out in the crowd, is easily noticeable and is valuable to your target customers. Good differentiation leads to solid positioning which mostly focuses on creating a certain image in the minds of your clients. The third stage is constructing a marketing program which delivers superior value. This part of the process is centered around famous "four P's" of marketing: product, price, place and promotion. At first you must design a game which can be very valuable and attractive to a lot of people. You need to constrain you costs according to your predicted revenues. This requires correct game design and correct game pricing. Place refers to your distribution method where you manage your supply and demand chains. Promotion is centered around communicating your value proposition. The forth stage is building profitable relationships and creating customer delight. Notice that this final stage is all about relationships and feelings, not about your sales and profits. You must always have your customers at the forefront of your business mind. The key is creating long-lasting, profitable relationships. Some clients are not worth pursuing and some will create you a lot of problems. You should strategically build contacts with the customers which are truly valuable to you. Don't be afraid of dropping a customer who is a drain on your resources and a source of constant problems. You relationship with a customer can be modeled using Kotler's "client path". This path consists of five A's: awareness, attraction, asking, acting and advocating. It models the process which you would like to apply every potential customer. At first people need to be aware of your company and products. This costs time and money. Then they need to be attracted to what you offer. Next the may ask some questions about your products. Acting means mostly buying your stuff. Finally, your customers may be so happy with you that they will become unpaid promoters of your company in the from of advocating it to others, for ex. on social media. During last 10 years we have witnessed and explosion of various online social media platforms. The term "social media" was virtually unknown around year 2000 and now everybody knows what it is and almost everybody uses such services. It's a revolution which deeply affected modern marketing practices. You should exploit social media tactics, like for ex. content marketing. Social media techniques are fully online, very powerful and very cheap, making them extremely effective for indie game developers who have limited access to classical promotion channels. Marketing is a large field and there are countless books available. I recommend "Fundamentals of Selling" by Futrell. It will teach you relationships selling method which works for games. "Marketing 4.0" by Kotler is a great primer about latest trends and insights of internet marketing. "Branding for Dummies" is a surprisingly good volume about fundamentals of branding. Try "22 Immutable Laws of Branding" by Ries to deepen your understanding of good brands.  I hope you enjoyed this brief overview of marketing process. If you remember only one episode from this series, it should be this one. It's that important for your long-term success. Next topic is game industry. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Managing Business

Hi, I'm Paul Miller and today's topic is managing business. Most game developers work as specialist employees and this does not apply to them. However, if you want to own an indie studio you need to know fundamentals of management. You don't need a business degree to run a company, although it may help. In this article we will explore fundamental business concepts and basics of entrepreneurship. If you want to create a new, successful business, you need to have a strong vision. While you develop your vision you should imagine your company when it's fully developed. Making a good vision is an art and science. The key is capturing most important features of your company which make it unique and valuable on the market. When you do this initial design you should think deeply about what makes you different from your competitors. All great companies are unique. The worst situation is commodity business which appears to be just like everybody else on the market. Creating business vision is tightly coupled with the branding process. In modern business branding has become the dominant factor. There are many companies which have brands worth billions of dollars. When you design your indie studio, or any other business, you must imagine your brand in detail. Professional branding is divided into two main parts: internal and external. Internal branding defines you company's identity and is the most important part of the whole process. When you brand is internally designed properly you can proceed to external branding which are things like name, logo, slogan and image. The key idea to remember is that internal brand identity is the dominant factor. While building a business many project management principles apply. Check my article about managing project for more information. The key idea to remember is that construction of a successful business is in many ways similar to successful completion of any other project. In order to have a decent chance to score big you need to thoroughly prepare yourself before you start. Don't register a company on a whim just because of your emotional investment in the idea. If you do that, you are setting yourself up for a failure and disappointment. Just like with any other project, your new business needs documentation. Traditionally this work is called "business plan". This name is a bit misleading because it suggests that planning is the most important factor. This is not the case. The most important elements of your business document is analysis, not planning. When you intend to start a new venture you should analyze carefully four key dimensions: context, people, market and finance. Context is the environment in which your business runs. People are mostly your customers as well as your employees. Market refers to the general marketing process. Finance describes mostly your cash flow, including seed capital and projections or revenues. When you design your company it's important think through your business model. Business model is a system which describes how your company operates. It's a big picture overview of all your business activities which lead ultimately to acquiring new customers, sales, profits and growth. When creating this model you should think like an engineer who builds a machine. Design this system in such way so that you, as the founder, are not needed for your company to run. Ideally you want to have an organization which functions precisely, like a Swiss watch, without any input on your part. This will allow you to have a strong passive income steadily flowing, even when you sleep. When you have your company running your job is to manage it. Entrepreneurship is very different from day to day management. Creating a new business requires different skills and talents from managing an established operation. One of the most famous and respected people in the field of management theory is Peter Drucker. He wrote many books about running a business which are considered classics. If you need a primer about how to be an effective manager you will not waste your time if you read some of his more popular books. I recommend to start with: "The Effective Executive" and "The Practice of Management". Most people think that the goal of having a business is gaining profits. A lot of regular folks are hostile to capitalism because of that. They imagine that entrepreneurs and managers are very greedy people who think about money all the time. This is not the case. According to Drucker, the purpose of a business is "creating a customer". This is very important to remember. It's not all about your profits. It's mostly about your relationships with your customers and with your employees. When you approach business from the angle of building strong, healthy and profitable relationships you will create a much more lasting company. Managers are catalysts in an organization. Employees do main bulk of work, while managers make it all go smoothly and efficiently. Countless books have been written about the art and science of management. Here I will mention only four core skills any manager must possess in order to be effective. These four skills are: selecting people, setting goals, motivating people and developing people. Notice that all four managerial skills revolve around employees and relationships. This is no accident. Great managers are not men obsessed with money and profits. They are focused on their subordinates, making employees more effective and valuable to their organizations. Creating a new company requires a lot of leadership skills while running an existing business calls for strong managerial skills. Leadership and management are two sides of the same coin, but they are not the same. Not every entrepreneur makes a good manager and not every manager is cut for becoming an entrepreneur. It's important to remember this, so that you know where you fit. Managers are focused internally while leaders are focused externally. There are many other differences between those two roles and you should research them, if you want to own a game studio. Around 80% of new companies close doors within 5 years. This statistic holds true for decades across different countries and industries. Knowing this you should be very cautious, if you want to start an indie game studio. To maximize your chances of success you should avoid hurrying. Don't start a company just out of college. Get at least a few years of industry experience. Most people are rather clueless when they are 25. When you get to 35 you will be vastly wiser and your decisions will be much better. You chances of building a successful business will be greatly multiplied. I recommend to go on your own in your thirties, rather than in your twenties. There are much more books on the market about management rather than about entrepreneurship. Mastering those fields can take you years. I recommend starting with popular books like "E-Myth Revisited" by Gerber or "Good to Great" by Collins. The first one will teach about the importance of having a strong vision for your company. The second one will enlighten you about how to turn a good business into a great one. "First, Break All the Rules" by Buckingham is a well researched volume about excellent managers. Finally, "The 8th Habit" by Covey is a fantastic primer about leadership which is very useful for aspiring entrepreneurs. I hope you enjoyed this brief overview of business management. Mastering this field is crucial, if you want to run an indie studio. Next topic is marketing process. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Managing Projects

Hi, I'm Paul Miller and today's topic is managing projects. Each game you make can be understood as a software project. Learning to think like a project manager greatly increases your chances of creating something valuable and interesting on-time and on-budget. Project management as a discipline has a large body of knowledge and established practices. There are people who specialize in project management as their main occupation. In this article we will explore fundamentals of managing project. Every project needs well designed, structured, written documentation. You should write such documentation even for a small Android puzzle game. You need to do that initial paperwork in order organize yourself for maximum efficacy. When you just muse about your game you will miss many important aspects of it. When you "think on paper" you are able to use so-called "structured analysis". This type of analysis forces you to think about your goals holistically and rationally, making you far less likely to make major mistakes. When you write-down your ideas  you can  achieve higher clarity, precision, insight and creativity. On paper you will notice many problems which would hide from you in your head. While you write your documentation you should pay close attention to the table of contents. This element is very important because it determines the structure of your thinking. If there are big errors in your approach to the problem, you will make large mistakes in your solution and that ensures failure. The most important aspect of making project documentation is not the final output you create, but the process which leads you to it. The main benefit of all that writing is the additional insight you gain into the nature of your enterprise. This insight is invaluable long-term and can deeply change the way you approach various aspects of your game. Another plus of having strong documentation is being able to communicate more effectively with other members of your development team. When your team is big, having everybody on the same page regarding major issues is crucial. There are four main types of project documents which I like to call "bibles". Business bible describes your project from the manager perspective. It should present your main market reasons to start the project. Gameplay bible shows your game as designers see it. Its goal is mostly to flesh out game mechanics and game progression. Interface bible is mostly for your artists. It defines look and feel of your game. Finally, there is technical bible which describes your game from the perspective of programmers. The focus here is on solving technical challenges. Main project management methodologies currently in use can be divided into two camps: classical and modern. Classical methods are centered around the "waterfall" concept. This older way of thinking about projects used to be preferred by large organizations. It stresses importance of having detailed documentation to the point that the papers are more important that the code. Waterfall method is designed like a factory assembly line, where clearly defined outputs of phase one become inputs of phase two, and so on. This method looks good on paper and is favored by bureaucrats. Unfortunately, it doesn't work well in practice because it ignores realities of the creative process. Problems with the waterfall method motivated new generations of developers and managers to innovate. The current answer are so called "agile methods". This methodologies of project management are based on completely different philosophy. They state that when making software, the code, not the documentation, is the most important element. Agile methods are characterized by low levels of formalization and high focus on consumer demands. While classical software projects were mostly driven by requirements described in the papers, agile projects are guided more by response to change and interactions with product users. Both methods of managing projects have their pros and cons. New, agile methodologies have gained a strong foothold in the software industry. Classical methods are documentation-centric. Agile methods documentation-averse. For a young game developer with little experience I strongly recommend to start by writing all four project bibles in detail. When you complete your game you will notice a large number of deviations from your original design. This will make your initial documentation obsolete. There is nothing wrong with that. You still need those project bibles at the outset to wrap your mind around all the major issues. If you skip documentation, you will make vastly more mistakes during production. When describing a game as a project it's useful to do it in two dimensions: horizontal and vertical. Horizontal model divides your work into phases.  According to the IBM's Rational Unified Process software development methodology, every project has four phases: inception, elaboration, construction and transition. Inception phase focuses on developing main ideas, project vision and making strong initial business case. Elaboration phase revolves mostly around creating more detailed analysis, project requirements and technical plans. During construction all code is written and initially tested. Transition phase means mostly deployment to clients, further testing and maintenance. This four stage model is useful to know since all software projects follow it to a large extent. Vertically you can divide your project into four layers: system layer, engine layer, game layer and content layer. System layer is the hardware and software platform on which your game will be running. For ex. it can be a Windows PC or Android Phone. Platform choice is a very important part of a project. Engine layer is obvious. It's the main tool you use to create your game. For ambitious beginners I strongly recommend Unity 3d. It's the dominant engine among independent game developers. Game layer is the main code you write while making your game. Content layer is mostly data which is created by people who aren't system programmers on your team. One of the most basic concepts in project management is four constraints model. These constraints are: quality, cost, time, scope. The key idea is that you can't maximize them all at the same time. At most you can have three, but never all four. You have to balance it all. For ex. if you make a game as an indie studio you typically have low budget. This means that your cost constraint must be low. You want to have high quality because shoddy games don't sell at all. If you want to make a big and complex game, it means that you have large scope. According to the presented model, this means that your game will require massive amount of time to complete. If you decide to make a game which has a small scope, then you will be able to make it quickly and still achieve high quality and low cost. There is a large number of project management books available. There are many volumes about general projects as well as about building software. I recommend "Fundamentals of Project Management" by Heagney. It's a good primer about projects in general. "Software Project Survival Guide" by McConnell is a classic about the process of making software. "Agile Project Management for Dummies" by Layton is a good introduction to modern methodologies. "Game Development and Production" by Bethke contains many insights specifically for game developers. I hope you enjoyed this brief overview of project management. Mastering this field is very important for success. Next topic is managing business. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Managing Yourself

Hi, I'm Paul Miller and today's topic is managing yourself. The reality is that you can't make a great video game if you are not a great man in some ways. In order to be great you need to manage and develop yourself strategically over many years. There are no shortcuts to greatness. You need to put a lot of work into yourself if you want to become a remarkable person and game developer. In this article we will explore fundamentals of self-management. The art of self-management is not practiced by everybody. There are many people around the world who are living almost like animals, day by day. They don't know well who they are and they don't know where they are going. You don't want to be a person like that. You want to live your life wisely and develop your full potential. In order to do that you need to spend thousands of hours building your character, knowledge, abilities and wisdom. Nobody is going to do it instead of you. One of the best methods of gaining wisdom is by having a powerful mentor who cares about you. For a child, a strong and active father figure is very important. Unfortunately, many people don't have wise and loving fathers or other mentors who can teach them. In such situation you are left alone without guidance and you may easily get lost in life. The solution to this problem is reading non-fiction books written by powerful and successful men. This way you can indirectly get a mentor who can teach you a lot about how to be effective using his own success as an example. For people who are young and clueless I strongly recommend studying a lot of American self-help books. These works contain distilled wisdom obtained over centuries by members of the most powerful and prosperous nation of all times. These books will teach you how successful people think about all important aspects of life. Reading a good self-help book is like conversing for hours with a wise, successful man, who tells you what he did in order to get to the top. It's invaluable to almost everybody, but especially to youngsters. You become similar to the people you spend most of your time with. If you are from a lower-class family, you will not learn in your childhood how upper-class people think. if most of your friends are idiots, you are very unlikely to become a wise person. If you don't know any people who are highly effective and successful in life, you will have a hard time knowing and doing what's right. You are likely to develop self-defeating traits and habits which will drag you down into poverty, debt, poor health and toxic relationships. In order to escape from this failure ditch you need to first change yourself. The key idea is that you should at first work on improving internally as a person, instead of focusing on bettering your external circumstances. By saturating your mind with the best American self-help wisdom you can significantly  modify the way you see yourself and your prospects. The key idea is realizing that your life isn't going to improve much if you aren't getting better as well. The wise approach is starting with improving your mind, instead of waiting for something to happen externally. Reading non-fiction books and thinking about what you have learned is very easy and cheap. Practically everybody who has some free time can do it and it can have a very strong long-term impact upon your behavior and results. One of the most basic truths is that you will be more successful if are constantly designing your future. People who fail at life very often have no idea what they want to do with themselves. They mostly only react to external events, instead of being proactive and working hard towards their goals. Men who are very successful are always very future oriented. They have a lot of big dreams, ambitions and plans. If you want to make a great game or build a profitable and respected game studio, you need to be like that as well. There is one common quality of all people who achieve a lot in life. They have a strong sense of vision for themselves. They constantly imagine their future and the future of their organizations. These movers and shakers are constantly pressing forward, towards their dreams  and major goals. In order to make a masterpiece video game you must become a person like that. Somebody who lacks strong character and powerful drive to do something amazing is very unlikely to craft a game which will make a lasting impact. Great works are done by great men. From your life vision come your most important, long-term goals. All successful people have such major goals and they work on them daily, for years, sometimes for decades. In order to have a good life or to build great video games, you need to be intensely goal-driven. You should have objectives for all major areas of your life, not only for your career. You should have big goals for your health and fitness, for your relationships, for your self-growth and even for your leisure time. Leave nothing to chance. Don't expect to get lucky. Remember that "luck is when preparation meets opportunity". Apart from goals it's important to have good habits. Habits are periodically recurring behaviors in your life which you are used to. Stupid people are completely unaware of the power of habit. Wise people consciously manage their habits. They constantly grow new good ones which lead to profits and prune bad ones which lead to losses. The power of habit is mostly manifested in the long-term. For ex. If you regularly  save 10% of your monthly income and invest it on the stock market, it will make a big difference to your bottom line, but only after several decades have passed. To achieve anything worthwhile in life you need persistence. Persistence is an ability to withstand hardships and maintain resolve while facing obstacles which separate you from your goals. Some people are naturally more persistent than others, but you must know that you can build up your persistence and make it grow stronger, like a mental muscle. You should also work on your levels of self-discipline. Develop warrior mentality and learn to fight to death. Making a modern video game is a major goal which requires a lot of effort and patience. Having more persistence makes you much more likely to complete a big software project, like a professional game. Another important factor is having a very strong sense of identity. Building a powerful and balanced sense of self is crucial for many reasons. Practically all famous and successful artists are strong individualities. You need to build yourself into a powerful personality if you want to build an impressive creation. Making video games is a very creative job and by becoming a balanced and well developed person, you are much more likely to craft something which will stand out and make an impact. In order to be effective you have to be highly organized in your daily life. You must avoid wasting time. You need to stay on top of all your tasks, goals and duties. You should also free your mind from clutter, so that you can be more creative. To do that you need an external personal management system which will aid your brain. Developing such system will allow you to focus more on the most important tasks, since you will not be occupied by hundreds of little things which demand your attention and your memory. Check "Getting Things Done" book by Allen to learn a simple system which will put you on the right track. There are many good non-fiction books which can help you manage yourself better. There is a whole genre of American self-help that is dedicated to making your more successful. Don't dismiss those books if you are not familiar with them. They contain powerful insights which may have a large impact upon your life. I will recommend here just a few classics. "Maximum Achievement" by Tracy  is a good primer about winner mentality. "7 Habits of Highly Effective People" by Covey teaches you some great habits and about their importance. "Getting Things Done" by Allen is an excellent introduction to personal management systems. "Rich Dad, Poor Dad" by Kiyosaki is about thinking about wealth like a rich person. I hope you see know how managing yourself skillfully has a high impact on your results as a game developer. Next topic is managing projects. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Effective Learning

Hi, I'm Paul Miller and today's topic is effective learning. Game development is a discipline which changes rapidly. You can never master it fully. Getting a college degree will help you,  but you will still have to learn a lot in order to stay at the top of your game. In this article we will explore fundamentals of successful learning. Before you start learning in earnest you should spend some time getting to know yourself better. There are many psychological tools and tests which can aid you in that. Knowing yourself is important because different people learn in different ways. Some people prefer direct contact with teachers and like to learn in groups. Such individuals respond well to common classroom environments. Other people learn and remember more when they read instead when they hear. In such case reading books alone can be much more effective than spending tons of time in school. One of the more popular psychological tests is Myers-Briggs Type Indicator: MBTI. This system evaluates you in four dimensions and assigns you a four letter code which summarizes your results. You can easily test your personality using this system online for free. There is some criticism in the scientific community regarding accuracy of this method, but it's enduring popularity proves that there must be something good in it. For ex. my Myers-Briggs type is INTJ. This means that I'm introverted, intuitive, thinking and judging. This type is also called "the mastermind". There are 16 different types possible encoded by different letter combinations. Try this test, if you haven't already. It will help you understand yourself better and choose optimal learning methods. Most people when thinking about learning a lot instantly associate it with some kind of school. This is wrong for many reasons. You will learn most of your valuable life skills outside of the schooling system. You must understand that your schooling does not equal your education. Having a college degree is necessary in many occupations, but game development is not one of them. For ex. the famous programmer of FPS games: John Carmack from id Software is a college dropout. You don't need a degree to be a great game developer, but it may help you to get a better job. The choice is yours. Just don't think that your schooling is what matters most. One of the best ways to learn fast is by reading lots of non-fiction books. Today, in the internet age, you have access to millions of books for free. You can download online almost any book available on Amazon. This gives you huge power to gain high quality knowledge rapidly. Remember that in school your teachers are often people who are not very accomplished. These men and women have modest knowledge and rather low achievement levels. By reading books written by experienced masters you can gain access to minds of elite game developers, programmers and other towering figures. Through books downloaded online you can get all of this for free. The only cost being the time you spend to read. One of the best ways of learning how to make games is by completing small projects on your own. The keyword here is "small". I'm sure that you have some kind of dream game you would like to build. When you think about making it real it sets your heart on fire. In order to make such a game you need to accumulate lots of skills and that comes with experience. When you make small games from start to finish you gain holistic understanding of the whole field of game development, making you stronger and more effective in many ways. Just remember to start very small. You first games should be 2D and abstract. That's because delivering excellent graphics is the main difficulty in making games. When you greatly simplify your graphics you can make your project 100 times easier to complete in many cases. A good habit you can develop in order to learn faster and better is regular reflection upon your actions. You should spend some time every day thinking about what you did and what you plan to do. This applies to your whole life, not only to game development. When you make a game constantly think about your work. Look for ways to do things faster and easier. Regularly reflect upon your work. Think about what went right and what when wrong. Analyze your work methodology and look for major and minor ways to improve. If you do it for years regularly you will improve your craft immensely. In order to learn well in the long term you need strong memory. There are many methods to improve your memory retention. The simplest way to remember more is to simply learn more. This will develop your memory like a muscle. The more you know, the easier it is for you to remember. That's because brain memory is different than computer memory in that it works by associations. This means that when you know more within a given field your neural networks become denser and you will find it easier to recall things and remember new concepts. You can develop brain connections explicitly by using a technique called mind mapping. There are also other specialized methods called mnemotechnics which can improve your ability to recall random information like passwords or telephone numbers. Check Tony Buzan's work for details. Game development is a highly creative field. If you want to be successful as a programmer or designer you must be a very creative person. There are ways to increase your creativity. Just like with memory, you can become more creative forcefully by using techniques like brainstorming. Make it a habit of looking for new solutions to old problems. Don't take anything for granted. Look for improvements and original ideas everywhere. This habit of generating new concepts all the time will strengthen your creativity on demand. Remember that in order to have a few great ideas you need to fist have dozens of decent ideas and possibly hundreds of bad ones. In life and in game development it's very important to have strong problem solving skills. Being able to generate good solutions is extremely valuable in many ways. Again, there are ways to improve this skill. Practice problem solving with persistence and it will grow on you like a muscle. There are many thinking techniques which can aid you in this process. One of the classic is "divide and conquer" which is closely related to general analysis. Learn how to divide large problems into several smaller ones and repeat this process recursively until you get to problems which you can solve immediately. There are many books which can teach you a lot about how to learn, memorize, be creative and solve problems.  "A Mind for Numbers" by Oakley is a good primer about learning sciences better. "The Thinker's Toolkit" by Jones will teach you to think like a professional CIA analyst. "How to Solve (just about) Any Problem" by Fainberg is about general problem solving tips. Finally, "Creativity" by Csikszentmihalyi will give you some insights into the mechanics of a mind of a genius. I hope you now know a little bit better how to study effectively. Learning how to learn fast is a highly valuable skill which will aid you well beyond your game development career. Next topic is managing yourself. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Community

Hi, I'm Paul Miller and today's topic is game development community. Being an active member of this community is crucial for your long-term success. Nothing is more important than staying in touch with other people who make video games. That's because you can't do much when you are truly alone. You will need lots of support from many kind souls if you are ever going to make a decent computer game. In this article we will explore the community of game developers. If you want to make games, one thing is certain: you will have to learn constantly. Game industry is a high-tech, dynamic field which changes rapidly. Every few years new generation of hardware arrives, introducing new challenges and new possibilities. Software development evolves fast as well, coming up with new algorithms, libraries, frameworks and methodologies almost every month. Game design changes constantly, adopting to player's tastes and market realities. New, innovative business models are developed all the time. In order to stay on top of this and have an edge over your competition, you must learn constantly and to do that you need to stay in touch with knowledgeable people. One powerful way of improving your chances is studying successes and failures of others. It's especially worthwhile to analyze unexpected successes and unexpected failures. When events unfold predictably it's nothing special. However, when something unusual and surprising occurs, it's often worthy of more attention. You should generally focus on studying success stories, rather than stories of failures. It's always better to learn from the winners rather than from the losers. By studying success stories you can gain experience indirectly, instead of grinding it on your own which is much slower. It's a good habit to study hit games and companies which grow rapidly. Think a lot about why are they exceptional. You should also study biographies of successful people from the game industry. Famous programmers, designers and entrepreneurs are good candidates, because these are often high-impact positions. For ex. if you are mostly a programmer, you should know who is John Carmack from id Software and what he achieved. If you are a designer, you should now quite a bit about Will Wright from Maxis. If you are an entrepreneur and want to setup an indie studio, you should know who is Gabe Newell from Valve and what he did. If you want to make an innovative indie game you should be aware of Markus Persson's exploits with Minecraft. It's a good idea to learn about the history of video games. This way you can get in touch indirectly with several generations of game developers who came before you. Studying video game history allows you to appreciate more the progress that we've experienced. History is written mostly by the winners and about the winners. This means it presents you often examples of effective behaviors and strategies which you can apply to your own enterprises. It's also a great source of inspiration, because it allows you to glimpse at struggles of people similar to you. One of the best books about game history is "The Ultimate History of Video Games" by Kent. Another reason to stay in touch with the community is developing new professional contacts. There are many capable people making games around the world. Some of them may give you advice. Some of them may want to hire you. Some of them may want to work for you. There are many opportunities which can be exploited only by people who have a lot of valuable contacts in their professional networks. You don't want to be a "lone wolf". You want to form a "wolf pack". In that pack you want to be the alpha wolf, if you can. While you study the community you should learn about all the major companies in the industry. This is true if you want to become an employee, but if you want to have your own studio, it becomes crucial. Read about companies which you admire for their games. Read about their past and their key people. Try reading their financial statements. You should know a bit about companies like Blizzard, Nintendo, Electronic Arts, Ubisoft and Tencent. While you explore game development community you should plan your own place within it. Your goal should be to make a name for yourself. You want to build a professional reputation which will become a strong asset of yours. Having a well known and respected name allows you to be more influential which means more power. The ultimate goal is becoming an industry star which everybody knows and admires. People like John Carmack, Will Wright, Gabe Newell and Markus Persson are household names known around the world. While you participate in the community you shouldn't be just a passive consumer of content created by others. At first you will be a student, but over time you should become also a teacher. When you gain some experience you should start creating content for the benefit of the rest of the community. When you complete a decent game don't hesitate to share you experiences with others. Publish postmortems, blogs, articles, videos or development diaries. Don't hide yourself in your cave and don't fear public criticism. You need as much feedback from others as possible in order to grow and to become a stronger developer. Remember that "feedback is the breakfast of champions". The last reason to stay in touch with the community is to be current with the industry news. Such information is generally of low importance, but sometimes you may find a gem. A gem is a piece of news which is actionable for you in a meaningful way. In a dynamic field like game development there are often various trends emerging. There are trends in business, design, technology and art. You should be aware of all of them. Trends are important because they describe powerful, hidden forces. You should spent some time trying to understand these forces instead of just following them blindly. Some trends lead to major and permanent changes in the market while other end up as fads which have no lasting impact. Game developers communicate mostly online. It's in the nature of the industry. Two main international websites dedicated to making video games are "gamasutra.com" and "gamedev.net". Both sites offer many social services. Gamasutra is centered around blogging, while gamedev has massive and very active forums. If you use a specific engine, like Unity or Unreal, you should join their respective online communities. Both Unity and Unreal have their official forums which allow solving many technical challenges you may encounter. Through these channels you can also hire top talent for your projects. You may follow industry leaders on Twitter or Facebook. You can also participate in relevant threads on Reddit. Aside from your online activity, you may want to participate in various global events or join professional organizations. It's not a bad idea to become a member of International Game Developer Association. It's definitely worthwhile to visit Game Developer Conference from time to time. GDC is the main event for developing personal business contacts and for building your reputation. You can make a name for yourself by giving a lecture there which instantly positions you as an industry expert. You may also follow Independent Games Festival. Lastly, you may want to go to E3 which stands for Electronic Entertainment Expo. It's the main event of the year where most major publishers and developers show their current projects. Handling people is a skill like any other. You need both theory and practice in order to master it. If you are not a very social creature, there are many good books which can teach you a lot about how to deal with people. "Power Networking" by Fisher teaches you how to build business contacts. "How to Win Friends and Influence People" by Carnegie is a classic about building your social status. "What Every BODY is Saying" by Navarro is a good primer about body language. "The 11 Laws of Likability" by Lederman teaches you how to make a good impression on others consistently. I hope you now understand better why being active in the game development community is important and valuable. Being active socially will bring you many benefits. Next topic is effective learning. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz  

Thal

Thal

Introduction

Hi, I'm Paul Miller and today's topic is introduction to my article series named "Make Video Games Like a Pro". Do you want learn to think like a professional game developer? If the answer is yes, this series is for you. It's designed for smart and ambitious beginners who want to learn fundamentals of game development. Most tutorials for newcomers don't teach you anything about the "big picture" of game development. They focus on showing you how to do various little, simple things in practice. For ex. a typical tutorial might tell you how to make a character shoot in an action game. I will not talk about such implementation details at all. I will focus on big, universal ideas which are powerful and useful in the long-term. I will share with you my best insights, instead of a common method which guides you like a complete idiot, click by click. My approach to teaching is almost completely top-down, instead of bottom-up. This means that you will learn many high-level concepts which are fundamental to gaining strong, long-term understanding of the field of game development. You will learn how to think about making games in the long run, instead of learning how to do little things immediately on your computer. Basic "how to" tutorials contain knowledge which matters only for a very short time when you have almost no experience. Concepts presented here may stay with you for decades and are applicable to any game genre and any game engine. Since this series teaches you fundamentals of the whole game development process, it's especially suitable for aspiring independent game developers. That's because it isn't assuming that you are going to be highly specialized in a large team. I assume that you want to have a better general grasp of game development, instead of quickly becoming a tiny cog in a large machine. I imagine that you don't want to be like those people who work on high-budget games in companies like Electronic Arts, Ubisoft, Blizzard or Nintendo. There are twenty main episodes in this series which cover all the bases, teaching you fundamental concepts from all major disciplines which are important in game development. The focus is heavily on theory and principles, instead of on implementation details. I will talk also about the technical side of things, but I'm aware that it's not what is most important for success in the long run. This series focuses on the professional process of game development. I don't treat you like a kid who wants to quickly make something which looks somewhat like a video game. I treat you like a person who dreams about creating a masterpiece which will make you immortal in the history of computer games. Remember that reading all articles in this series will not make you instantly an advanced game developer. It's just a primer which gives you an overall map of the territory. You are then expected to explore that territory and make your own way in the game industry. I dedicated several parts completely to management and marketing, because without mastering these two you have zero chance of delivering a hit game, on-time and on-budget. Many articles present you with excellent, practical books which can greatly boost your understanding of a given topic. After reading this series you will be able to think more like a real game developer. I hope you will enjoy this series and that you will learn a lot. I can't wait to see the awesome games that you will make by applying what you have learned here. Next topic is game development community. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That's all for today. Thank you for your time. My Facebook: https://www.facebook.com/PaulMielcarz
My Twitter: https://twitter.com/PaulMielcarz
My LinkedIn: https://www.linkedin.com/in/paulmielcarz
My Patreon: https://www.patreon.com/PaulMielcarz

Thal

Thal

Sign in to follow this  
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!