• Content count

  • Joined

  • Last visited

Community Reputation

568 Good

About Reactorcore

  • Rank

Personal Information

  1. Free game design consulting

    Free game design consulting
  2. Getting Started with Duality

    This looks really cool, I want to take a closer look at it later. Bookmarked. : )
  3. The Infinite Game

      While that is a real thing in game development, infinite games are immune to this issue. The thing is, infinite games are essentially a robust framework for a consistent universe. They are emergent by nature and encourage it. Gameplay and goals form by themselves mostly, while only the objects and environments are perfectly defined, which is totally normal and makes sense.   When making an infinite game, your task is to define the world, the rules of the universe (gravity, physics, interactions), the objects, the behaviour of characters and hook up the player with controls. All of these elements can be designed very accurately to convey the experience you want the player to have. As for the entire system as a whole, it runs purely on emergent gameplay.   The reason how and why it works is by designing the above elements with a strong sense of consistency and standards from the very beginning. Its like when you begin to create a model in a 3D, you set up clear rules for measurements you'll be using as you create it, which always gives you a result that is compatible and makes sense with any other model you create using the same rules.
  4. The Infinite Game

      I understand, but the problem with that is that every infinite game will be vastly different.   Specific techniques you're asking for will depend entirely on the design, meaning its not possible to pin-point the solution that works for every situation. It will always differ from game to game.   The purpose of this article is for you to better know what design decision to make when faced with specific challenges. Its about seeing the big picture and having the thought process you need to make the correct desicions to achieve an infinite game.   Do you understand what I mean? I'd be interested in seeing an example infinite game designed step by step.  Not necessarily as part of this article, unless you wanted to work it in piece by piece for each section of the article.   Hmm.. That gives me an idea.   Yeah I could totally do that, but its going to be huge, to the point to where it needs to be a multi-part series, with each article going over each seperate phase of building an infinite game.   Thing is, I already had started a series like this long ago and got half-way done before I had to set it aside when I got into building my own projects and ended up knee-deep in studying advanced programming, which took all my time. Its very old and back then it wasn't specifically defined for infinite games, but it certainly is designed to make them. It also lacks images for the most part, so reading it may be daunting.   You can check out my ancient and abandoned blog here, but I'm looking forward to writing a more upgraded version of that guide specifically aimed at making an infinite game. Its the posts marked as "MGDA" which I talked about.   However, I'm not going to start with it yet. My next month will be heavily involved prototyping my game project, so that guide will not be made for some time until I get my other priorities sorted out.
  5. The Infinite Game

      Good questions, but the answers depend on a project by project basis. The whole point of an infinite game is to be infinite, both in the sense of being timeless, having endless content and gameplay good enough to allow you to play it infinitely.   You design an infinite game having a clear idea of what kind of emotions, experiences and atmosphere you want to get when you're playing it, so the individual aspects of gameplay and overall game design you mentioned will be custom tailored to fit their purpose of achieving those emotions, atmosphere and experiences.   For example, if you want to make a game about being a jet pilot, you identify the feelings and atmosphere that you would experience as being a pilot and recreate the relevant mechanics designed to deliver that emotion to the player.   And when trying to identify those feelings and atmosphere, look deeper below the surface from a psychological standpoint, what makes a person feel so and so about this and that. Jet pilots are about manipulating a machine as an extension to you body, being able to fly and feel free and be playful as a result, going fast and doing exciting maneuvers that may be considered risky to give a sense of danger and thus give you an adrenalin rush. When you find these hooks what exactly is the cool thing about being a jet pilot, you can then figure out how to translate that to a computer game in terms of necessary mechanics, interface and interactions to deliver that emotion you're looking to emulate.
  6. The Infinite Game

    I don't disagree but tend to work in ways which wouldn't apply anyway.  I write most of my articles in Scrivener because I rough them out just kinda thinking and typing which leaves a disorganized mess.  Then I start using the cork board to chop everything up and put it into individual thoughts.  Then I finally lay it out in line point by point rewriting for clarity.  By the time I get to GameDev, usually it is just a matter of proofreading and inserting images/h1/h2 etc.   I wrote this article in wordpad before I put it here, so I'm doing the same thing as you.   The point is, people weren't satisfied with the initial formatting of the article, which meant I had to edit it when it already had images and headers set up, so taking it back to wordpad was not an option.
  7. The Infinite Game

    Designing for longevity... how? Making a game last long is a challenge. Making it last forever isn't any easier either. How to achieve infinite gameplay? How to extend the game's content without bloating it? How to keep the game interesting and fresh, regardless of time spent on it? How would you keep making consistent profits of an infinite game in the long run? How to do all this, but as to not compromise the game's integrity or resort to cheap tricks and gimmicks? How to create a true, solid infinite game that will be a success, both as a fun game and a great business model? All of this is possible. This article will guide you, explaining the major parts that are required for an infinite game to work and how to go about them, in terms of the overall idea and design. Word of warning Infinite games are not trivial to make. But before we continue, I must warn you that infinite games are some of the most challenging and demanding projects to undertake. They must be approached with a very strong vision of what the game is supposed be like. This means two things: The design phase must be thorough. A robust framework is required from the very beginning to ensure consistency with all systems and content within the game. As such, the waterfall development model is the default way to build an infinite game. Infinite games are not suitable for experimentation. To build a robust framework required by a proper infinite game, you need to define it as clearly as possible. All of the above means that the design and preproduction phases can be very lengthy and that once you've established it, it's set in stone and making significant changes can severely compromise the integrity of the entire project. If you're making an infinite game, you're in it for the long haul. You need to know exactly what you want this game to be. Prepare to spend plenty of time crafting the overall design before getting into production. What is an infinite game? It is a game with enough depth, fun gameplay and its content is constantly growing - either by the developer, the community, or both - to keep you genuinely entertained forever. These games are often more than just games, they're best described as alternative realities or virtual worlds. An infinite game is what could be considered as the ultimate-type of game, a super game. As you might expect from something that simulates an entire universe of its own, a game like this is not a simple one and it does not solely focus on a particular gimmick, as that would limit its design in terms of gameplay possibilities that would inhibit it from being a - you know - infinite game. In a similar way, while it can have a backstory or perhaps some predefined history, the infinite game can not limit itself with a finite scripted storyline, meaning it does not have a clearly defined end as a whole. Only an overarching storyline can be present that defines the world it is now and what will and has happened in it. In a very loose sense, an infinite game works very similar to how real life does. Persistent and living world that is interesting simply to be in. The universe is persistent and goes on, you are born into it, go about doing daily tasks, interact with the environment, things happen around you all the time and you take on whatever major or minor challenge the world will throw at you once a while. These challenges could be anything from a grocery shopping trip to an adventure to the Alps. In a similar sense, thats how an infinite game works. You, the player are put in a living, breathing and persistent universe, you hang out, do fun activities and go on adventures based on a personal quest or as a reaction to some event in the universe. Now meanwhile the universe is infinite, the adventures and events mentioned above are finite and standalone. Each adventure has a clear beginning, progress and an end, similar to what you've come to enjoy in scripted singleplayer games and movies. Memorable experiences. Beginning of the next epic adventure. So, with an infinite game, it acts like an infinite generator of adventures for you to take on. While all that happens, the universe is persistent and the things you do in the past can leave a mark in the future. There also remains a sense of consistency with the existing content and the new, meaning whatever you add to the game as new content will work perfectly well with the existing elements, multiplying the possibilities of gameplay instantly. In a sense, all the content you create as a developer for the game will remain infinite just like the rest of the game does. In other words, the work you put into this game and its content is not a throwaway job. Any work you do will live on forever, literally. Compared to an infinite game, creating a scripted storyline while trying to shoe-horn the player into someone or something they're not - unless the purpose of the project is to specifically teach or tell a certain story - is quite counter-intuitive, especially if the original goal of the game was to give you an experience of doing something or being somewhere only to have it end up so limited and short-lived. The requirements of an infinite game Infinite games are modular. They are made out of certain components. To create a game of this caliber, there are a couple critical components that are required and a few optional ones that make an infinite game a possibility and work properly. Disclaimer: there is no such thing as one game to rule them all. A single video game cannot be all at once and give you all experiences at once. Impossible. Every video game is different, you can't have everything at once. Every video game can focus only on delivering one certain universe with a set of certain rules and the content associated with it may not be compatible with another system. No matter what, every project will be different and some components of an infinite game may not even fit into the experience its supposed to deliver. An infinite game is only a type of a game. For example, some games can only work as a multiplayer experience, while others work only as a singleplayer game. You can't always have both for every experience you're trying to present. With that said, not every game can be infinite either. If the game has a limited design in terms of what you can do in it, focuses on a specific scripted story or a gimmick, then obviously you can't make an infinite game out of that. An infinite game is not suitable for experimentation or prototyping either. You are welcome to try, but the key thing that makes an infinite game work is a robust framework and a strong vision of how the universe is defined and what features it includes. As such, any dramatic changes to the core can easily destroy the whole project, so iterative and agile development methods will most likely explode in your face if you try this. However, with that said, some aspects of an infinite game can be used for finite games to increase its replayability value, but do note that it will not make them a true infinite game. I will now go over the major components that are the requirement for infinite games. Infinite overarching goal fueled by finite adventures and events ...and it never ends. In scripted story games, you have a meaning that you pursue when you play them. Discovery, progression of story, exploration or some big challenge you need to defeat. These are finite meanings. They end once you find out what you went off to discover, defeat what you had to defeat and so on. For an infinite game, for its universe, you need to establish a passive, overarching story. I say "story" very loosely here. Story also means purpose, meaning and reason why you play the game. Environmental sustainability is a good example of an infinite goal. Nurture and protect your world from harm, while improving yourself and your technology. By a passive, infinite overarching goal, I mean a huge on-going event that the player lives by in the universe. This can be something like "the world is ravaged by an alien corruption, survive and get rid of it, one planet at a time" in a game where you travel from one planet to another, defeating a hostile alien infestation by what ever means possible. Another example is "build a civilization, keep improving it while living within it", a minecraft-like game where you claim a piece of land, build up a civilization with cities and towns, maintain them, enhance them and then have fun doing activities that your city enables you to do, either solo or with friends. Basically, these goals are never ending and can be pretty simple as "live and experience the world around you". However, this is only half of the system. The other half is that the universe generates events, either actively by say, erupting a volcano near your city or passive events like "your refrigerator is empty, time for a grocery store trip". Active events are something that happen either by an accident caused by the player or on purpose. Or it can be something that happens out of players control, like how we get earthquakes in real-life. They just happen. Passive events are something that happen because of the mechanics of the player character that occasionally require him or her to react to them somehow, or not at all, with varying consequences. Both active and passive events often occur by themselves naturally and players have the power to create and dissolve them by actively doing something that would change them. Sometimes an event may also predictable and the player can act upon it even before the event has happened and alter it or stop it from ever happening. The events can be both negative and positive in what they hold, but above all, they need to follow the rules of the universe and remain consistent with them, meaning that any event that happens, has a reason to do so. To make this work, you'll need the strong framework I talked about a while back to handle this meta aspect of the game that causes events. Now, these events, both passive and active, can set the player on an adventure with the same level of meaning like a scripted storyline can, except with the added bonus of the player being able to be themselves in the adventure and also have complete freedom to react to the adventure in any way he or she desires. Through these events, you can experience definitive moments in the infinite game that are memorable and have clear beginning, progression and ending. To take the example of the volcano erupting in the city, you begin the adventure of waking up in your house only to find out its half-submerged in lava and you need to escape it and save anyone you can on the way. Escape from the burning city. In theory, this adventure would lead from one event to another by first escaping the danger, then helping others to do the same, then finding a way to stop further destruction to the city, then rebuilding it and improving upon future possible disasters by more clever construction. And there you go, you got a real adventure with all the twists and excitement you get in a scripted storyline and the whole experience can last you just as long, except you get to play in the same universe after the story has ended too, with the adventure leaving a mark on the world for you to remember in the future as you go on new adventures within the city. That's how it all works. An infinite game is a generator for finite adventures in a persistent universe. The whole concept is more or less just like how real life operates. Multiplayer Humans are unpredictable, social, smart and live beings. Put two or more humans to do something together and soon you'll have drama and hilarity fueled by whatever activity they're doing. Playing a game with friends or even a stranger will make every game session feel new in some way either through the ingame behaviour of players that can be anything from stupid, smart to outright chaotic or just through simple communication by text or voice - even just talking to a human being can be exciting. However, in order to harness the value of multiplayer, which is one of the biggest sources for infinite replayability, the game needs to support it correctly. In addition, the game also holds the responsibility of encouraging behaviour within players. There are two main types of multiplayer; competitive and cooperative. Competitive design pits humans against each other with the goal to come out on top at the cost of someone else losing. Cooperative is about working together, either passively or actively. The goal is to achieve a result that everyone strives for, but don't necessarily need to be forced to do it together. Now, I'm going to say something rather controversial here, despite how popular and deep-rooted it is today within our traditions and culture in society. I hope you will at least think for a moment before recoiling with anger. I do not recommend competitive multiplayer. I will not go into the specifics here, as this topic requires an entire article of its own. However, in the meantime I highly recommend reading the following article to get some food for thought on why I just said that. The main point is, if you want a better community of players that are more friendly, helpful and forward thinking, you hold the responsibility to encourage and mold that behaviour within them. Unfortunately, competitive game design is not going to help you with that. In any case, multiplayer presents lots of interesting possibilities that wouldn't be possible or likely to happen in a singleplayer scenario. However, it's not a simple thing to implement because integrating multiplayer into the game's design entails both risks and opportunities that need to be managed properly. You need to realize and accept the fact that your game can directly affect the player's behaviour and can actually encourage certain traits to emerge that can also carry over to the real world in a subtle way. Make a competitive game about proving your superiority over others, you will instill hate and elitism among your player community. Cause and effect. Likewise, make a game about encouraging others to improve through constructive feedback in a cooperative game design, you'd get a civilized community. You reap what you sow. If you're thinking this is absurd and unlikely, keep in mind that video games are a number one activity a lot of people spend many hours upon every day. It's a major part of life for some. Like it or not, but you are influenced by what you do and what environment you're in, so be mindful of that when you design a game with multiplayer Procedural generation Automating content instantiation and randomizing it. It is possible to program a computer to create content automatically and along with that, it can also randomize this content in various aspects. Your game can have a system that will add a factor of randomness by either creating random new instances of pre-defined objects or combining assets in a random way to create completely new content, which in turn can make each time you play it feel different, fresh and unpredictable. This is called procedural generation and it has many uses, but you need to be aware of where to use it and how. There are certain things that you would definitely not want to randomize, as it can either ruin the consistency of the universe - which is very important to maintain at all times - or simply leave you with uncanny results. Now, when I say content, I don't mean artwork and sounds. Those are called assets. Content is the objects and things that are built out of assets, like maps, items and characters. Artwork and sound is also possible to create procedurally, but at best it's only suitable for generic organic type assets. Good fit for procedural generation: creating a forest by scattering individual trees. Some examples include seamless textures of organic surfaces like grass, clouds, sand, rocky terrain, sky, space backgrounds and similar constantly repeating patterns. You can also procedurally generate generic nature objects, that can be anything from trees, bushes, rocks, asteroids and space nebulas. For sound, something like ambient soundtracks is also a good a fit. As for more defined assets, like technology, specific characters or other non-generic and non-repeating artwork, sounds and objects, procedural generation is not that suitable. Those are best done by hand, either by the developer or the users. Ultimately the universe of an infinite game is a very generic setting, devoid of any specific instances of any technology or characters in its initial state, to which the developer and the players contribute to create the more unique parts of the game. The logic behind this is inspired from real life where say, a human arrives to a plot where he intends to live and builds a house in his own image, thus adding that personal touch to the world. Basically, procedural generation is best used for either creating generic, repeating assets or combining assets like modules to procedurally create content, like new stages, maps, worlds. It can also be used to create mutations of characters and technology systems by interchangably swapping modules with similar ones. An example of this is letting a game generate variations of a space fighter by changing its weapon loadouts, the cargo its carrying and the condition it is in. Using that, you can create unique NPC encounters by procedurally assembling ships using random parts, loot and condition. Bad places to use procedural generation is to create new, specific technologies or specific named characters from scratch. In essence, the worst place to use it is for creating something completely new, instead of assembling something randomly from existing parts. A good way to picture the appropriate use of procedural generation is a city. You can generate a city with procedural generation by placing buildings and roads, but cannot procedurally generate the individual buildings and systems that make it up. Those are a task for the human to craft. Until a computer can be as smart as a human, giving it the task of making something creative from scratch is a bad idea. For any new specific unique-type content, a human touch is irreplacable. Personal expression Also known as the ability to express yourself, your creativity or your skill. In a game that allows the player to be free and what he or she wants - which is a very major part to making an infinite game work - you can expect emergent moments to happen where the player goes out of his or her way to do something unique, be it impressive or silly. Personal expression can be achieved in many ways. First and foremost, do not attempt to control or force the player. Just let them be and do what they want. Instead of guiding them intently to make them do something or behave in a certain way, inspire them to do so on their own. Set an example and leave it at that. Secondly, the game's mechanics need to be flexible and open. The key is unpredictable elements. Things like physics, multiplayer interaction, free movement and endless possibilities of item and character combinations. To explain the last one, take a rocket launcher for an example, the fired rocket explodes and causes things to get destroyed and knocked back. A powerful weapon. Then, a craftly player turns it around by taking the rocket launcher, jumping and launch at his feet to be propelled by the explosion to reach higher places or to travel faster. That's what I meant by endless possibilities of item and character combinations. Basically, the point is that the game has the capability to allow for chaos to occur and unique moments to happen. As in, the game is not predictable to every detail every time you play it. I don't mean that by having everything rigged to a random number generator, no. I mean the game relies on systems like physics, where even the most basic things like movement can be interesting, because while you can predict how physics work on a general level, you cannot predict every small detail of it. The result is that even something simple like walking based on physics can go horribly wrong - in a good, memorable way. Even something simple as running can be fun. Third, customization. Naming a character, changing the colors to suit your preferences, wearing specific clothes and accessories to allow you to define yourself and be unique is a big way to bring personal expression to a game. This allows the player to bring out his or her creativity and bring something unique to the game just by being him or her self. In a sense, you even can consider a human player as new content in a multiplayer game. Customization options reinforce that. And finally, the ability to leave a mark in the game's world is another method of personal expression, even if you're only partially involved and regardless of the scale of how significant the event was. Having the ability to do something that persists in the future in some way gives you a sense of meaning and purpose in playing the game, because that something you just did or participated in actually changed the world, even if it was just a tiny thing. What counts is that something the player did actually persisted in the game's universe. Leaving a mark can be a lot of things. Building something, destroying something, changing something... anything that gives the player to personally have an effect on the universe around him. In some cases, the mark doesn't even have to be permanent or long lasting, because the main idea is that the mark recieved recognition of some kind. Either by the game itself by reacting to the player's actions or by other players in a multiplayer game in a way that felt meaningful to the player who did it. By meaningful, I mean the player felt that he exists in the world and was noticed or that his actions had an effect on the world, no matter how small. Social features Social features are about sharing and communication systems. This partly ties in with the above topic of personal expression too. With the ability to express yourself and the emergent nature of gameplay, some very memorable, amusing or otherwise interesting moments are bound to happen, which are something worth sharing and talking about with you friends. Seeing and hearing about these awesome moments is often great entertainment in itself too. With something like an infinite game, you could produce loads of content like video entertainment virtually forever. As such, social features are about helping the player to save and share these moments in the most flexible and easy way possible. These include subtle things like custom cinematic camera control, turning off the overlay interface (no health bar visible) for a more cinematic effect, ability to cheat for better control over the behaviour of the environment, so that monsters dont kill you while you're filming a particular scene or have the ability to spawn specific monsters for a certain shot. Then if you really want to get fancy, add the ability to control time with options to slow, stop and speed up time. Then if you want to go completely overkill, have a full blown video recording software and a screenshot database to view your screenshots with basic editing functions like cropping and the ability to choose which file to save as. To top it off, make it easy to optimize and distribute your video content and images to share with your friends and the world. And let's not forget a tutorial library that teaches the user how to create content and also encourage good quality by setting an example and establishing standards. Anyway, the other part of social features is communication. This divides into offline communication which happen outside the game on a forum, message board or a chatroom and then there is online communications that happen inside the game. Offline communications are a place for more serious discussions about the game with topics about figuring out the game, tech support, lore, sharing moments, original fan content, suggestions and bug reports. These discussions have the benefit of being permanent once posted, which means you can come back to the same thread tomorrow and it will still be there to continue the discussion or find information. Now, don't be fooled here to think that offline communications are not part of the game. They are in a very major way. It's common to hang out in a forum to talk about this and that with like-minded people about something you love. It's a place where the community for your game is formed. It can help out new users with any issues they might have with the game in a dedicated environment focused on the game itself. It's also a neat place to learn something new about the game or to share something others may find interesting, like tips and tricks. All of this can be very much considered a critical part of an infinite game's longevity, especially if it relies heavily on multiplayer. Even if it's a singleplayer infinite game, a forum or similar offline communications system is essential to a game's success. As for online communications that happen within the game itself, these are the opposite of offline communications. They are often short, but most importantly, temporary. Any discussions you will have with anyone ingame will be lost, so all those topics mentioned in offline communications are not suitable in a throwaway environment like this. Ingame communications have many instances of topics player may talk about. It's good to know about them, to allow better design decisions. Simple ingame chatter is the first, where players talk to each other about what is happening ingame as they play, whether to ask for help, inform others, talk about goals and strategy at hand, do greetings, taunt someone or just exclaim something. Then the chat can be used for general quick chat, where players may engage in short conversations, not necessarily involving the game or anything relevant to it, but just talk about something at random. Some players may make friends this way or share something, so to facilitate that, it's nice to have copy/paste functionality in the text chat console ingame in order to easily share links and usernames when people become friends or want to share something. Depending on the game, the chat system could use a way to send private messages when a player wants to say something to another player privately. Also if the game involves a player-rich multiplayer, with more than 20 players at once, you may want to implement group chat functionality, for players to send messages only to a select group of players, so that the chat channel will not get flooded to the point that it becomes unreadable when more than 20 people try to talk at the same time over on one channel. New content and modding Back in the procedural generation section I talked about how despite its applications, it cannot replace the human creative mind and touch to create new specific assets and other new content. Since we're talking about an infinite game, one of the key pillars for a true infinite game is infinite growth. That means constant production of new content, preferably forever. With that in mind, there are two ways for new, unique non-generic content to be introduced to a game. Number one: The developer creates DLC and expansions as long as they can. Now, as you might imagine, this cannot be ultimately infinite. Either the developer might pick up new projects to work on, run out of ideas or just quit whatever other reason you can think of. Number two: The players themselves make new content for the game. This is also know as modding, which has been an extremely big and popular activity within the player community for as long as video games have been around. For the case of modding, anyone can become a modder given the resources and guidance, which manifests in a comprehensive library of tutorials, complete documentation and user-friendly tools to make modding easy and fun. If you're thinking quality is an issue when it comes to player-generated content and modding, don't worry, it's only a matter of setting up standards for new content, setting an example and also having all the aid described above. In more cases than one, modders can produce content in much larger volumes, more frequently and even with higher quality than the developer ever could. Since modding is something anyone can pick up and do, there are infinite amounts of modders that can come in and try their hand at making new content. This is the ultimate source of infinite new content. Obviously it's not simple and requires effort to allow for your game to support an infinite modding community. First of all, the game needs a very robust framework to support modding and have the process of creating new content as streamlined as possible. The created content itself needs to follow standards upon creation to keep the game's universe consistent at all times. This prevents both the developer and the modders from adding unbalanced or unfitting content into the game. Next, like mentioned above, complete documentation, comprehensive tutorials and powerful, yet accessible tools for content creation are essential. These are critical to a content creation system if you want high quality works to come from modders. Finally, there needs to be a place to upload new content and browse it. The specifics are different for every game, but a place to share, find and talk about mods is required. Business model and profits Infinite game means infinite profits, right? Yes. It's something rather new and better, compared to the current business models that often unfortunately degrades the game experience through limitations or other dubious means just for the sake of making profit. This ties in very heavily to modding as a matter of fact. Basically the point is to make modding be an official part of the game by allowing players to create content, sell it on your portal on your terms and you get royalties for every purchase. Valve is already doing this to a limited extent with Team Fortress 2 items and have been looking to expand this even further as Gabe Newell talked about it in his keynote speech at the 2013 D.I.C.E. SUMMIT. They are rapidly catching up to this. Since mods and modders are virtually infinite, you can generate perpetual revenue by providing a platform for people to create their mods on and recieving a percentage of every sale made. Otherwise, monetizing an infinite game is the same as any regular project, depending its style and requirements. For a singleplayer game, a basic one-time purchase to get and play the game. Then you can have official expansion packs and DLC be sold seperately, even through the very mods shop portal discussed earlier. For multiplayer games that require constant maintenance, if it's absolutely necessary, you can have subscription fees, but do not attempt to implement a cash shop or any other system that sells power or limits the game. Free2Play might have sounded like a neat concept initially, but it has a very ugly side to it that compromises the gameplay and consistency of the game's universe. The mods shop portal is a much more friendly and functional alternative. Once the modder royalties really kick in, you could even make the game completely free, allowing people with no income to play the game and create content for you. For some people, the mods shop portal might as well become their primary source of income by creating content for the game and selling it through you. With that, you're pretty much creating jobs for people that manage by themselves. Aside from that, modders themselves will find their task far more rewarding when they can actually earn money off it. However, be sure to include the option for modders to release their works for free for those that wish to do so. Don't impose limits. General hints about developing an infinite game Aside from the above major components that make an infinite game function, here I'll talk about some general things to keep in mind while designing an infinite game. Design every aspect, every UI, every system with infinite expansion in mind It's simple really. Here's a basic example of making a design decision that sets up your game for infinite options, as opposed to the more limited, specific design. Design decision that encourages infinite design. Basically it's about avoiding to impose explicit limits to any system you implement into the game. The above example shows this by having a menu element that accounts for virtually infinite options, as opposed to the limited version that drives you into a corner in terms of its flexibility. The same logic can be applied to everything else. Here's another example how a health bar can be made more flexible: The point is to not limit the possibilities, but enable them for infinite expansion. Design the universe from ground up Start from the basics and move up from there. When designing the content of the game, the world, its rules and everything that makes up the universe, design from bottom to up. This is about creating things in a logical order, since the higher you go, the more dependencies there are to the things below. When it comes to content, begin with the rules of the universe like physics and nature. When you have that defined, you can then create worlds and environments, based on those rules. Next, you move on to objects and items that appear in these worlds. After that, you can define characters and technologies based on everything else you've designed so far. Finally and lastly, you design the story, taking into account the rules of the universe, the world, items and characters you've designed. By designing your game from basics up like that, you will ensure consistency within the game and make it more immersive thanks to that. It will also encourage standardization of content, which makes any new content that follows the rules you've establish always fit the game. Keep the content modular Modularity is the key to an infinite game. Focus on making content by making generic objects that are combined together to create something unique. In terms of gameplay, it's much more flexible and allows for better customization. Modularity. Generic pieces that can be combined together to create something unique. Modularity is about pieces of generic content and assets that are interconnectable and combinable, allowing the creation of more functional game content that makes more sense and is consistent. If you're familiar with the toy building blocks LEGO, then that's the very definition of modularity. Do not control the player, let them be free Freedom to be yourself and do anything. Never assume direct control by forcefully robbing the player's ability to control their character for the sake of showing a cutscene or anything similar. This only kills immersion and disconnects the player from their avatar, ruining the fun. Don't impose artificial limits on anything. Let the game balance itself out by simply making sense and staying consistent. Try to refrain from creating specific instances like scripted missions, named characters and unique individual items and linear campaigns. This is a task for the players and procedural generation to create automatically, usually by taking a generic object and assigning value to it based on its emotional value. This is something that happens by itself when a player comes accross an item and generates an emotional bond with it for some specific reason. Don't over complicate it I've heard people say that an infinite game is impossible because you'd need to create the goddamn Matrix and simulate every piece of it to every detail. This is simply not true, don't over complicate it. You have to keep in mind that computers, althought much more powerful than a few years ago, are still quite limited in terms of processing power and memory. You also have to take into account that human beings can only handle so much complexity before they get confused, so with those two pointers, you won't ever need Matrix-level complexity to begin with. The point is, the design is only as complicated as you make it out to be. Keep it streamlined and simplified, but robust and flexible. Be smart. For a video game, only include the elements that matter for the games universe to stay consistent and the gameplay to function properly and make sense. Anything else: just exclude it, it's not necessary. Non-infinite games can also benefit from this article I also want to mention that non-infinite games can greatly benefit from the above components and these hints, which can increase their replayability value and be generally more enjoyable to play. With that said, even if you are working on a project with a more limited scope, consider the above hints and components, which ever are potentially compatible with your design to enhance your game with the elements of an infinite game, even partially. In conclusion This article has been rather massive, but to tell you the truth, this is only the big picture. I've compressed as much as information as I could before this turns into a gigantic novel. While this article explains all the major parts of an infinite game and what is needed for it to work, there are so many individual details for every part I've talked about that can make or break an infinite game. Not to mention these details will differ for each individual game project, so if you find yourself making an infinite game and feel unsure about how to design specific parts in it, I'm offering a consulting service to help out with that. Shameless self-promotion aside, I will make more articles about these details, because infinite games are worth making and I want to see more of them. In any case, hopefully this article has inspired you in some way or at least has given you food for thought that games can indeed be infinite if made properly.
  8. The Infinite Game

    I just noticed that message above the article telling you guys want me to fix the article before its released.   Upon hitting the edit button I also remembered this place does not have WYSIWYG editor when editing articles, just pure HTML code. This may take a while.   Is there any chance at getting a WYSIWYG editor in the future for editing articles too? The comments system already has one.   EDIT: Alright, that should do the trick. But seriously guys, add a WYSIWYG editor for articles. Doing formatting by hand in pure HTML is so tedious.
  9. The Infinite Game

      Point taken, I actually thought it would be easier to read when the text is broken up into smaller paragraphs, but maybe thats just me being very tired at looking a huge amount of text while I was writing, all the while trying to keep a clear train of thought on a very complex topic.   I'll try to improve the style with my next article.
  10. The Infinite Game

      I understand, but the problem with that is that every infinite game will be vastly different.   Specific techniques you're asking for will depend entirely on the design, meaning its not possible to pin-point the solution that works for every situation. It will always differ from game to game.   The purpose of this article is for you to better know what design decision to make when faced with specific challenges. Its about seeing the big picture and having the thought process you need to make the correct desicions to achieve an infinite game.   Do you understand what I mean?
  11. Writing Game Music

  12. I've never heard of a queuing system in programming before, what would one use it for and why? The game I'm making is a singleplayer-only real time action game and it is not scripted in any strict way, besides how you start and how you end. You are put in a world, given a character and a big goal, which how you complete it, is completely up to you using the environment and other stuff you have. So from that standpoint, I could guess a queue system would be important for a game that is story driven or very scripted in how it unfolds, so in my case it would be irrelevant, right? Sorry if I sound stupid, I'm a bit of a newbie-in-the-process-of-learning when it comes to programming.
  13. [quote name='Zoomulator' timestamp='1341485406' post='4955925'] Event systems have one downside, especially if you're using one big (or a couple*) central one(s) such as I do. It's not very performance optimized, since you've got a big middle hand between all objects that communicate via it. The flexibility added usually outweighs this problem [i]imo [/i]and the more performance intensive algorithms are usually isolated in one of the modules. But keep in mind that they can be saturated if there's a lot going on in a real time game. [/quote] This is something I was very curious of when I was reading out about delegates and events, turns out that yes there is an overhead when doing this. I don't know if I'll be using events for the entity system, but two areas where events seem to be very good for are the menu system, which one should be able to evoke anywhere, even during gameplay, and the other is the metalogic of the game that deals with win/loose conditions as well as other major events happening during gameplay. Not sure about the whole ZeroMQ thing. If I understood right, its something you can use for networking in your game, either between 2 programs on the same machine or between 2 programs over different machines? My game will not have online multiplayer, so I'm not entirely sure if its for me.
  14. Thank you so much for your replies, everyone. [b]@ Canvas:[/b] I'm doing this in C# while using the Unity3D engine. The things you talk about are pretty much the SOLID principles I've read somewhere, which reinforces how important they are. [b]@ DevLiquidKnight:[/b] Alright, UML will be useful, but not until I know how to design the architecture in the first place, so those books you recommended will be the first step. [b]@ Zoomulator:[/b] Your answer was very helpful. This is exactly the kind of information I was asking for, especially this bit: [quote] Doesn't have to be UML, just atleast graph it out on paper so you have a rough idea how things are connected that is clear to [i]you[/i] (and the future you). Some people like going with the top-down approach, all the way down. I don't remember which book it was that described the process, but it went something like this: Start with a general overview of the whole system. Then for each object, make a general overview of it that's more specific. Re-iterate until it'd be easier to code it than to describe it, and so code it. [/quote] Also I really like how the event driven system sounds and is exactly what I'd prefer to build. Can you give any pointers on how you start building such architecture? Again, I'm doing this in C#, if it matters. [b]@ L. Spiro:[/b] While I do agree with you that experience is a great way to learn, I'd argue that a good preparing education is a even better. Even now, I could just go ahead and start cowboy coding blindly and get something working, but it will be a mess and not robust, which is vital to this project of mine, because its meant to last. I'd rather spend time studying and understanding how to properly use the tools I've got and have good understanding of healthy coding principles before starting to build anything. Doing otherwise is pretty much the same thing as shooting yourself in the foot. It will be frustrating and the end result won't be good either. Sure, you could refactor constantly if you choose to develop your game in this brute-force like manner, but in the end that will also take time and effort, which you could have used to study the subject properly in the first place. Thats my opinion on this. Anyway, I find your blog really helpful and not just the links you posted too, you've got some other very neat posts there too like, [url=""]this one[/url] and [url=""]that one[/url], so I'm going to spend a good amount of time reading your blog, so thank you for writing it. [img][/img]