Jump to content
  • Advertisement

Search the Community

Showing results for tags 'Theory'.

The search index is currently processing. Current results may not be complete.


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • GDNet+
  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 74 results

  1. Game design document: link.odt (require LibreOffice or compatible) (don't expect anything professional) Rise@Zero is a Apocalypse Arena where a massive number of players cooperate to... well, survive to an apocalypse. Players are expected to collaborate, each time someone die the difficulty scales up to unsolvable situation: I shall leave the GDD itself for all the details. The project itself its currently beyond my league and, anyway, I still don't know if the game would be actually fun: let me explain. This concept is fairly original: its not about shooting, melee fight, asymmetrical horror and overused stuff like that. The core is that player would almost feel the impending need to protect other players: each time a player dies, the earthquake's ratio scale up... possibly ending in a "domino effect". Newbie player would play in similar fashion of the baby in "Who's your daddy" game. Having no empirical background for such kind of game, I simply don't know if this game may be fun or plainly boring: to figure this out at least a prototype is needed, and that's the reason why I am looking for help. The prototype is also detailed in the last chapter (appendix) of the GDD: not all features are mandatory, I can further scale things down if needed. Things I can contribute with is rigging models, build simple/scratchy lowpoly maps, concepts art and contribute with lore that help builds the look&feel (mostly done already in the GDD) I can't provide any founding, but I am open to give the netcode developer the absolute priority on any possible earning from donation/patreon (ie: on Patreon the first tier is yours): the only thing I ask is to not take away this project from me. Code is expected to be released MIT licensed; so no restriction are expected here as well (you can give up anytime, and use the code you did for whatever shooter/melee arena you want: there are many possible applications... I just want the honesty that you will not use it to build your own Apocalypse Arena). Target platform is Linux (with an alternative Windows client for catch more tester possible) and Godot Engine. EDIT: Forgot to add, there's a small draft for a prototype made by me, feel free to take a look, it's a MIT license.. so there are no string attached https://gitlab.com/alexwbc/Rize-at-Zero-prototype Code is basically a mix of godot demo: multiplayer bomberman-like and kinect player.
  2. Hello, This is actually my first post after being a lurker for quite some time here. For the last couple of days I try to get my head around the concept of Overwatch's multiplayer architecture after watching the GDC 2017 talks by Timothy Ford ("Overwatch Gameplay Architecture and Netcode") and Dan Reed ("Networking Scripted Weapons and Abilities in Overwatch"). ( I hope someone here has Vault Access :D) As usual with such complex systems Overwatch seems to combine different approaches to hide latency. Among others, the ones I am mostly interested in are, Command Frames and State Synchronization. I think I understood both concepts but I have problems adding them up. 1) Ford talks about the client being in the future by ~ half the RTT plus one command frame. This ensures that all commands sent from the client to the server tend to arrive when the server is actually at the tick referenced in the command. If that's correct my assumption would be the following: Server is at tick 1000. RTT is ~ 10 ticks -> around 10*16.6 ms. Client simulates tick 1005 and sends command associated with tick 1005. <5 ticks later> Server is at tick 1005 and received a client command. (maybe its already queued in a buffer). Server applies command and sends state for tick 1006 (State_N + Input_N = State_N=1). RTT might still be 10 ticks. Client simulates tick 1010. <5 ticks later> Server is at tick 1010... Client received State for tick 1005 and checks internal buffers for prediction. Does that really apply? Does the client really simulate half-rtt in the future? 2) How do I handle ticks at the start of the game? My network layer requires a timestamp to work and I'd use ticks in the main game loop. Do I have something like a grace period until the client can calculate the required ticks to move to the future (by calling simulation.Tick(1/60f) for the number of ticks to be in the future)? 3) If I run the simulation at 60Hz and the network layer at say 20Hz. Do I have 60 Inputs that I send from Client to Server or 20? I know, this is somewhat similar to other questions in this forum, but I feel like this particular talk has never been discussed? Cheers, poettlr
  3. I've developed a system for sword-fighting games, which is based on renaissance and medieval combat manuscripts, should work with mouse&keyboard, includes everything possible in a real-life sword-fight, should be easy for newbies to use, yet has complexity for master-level play. Haven't seen anything like it in any game I know of. Mount&Blade comes closest, yet is far from the complexity potential of my system. So I ask: Does anybody know any game developers who could be interested? I really wish I could play a game like this. Of course suggestions and critique are also accepted. More info can be found from my blog, a long post showcasing the system, at https://kimripatti.wordpress.com/2018/08/08/sword-fighting-system-for-computer-games/ (For Moderators: sorry if the link to my blog is not acceptable; I can paste it all here, but thought it easier this way)
  4. White_crow

    Fundamentals of Horror

    What is Horror? Horror is a work that causes a person to feel fear; a feeling induced by perceived danger or threat. But people have greatly evolved and modern people are sometimes more afraid of taxes than real dangers! All horror games can be divided into psychological or non-psychological horror games. This is not an indicator of quality, but only the method of frightening a person. Non-psychological horror games can be very good games, and psychological may well be bad. Let's see what the difference is between them. Non-psychological horror games use our primitive fears such as fear of pain and death. These games frighten the player during the game. This includes survival horror, action horror, stealth horror, simple screamers and much more. In such games for the life of the game character in the game, there is a direct danger. But the problem is that a person has a mental barrier that turns on during the game. The game needs to break through this barrier in order to scare the player. To break through the barrier using three methods: flow, pressure, and payback. Each of the methods greatly affects the gameplay. Flow Flow is one of the reasons why new horror scolds for the fact that the game has more become an action game than a horror. But here it is necessary to understand the developers want to create a good horror game and using this principle is not bad. It's just very difficult to balance it. Developers try to create an endless action in which the boundaries between themselves and the character will blur. To do this, the player is given a huge number of tasks, the player concentrating on these tasks gradually removes the mental barrier, as a result, unexpected events do start to have effects on the player. Good examples: dead by daylight, deceit. Pressure Pressure is one of the reasons why most monsters in new projects are either unrecognizable or unresponsive to any player's actions. The skills of players are growing. Now it's hard to find the level of difficulty for the players. The computer is predictable, and if the monster in the game can be destroyed, then the game becomes easy for a large part of the audience. So the developers went to the trick. Now most of the monsters are immortal, and even if they are still so stupid by the standards of the player, now they really begin to create complexity for the player. If you manage to make the monsters smarter the game will really scare the player. Good examples: Alien: Isolation, SCP. Payback Payback - adds extra weight to our failure. The player begins to fear not death in the game, but the result of death, punishment. The further the player passes and receives more, the greater the weight becomes on the shoulders of the player, and the stronger the player begins to fear defeat. The player can lose all the progress of the game, or lose all his equipment. Good examples: Zombiu, DayZ. Psychological Horror Psychological horror uses our subconscious fears: loneliness, sanity of mind, punishment, correctness of choice. These games lay in the player certain thoughts that start to frighten the player behind in the real world. There are two methods of creating psychological horror: creation and awakening. Awakening is a method during which one of the person's subconscious conflicts will awaken. Because of this method, many games that are basically the usual horror are called psychological. Since this method can be modular and used in just a couple of moments. This method is easy to use. And he bases on a lot of psychological principles, which is the norm for most people. Awakening uses such principles: knowledge and understanding, powerless, uncanny valley, disorientation, fishy, against the mirror. Knowledge and understanding - Part of good horror is a mystery. The player has too little information, or the person is not able to understand this information. Powerless - The main character is weak and insignificant. He is not able to do anything or change anything. Caught in a whirlpool of events, that is much more of a player. The player turns into an involuntary observer in order. Lovecraft loved to use this principle in his works. Uncanny valley – Human consciousness is very stereotyped. So we deceive the player. Breaking these stereotypes and forcing the player to doubt his own sanity. This principle works in two ways: looks and functional. Looks. If there is something with which you are well acquainted, and will be changed a little. If the change is insignificant and it cannot be found unless specifically looked for it. Then the player will have a strange sense of paranoia and fear. After all, although the player deliberately did not notice the difference, subconsciously the mind noticed everything and began to sound the alarm. Functional . If something looks like a mug, then it's a mug, not an alien killer. Until one day you do not fall into an alien killer disguised as a mug. You are used to the fact that bullets do damage to enemies. But that if among the bullets there are blank bullets. Disorientation – Disorientation is based on our standard perception of the world: time, space and gravity. Any manipulation of time, space confuses the perception of the world in the player disorienting and frightening him. The first part of the "Evil within" is almost completely built on this principle. Fishy - This principle works in contrast to the Uncanny valley. The human brain reacts very peculiarly to events, and if events that seem unlikely or impossible to our mind suddenly occur, then our brain starts to believe that something is wrong. Imagine that you were kidnapped. You come to consciousness in a locked warehouse with 30 more people. Everyone starts to communicate and it turns out that everyone in the room is called Larry and only you have a different name. Even if it's just a coincidence, this fact scares you much more than the fact of abduction itself. Against the mirror – The principle in which a player is forced to meet the result of his actions. The player does something that he thinks is right or something that the game asks for. Then he meets with the consequences of his actions. Examples of good games with this principle: spec ops the line, undertale, silent hill. Loneliness – The player is isolated from other people or the outside world. If you simply use these principles without context, then it will lead to nothing. But awakening in good hands can be extremely powerful. Let's look at PT and what it uses. Constant return to the same room. This is the principle of disorientation. At every entry in the room the room changes. Using the Uncanny valley. At some point the radio will ask the player to turn around.. Fishy principle. The game has no background. And the player learns all the information from the environment and the radio. The principle of knowledge and understanding. The player is not able to do anything against the ghost. The principle of powerless. Creation You work from scratch. You do not know what the man is afraid of. But taking as a basis a person who has a specific fear (phobia). Taking his experience, the cause and vision of the world under the influence of this fear. You create this fear for the player from the very beginning. Create a world and experience in which this fear really matters. Examples of phobias and how to turn them into a game: Acrophobia – Imagine a game where the player needs to cross the skyscrapers along the rope. And in case of a fall you will fly to the end down. Apiphobia – Imagine a game where all the bees went crazy and made a real apocalypse. Completely exterminating all people and nurturing the nests everywhere including the bodies of men. And throw the player to survive in this. No worse than a zombie apocalypse. Haptophobia – The game character gets injured in every physical encounter with any person. Now you need to get out of the huge metropolis on foot. All residents go about their business and do not pay attention to you. And only you need to avoid the clash with people.
  5. Game design starts with an idea ... But at the same time I did not find a single course or book where it would be talked about how to generate ideas and how to do it better. I spent some time studying the question, and I identified four techniques that can be used by the game designer in creating ideas. There are, of course, more techniques, but many of them are designed to solve problems than to generate ideas. The techniques are called: Concentration, Brain Storm, Scamper and Ramsey. Concentration This method is the most common and we are all able to use it ourselves, without any training. In fact, you think until you have an idea. But in this case, too, has its own characteristics, which I learned from one biochemist, named Motonari Uesugi, who had a course in biochemistry. He talked about a scientist who developed DNA cloning. The road to the research center, where the scientist worked, was walking along a rocky, winding road running along the shore of the ocean. Every day, on the way to work and from the work of a scientist, a lot of excellent ideas were visited, while at the same time he could not come up with anything at work. He put forward the assumption that thinking in a stationary atmosphere a person will always come to the same ideas, but being in a changing atmosphere a person will generate constantly different ideas. Further research has shown that any changes in the environment affect positively the generation of ideas: To ride an unknown route, take a walk in an unusual time for you and so on. Further it turned out that not only the change of environment influenced the generation of ideas, but also any new information was obtained. Therefore, curious people that are constantly learning something new can generate ideas better. Therefore, for the game designer, curiosity and constant study of something new are vitally important. Brainstorm It is the most common and well-known method in the industry. Many companies use this method and this is the only method that I learned about from the games industry. To perform this method, only people (10-20) and premises are needed. The method is performed in 3 stages. People are divided into two groups: Participants and the Commission. The first stage is "Statement of the task". It is held by the participants. In the case of creating games, the task is issued from the number of resources: the amount of money, the number of team members and their specialization, the amount of time to develop. All the collected information on resources can adequately create an idea of what kind of project the team can create. The second stage is the "Generation of Ideas". It is held by the participants. People simply begin to offer and complement each other's ideas. Any ideas are collected, even the most delusional ideas, for example: a plumber saving a princess or a super fast blue hedgehog. When all the ideas are collected they are transferred to the third stage. The third stage is "Grouping and selection." It is held at the commission. Here already the second group collected ideas evaluates and chooses the best idea. For this method it is important that the group of people for the brainstorming be as diverse as possible. Therefore, many companies also strive to collect a diverse team (different races, nationalities, social status, history, gender). Also, if participants in the assault team are members of the game development team, the idea and concept of the game will be perceived as the result of the collective work of the team. This improves the atmosphere in the team and will increase the motivation of team members. Scamper It is very simple and convenient method. It is especially useful when working with unusual and unloved types of games for you. It is very easy to use and almost always brings results. In fact, this is not one method, but a whole set of methods that the game designer changes in turn, until he finds his idea. Each of the letters is a reference to one of the methods of generating ideas. In this case, it is better to disassemble each of the methods separately. Substitute Replace. You simply replace something in an existing project and see how everything will look now. In the case of games, you need to change the mechanics in the game. Think: What if I replace it? Example: Noitu love 2 In this game there are three game characters that open in their time. The plot game and most levels are the same for all characters. But by including games for different characters, the game begins to be felt completely differently. The reason for this is the different mechanics of each of the characters. Sometimes, it seems that these are different games, although the levels and behavior of the enemies remained the same. I can talk a lot about this topic, but it will be better if you sit down and try it yourself. Combine Combine. You take two genres that already exist and try to mix them together. Think about it. What if you take these two or more genres of games and cross? Example: Borderland. This series of games is a combination of shooter and RPG. From the shooter game got a first-person view and the main combat mechanics. From RPG the game got a level system, experience, pumping, all sorts of equipment with different indicators and special abilities that a player can learn and use in combat. Adapt Adapt. To do this, you take existing old and forgotten mechanics and update them to new technologies and time. Think about it. What old mechanics can I use? Where to use it? And how will this mechanic change? Example: AR and old educational games. We all know the game Pokemon GO. But few people know that the mechanics, on which it is based, was created long before the advent of mobile phones. Eric Klopfer talked about an educational game that used maps and real places for learning. But this mechanics did not find its popularity because of its inconvenience. But over time, there were mobile devices that could use this mechanic without unnecessary problems. Since 2012, this mechanics has returned with the name Augmented Reality. Modify Edit. Here you refer all the games with a change in the aesthetics and level of the objects of the game. Unlike "replace" here the aesthetics of the game changes more than its mechanics. Think about it. What if you make such a game about something bigger or something less, perhaps something else? Examples: The Sims and SimCity. In the first case, we have a simulator for managing the family of people and their dwelling, and in the second, a simulator controlling the city and its inhabitants. The concept of the game has remained the same, it is an economic and spatial simulator. The difference in games is only in the levels of objects: in the first case it is only a house with a small family, and in the second it is a city. Put Apply. You simply take the existing mechanics and find a new application for it. Think about it. How else can you use this mechanics? Example: Undertale. In the case of Undertale there is a system of experience and levels, but it has a completely different meaning than in other games. If in most games these indicators show the power and development of the character during the game, then in this game this mechanics and characteristics is the player's karma. Eliminate Exclude. This method requires the game designer to cut and exclude some mechanics in the already existing type of games. Think about it. What can be cut out of the game and how will it work then? Example: Ultimate Epic Battle We all know the strategists: we collect resources, build the base, build the army, destroy the enemy army, destroy the enemy base and win. But if we exclude everything related to the collection of resources, construction and development base. What's left? And there will be Ultimate Epic Battle, here you just generate armies on the battlefield and watch them fight. Reverse Expand. The games industry is also flexible to the action of stereotypes, like any other information sphere. And sometimes breaking these stereotypes can get very interesting projects. Think about it. What if we do not do here like everyone else? What if we did the opposite? Example: Overlord and dungeon keeper. In most fantasy games, the main character is a positive character saving the world from evil. In the same games you had to play for the villain. What made them much more interesting than most other projects in fantasy style. The Ramsey method. This is the most difficult of the methods. This method was taught to me by psychologists and for this reason it is so complex and heavily populated. But you will need it, too, if you want to become a high-class specialist. What is this method for? One day you will be hired as a game designer and your director will say to create a game on a very specific topic, for example, to create a game about Einstein, fairy tales of the Brothers Grim, or "Alice in Wonderland". And you immediately rested against the wall. Ramsey wrote a theory that, if you take a large amount of information and start looking in it closely and manically, you can find new information or find inconspicuous links. This explains why people with various psychological disorders, like paranoia and schizophrenia, can everywhere find evidence of their rightness and their theories. This theory can also be used in the opposite direction, creating previously unobtrusive concepts at first glance. The essence of this method is that you collect the maximum amount of information on the topic that you need to assemble the games. And then you start to study this information, looking for hidden connotations and imperceptible connections in it until the concept of the game is collected from these pieces. The effectiveness of this method depends only on two factors: the amount of information collected and the effort spent studying this information. Let me give you a couple of examples. The game about Einstein is Brad. Two years after I played the game, I accidentally took the book "Einstein's Easy Lessons". My brain just exploded, many moments, phrases and mechanics were described throughout the book. The game about the Brothers Grimm - American McGee's Grimm. In the beginning, I did not understand why in these games the twisting and dullness of fairy tales. But then I met one person. He told me that the fairy-tale brothers' tales have changed a lot since that time they were in the original. It was darker times and tales, respectively, were much gloomier, but over time, adaptation of fairy tales to a new time was in progress. As a result, after reading the original tales of the brothers' make-up and the current editions, the person will have a vivid sense of contrast. This is shown in the game. This is a sense of contrast between what we know these fairy tales and what they really were written. The game about "Alice in Wonderland" - American McGee's Alice and Alice: Madness Returns. In the game you will meet most of the characters from the book, and you will visit Wonderland. The game designer tried to imagine what happened to the main character, so that Wonderland appeared in her head. For the main character, Wonderland is the inner world of her mind. As a result, the story began to consist not only of events in Wonderland, but also the events of real life, which is mirrored in the Wonderland of Alice. As you have noticed, most of such a game plan can be called unusual and sometimes strange, which does not make them bad. So if your director wants to create a game based on his favorite music group or his favorite book, now you know what to use. This is my first article and I hope that it has been useful to you.
  6. Hi, I'm working on an FPS game and have had no end of problems trying to get my networking off the ground. Right now I'm using snapshot interpolation for lag hiding of remote players. I've been reading basically everything available online about the subject and the theory all makes a bunch of sense but when it get's to implementing it I just get mired down in weird problems and end up doubting the approach completely. I've been stuck on this for too long now and figured it was time to ask for help. My current approach is trying to keep the client and server ticks synced by using a floating tick offset based on round trip time(and influenced by reported difference between last acked tick + current server tick). What I don't understand is why keeping the 2 in sync matters at all. It seems to me that no matter what, you should be just taking user input off the stack and applying it to the most recent server state, instead of trying to backtrack or wait until the correct tick. You should then send all clients this most recent state with the most recent player command # so the client can reapply those commands. First blush it just feels like keeping the 2 ticks synced is just a way to make resim time more predictable or something? Also when you're keeping the tick synced on client and server are you also storing game snapshots on the client based on its local state or are you only storing snapshots for frames the server has sent you? If you are only storing snapshots the the server has sent you, it also feels weird to have a tick # on the client at all. What I keep going back to in my mind is that the server has a tick # and the client just has a list of recent snapshots received from the server and a list of yet-to-be-acknowledged commands. The client processes local input and sends to server with its local command #. Server receives input as quickly as it can(with some small jitter buffer just to keep them spaced out), processes user input received that tick, advances simulation, and sends the most recent gamestate to all clients with their individual command #s. Clients receive update, reapply any commands > the command number received, etc. I don't know if it's just another way of saying basically the same thing but to my brain this makes more sense. Does that make sense? Am I over thinking this?
  7. I have reached a point in the game I am making where everything is just starting to fall into place. So now that everything is aligning I can't help but notice that my AI is the weakest part of the game. The game is a 2D Sci Fi space combat game. The game leans much more towards arcade games. At the moment my AI uses a rule based system, something like this: public Class AIRules { //Rule1 void ShootEnemyInRange(){ //Code for firing etc. } //Rule2 void LookForTarget(){ //Code for looking for a target } } Rule 1 has priority over Rule 2 etc. So as can be seen I am no expert at making AI. I would like to improve my AI but I don't have months to spend learning something new. I was hoping that someone could point me to something simple that I could learn to improve my AI, that will only take about a week to learn. It could be any small practical thing. Something that would be useful to a indie developer.
  8. Hey all! This time I'm going to write a little about my plans for generating planets. This entry won’t go into any specific details of the terrain generation but will be just a very high level overview of the basic framework. I don't think any of the ideas in here are new.. the procedural generation community are a very clever bunch indeed! I'm always amazed how when an idea pops into my head I'm able to find an existing article about it that goes into fine detail on the subject. Anyway let's crack on! Heightmaps & Voxels When it comes to generating terrain an easy first choice is to generate height maps and build the terrain mesh from that. You can get some good looking results quickly by overlaying some noise generation and tweaking things here and there. Though these can give some nice results they have limitations. For example tunnels and overhanging terrain can’t be represented in a simple height map. You also have to choose a projection scheme to map a 2D height map onto a sphere. There’s another approach to terrain generation using voxels and that’s what I’m aiming to use. With voxels you can define all sorts of complex terrain and you can define what’s hiding under the ground too - whether it's seams of coal, ore or underground rivers. Many games use voxel terrains to great effect such as the infamous Minecraft. Sign me up! In Minecraft the voxels are arranged in a grid, keeping everything nice and simple.. until you want to model a whole planet. Then you’d get something like this: Though that does look really cool, I don’t want my worlds to be great big cubes floating in space, so what do I do? There are all sorts of solutions to building a spherical world from a voxel grid, but they seem to be full of difficult space warping, caveats and rendering complications. I’d rather not deal with these kinds of complications, so I’m going to try a different approach. Instead of arranging the voxels in a grid I’m planning to arrange them as points on a geodesic sphere like this (imagine the vertices are voxel points): It’s like taking the space warping issues you’d need to do at the cubes edges and spreading it evenly across the entire surface of the sphere. Instead of it becoming a difficult edge case it becomes a constant low level annoyance and keeps things consistent at all times. It will make the mesh generation a little more fun later too Voxel Planet Generation The plan is to use an icosahedron as a starting point. Each vertex here is a voxel. This can be considered the lowest possible Level Of Detail (LOD) of a planet. The space is chopped up into tetrahedrons from the planet surface into its core. There is an extra vertex at the centre of the planet for this. These tetrahedrons can be subdivided through to the core of the planet as required. These illustrations are somewhat misleading though as this isn’t just generating a spherical mesh, but a bunch of voxels that could be empty space. The voxel points (vertices) hold information about what's actually in the space they occupy, whether it’s atmosphere, rock, magma etc. It is the job of the terrain generator to define what a voxel contains. I'm going to keep a clear divide between the planet voxel generation code and the terrain generation code this way. I have some uncertainties on how to best manage the subdivisions of the planets voxels as required, but I’ll bash it out in a prototype. Dynamic Changes The game also needs to be able to make permanent changes to the terrain during play. Large explosions should create craters and I want them to persist. To do this I will need to be address the voxels and save state changes about them. I'm not 100% sure on the approach for this yet either. One train of thought is to basically create an algorithm for the voxel generation that that is able to assign each possibly generated vertex a unique 64bit number. That would have no waste and allow the maximum number of voxels, and some napkin math makes me believe it would have good detail on earth sized planets. Another approach could be some kind of hash of their XYZ or polar coordinates, though that will be more wasteful so it’d bring the total addressable voxels way below what a 64bit unique id could theoretically hold. Ok that’s enough for now!
  9. Hi, I am looking for a TCP or HTTP networking library similar to Lidgren (UDP). This is primarily for sending game map data and potentially other large messages from Server to Client. I do want to keep Lidgren for my chat messages, player position, small fast updates etc. I especially love the flow of data and the library usage in general, so any libraries of a similar style would be excellent. Preferably something open source, free and reliable. I also must be able to swap between localhost and an ip address with ease, like Lidgren, as I run a server for singleplayer/mp/lan. My game maps are similar to minecraft, but it is 2d and only one Z-level, so i'm sending a jagged array of Tile object data (currently only enum TileID.Grass) down the pipe to the Client. Problem is if i'm sending a large map 1024 x 1024 tiles down the to client that's quite a lot of data, and Lidgren is relatively slow to build the writes (before the message is even sent!). It is fine when i'm using smaller maps < 512 x 512 ( xTiles * yTiles ). I know about chunking and will look into implementing this later, whilst taking into account the user's position in the world to only send nearby chunks. An example of my code that can be slow: private void WriteWorld(NetOutgoingMessage outgoing) { try { var world = WorldManager.Instance.CurrentWorld; outgoing.Write(world.XTiles); outgoing.Write(world.YTiles); for (int x = 0; x < world.XTiles; x++) { for (int y = 0; y < world.YTiles; y++) { // Write Tile obj data outgoing.Write((int)world.Tiles[x][y]); // <-------- Slow here when xTiles and yTiles are each > 512 ! } } } catch (Exception ex) { // log send error } } I'd love to hear from you guys, especially if any of you have come across a similar challenge.
  10. While going through a Game Design Document Template, I came across this heading - Core Game Loop & Core Mechanics Loop. What's the difference? Can you provide some examples of an existing game? Suppose if I am including these topics in a Game Design Document, how should I explain it so that my team can understand?
  11. I've put together some tutorials that explain the ideas behind Marching Cubes and Dual Contouring. Maybe it'll be useful to some of the forum-goers. Marching Cubes 2d Marching Cubes 3d Dual Contouring Each tutorial comes with sample code in Python. Let me know what you think. This is the first time I've written a tutorial, but may do more if people want them.
  12. I have an idea about a modern-day war game, where players build up their base and attack other players. What I was unsure of was if a game like that needs a back story, a reason why everyone is fighting each other. So what do you think? Should a game with base building and PVP need a backstory? If so, what are some appealing ideas? Why is the world at world? How do new players coming into the game change the story at hand? If at all? Will there ever be a single victor? If so, what happens then? Let us have a discussion...
  13. hi. I'm a programmer that I want to learn about game design fundamentals. as you may know there are lots of books that most of them teach the same thing. I want to know what are must to read and most important books that teach game design rules and fundamentals.
  14. I control the camera in my program by changing the transformation matrix (which alters the other underlying matrices). Not this is all in 2D. The transformation matrix is pretty standard. It is a 4x4 matrix with the diagonal acting as the scale factor (x, y, z) and the right side acting as the offset coordinates (this is ignoring shear and rotation which aren't that important to me though I would like the method to still work with rotation). So essentially I am currently zooming by altering the x and y scale in the transformation matrix. This seems to act from the top left corner (which is the origin in my coordinate space). I would like the zoom to act towards the mouse. So knowing the x and y position of the mouse when I apply my transformation (every frame) how should I alter the zoom so that it zooms towards whatever the mouse position was? I can share code if you would like but I am writing this in Rust. Also let me know if you need more information I am happy to provide I just didn't want to over share.
  15. I am about to start a PhD that will investigate ways of replicating creativity in the AI systems of simulated people in virtual environments. I will research which psychology theories and models to use in order to achieve this, with a focus on creative problem solving. The aim of this project is to create virtual characters and NPCs that can create new solutions to challenges, even if they have never encountered these before. This would mean that not every possible action or outcome would need to be coded for, so less development resources are required. Players would encounter virtual people that are not bound by rigid patterns of pre-scripted behaviour, increasing the replay value and lifespan of games, and the accuracy of simulations. I am looking for companies or organisations that would be interested in working with me on my PhD, and I think computer games companies might be the most likely. I am trying to think of ways in which this new AI system might benefit games companies, or improvements and new types of games that might be possible. I am on this forum to ask for your thoughts and suggestions please, so I can approach games companies with some examples. Thank you for your time and interest.
  16. Mark Simpson explains some fundamental principles anyone can use to improve their art, with examples and links for further reading.
  17. Corbbin Goldsmith

    Marketing I'm writing about games!

    Hi, everyone, For the last month, I've been building out my news site for developers of all sorts, and I cover games, apps, web apps, SaaS, you name it! If you want to have an article written about your game, contact me so I can get started! Requirements: A "playable" game A good idea behind it Um, that's about it. Just send me a message through my site. Articles I've written: https://www.theinspectorpress.com/news/dreamscape-168-z-run https://www.theinspectorpress.com/news/unlok-wayward
  18. Spool

    UI, for the love of God. UI..

    A couple months ago I decided to delve into the dark arts that are seemingly only attempted by the bravest of programmers. UI Framework development. While honestly I didn't fully understand what designing and creating a UI Framework from scratch truly entailed, I had some notion that it was no easy feat. As such should be approached with caution if not entirely avoided as the amount of UI Frameworks available are as numerous and the reasons not to make one yourself. But, I decided to embark on the journey anyway.. I guess the first big question you would ask is, Why? Why would you want to do that. To be honest, I asked myself that very question. The answer I came up with may seem rather shallow and the hallmark of an inexperienced developer.. They all suck. In *my* personal opinion anyway. Yes, they all suck. But that seems to be the norm in software development, we work with things that we don't really like because the idea of making the utility they provide ourselves is just as miserable if not more so than using the framework or tool in the first place. Anyway back to why all UI Frameworks suck. From hours and hours of scanning through endless lines of Desktop UI Framework source code repositories, I have come to two major conclusions about most if not all of them. 1: They all do WAY to much and try to handle every single feature, problem, platform, style, you name it. They end up bloated piles of code that seem to have no cohesive structure. 2: Everyone of them seem to have a ridiculous monolithic base Widget class that does EVERYTHING. So when you have a Screen full of Buttons you have all the infrastructure and memory requirements needed if you were to have a Screen full of Windows containing many other Widgets. Wasteful and unnecessary. To be honest, I can see why these traits are common. UI is complex. It needs to be reusable and flexible enough to fit into any application that wants to utilize it. Doing so in a clean concise manner is no easy task. Its very easy to indulge in the temptation of easiest implementation is the best implementation. After all, people need their UI's in a timely fashion. But what if we didn't do that? What if we really sat down and looked at how a UI operates, what it *needs* to do. What type of general structure would work best for those needs. This is what I decided to do. I decided that if I was going to make this, I was going to do it right. By my standards anyway. Next post I intend to go into my thoughts on how UI *should* be. If anyone read this. Thanks, feel free to yell at me in the comments.
  19. Hi, guys! I have a rather abstract question, because I don't know which side to approach to its solution. So, I would appreciate any information. I have a task to create a simple game that generates floor plans and I following by this perfect algorithm (https://www.hindawi.com/journals/ijcgt/2010/624817/). At the moment I use squarified treemaps (http://www.win.tue.nl/~vanwijk/stm.pdf) and here no problems. I create nested array in which elements are rooms with size. Problems starts when I trying to represent generated "rooms" as edges and vertexes (a, b, c, d steps in attached picture) That representation can give me access to this elements as special "entities" in future game versions. I don't have skills in graphs (and do I need graphs?) and at the moment totally stucked at this step. How can I represent room walls as trees (or graphs?) at this step? Calculate size of squares (rooms) and convert sides to a vectors? Then in loop find shared vectors (same position by "x" or "y") and determine them as shared walls? The instinct tells me that there exist more elegant and efficient ways. Anyway, thanks for any information about this.
  20. And so we meet once again to discuss what's new in the development of Lyfe. But as we promised on our Twitter this is something big. I don't have to tell you what we're discussing, you probably already read the title of this entry. I have to thank Jake Best who took the time draw the concept we developed for how the player will create the basic shapes for his cells. So let me explain what is going on here. You start off with just one central orb. This is your base node and your cell starts to 'grow' from it. There are arrows on four sides of this base node. If you pull on them new nodes will be created in that direction. This will create a kind of 'spine' for your cell. As shown in fig. 3 and 4 not only is the default setting when creating new nodes to the left or the right to make your cell symmetrical but you can also move your nodes/ bend the spines and the shape will be translated to the other side as well. You can also scale single nodes (fig. 5/6). This expands the cytoplasm around this node. The next thing is something we decided we needed but are not sure how to implement: a weight/thickness slider. This includes the overall amount of cytoplasm with a slight bias for filling up space between spines. Next step: placing organelles. Most organelles like Mitochondria or a Golgi Apparatus can only be placed on the inside of your cells but all organelles that are used for interaction with the outside world like Flagella or Pseudopodia have to be placed on the membrane. Organelles will have options to deform them, like elongating. Rotating them around the anchor point on the cell is also an option. Asymmetry is an option that not only affects the placement of the organelles but also the sculpting of your cell. In fig. 11 the right half of the cell is deleted resulting in this more potato shaped creation. Below are some possible results you might achieve with this toolset. For the two on the right, the dashed line represents their shape if the weight-slider was put to maximum and the one on the far left is a more experimental idea with actually two split nodes. If this will be possible in future is not sure yet, but we will see. That's it for this entry. Feel free to comment all your questions and suggestions. Keep on evolving! cellcreator.pdf
  21. Intention This article is intended to give a brief look into the logistics of machine learning. Do not expect to become an expert on the field just by reading this. However, I hope that the article goes into just enough detail so that it sparks your interest in learning more about AI and how it can be applied to various fields such as games. Once you finish reading the article, I recommend looking at the resources posted below. If you have any questions, feel free to message me on Twitter @adityaXharsh. How Neural Networks Work Neural networks work by using a system of receiving inputs, sending outputs, and performing self-corrections based on the difference between the output and expected output, also known as the cost. Neural networks are composed of neurons, which in turn compose layers, or collections of neurons. For example, there is an input layer and an output layer. In between the these two layers, there are layers known as hidden layers. These layers allow for more complex and nuanced behavior by the neural network. A neural network can be thought of as a multi-tier cake: the first tier of the cake represents the input, the tiers in between, or lack thereof, represent the hidden layers, and the last tier represents the output. The two mechanisms of learning are Forward Propagation and Backward Propagation. Forward Propagation uses linear algebra for calculating what the activation of each neuron of the next layer should be, and then pushing, or propagating, those values forward. Backward Propagation uses calculus to determine what values in the network need to be changed in order to bring the output closer to the expected output. Forward Propagation As can be seen from the gif above, each layer is composed of multiple neurons, and each neuron is connected to every other neuron of the following and previous layer, save for the input and output layers since they are not surrounding by layers from both sides. To put it simply, a neural network represents a collection of activations, weights, and biases. They can be defined as: Activation: A value representing how strongly a neuron is firing. Weight: How strong the connection is between two neurons. Affects how much of the activation is propagated onto the next layer. Bias: A minimum threshold for whether or not the current neuron's activation and weight should affect the next neuron's activation. Each neuron has an activation and a bias. Every connection to every neuron is represented as a weight. The activations, weights, biases, and connections can be represented using matrices. Activations are calculated using this formula: After the inner portion of the function has been computed, the resulting matrix gets pumped into a special function known as the Sigmoid Function. The sigmoid is defined as: The sigmoid function is handy since its output is locked between a range of zero and one. This process is repeated until the activations of the output neurons have been calculated. Backward Propagation The process of a neural network performing self-correction is referred to as Backward Propagation or backprop. This article will not go into detail about backprop since it can be a confusing topic. To summarize, the algorithm uses a technique in calculus known as Gradient Descent. Given a plane in an infinite number of dimensions, the direction of change that minimizes the error must be found. The goal of using gradient descent is to modify the weights and biases such that the error in the network approaches zero. Furthermore, you can find the cost, or error, of a network using this formula: Unlike forward propagation, which is done from input to output, backward propagation goes from output to input. For every activation, find the error in that neuron, how much of a role it played in the error of the output, and adjust accordingly. This technique uses concepts such as the chain rule, partial derivatives, and multi-variate calculus; therefore, it's a good idea to brush up on one's calculus skills. High Level Algorithm Initialize matrices for weights and biases for all layers to a random decimal number between -1 and 1. Propagate input through the network. Compare output with the expected output. Backwards propagate the correction back into the network. Repeat this for N number of training samples. Source Code If you're interested in looking into the guts of a neural network, check out AI Chan! It's a simple to integrate library for machine learning I wrote in C++. Feel free to learn from it and use it in your own projects. https://bitbucket.org/mrsaturnsan/aichan/ Resources http://neuralnetworksanddeeplearning.com/ https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A
  22. Penkovskiy

    3 Game Design Mindsets

    (you can find the original article here along with future 2D monogame tutorials) It was a late Saturday afternoon as I began the walk across the crooked streets of the inner city. With a small tip-off from one of my trusted friends, I decided to go looking for this suspicious and mysterious looking man who usually hangs out behind Yarn’s cafe on cold nights like these. It was out of sheer desperation and utter determination that pushed me to get my hands on a rare type of night vision goggle that was off the market. As I located the shadowy figure behind the cafe, his face slowly illuminated as he moved into the light. It was easy to see from his worn and anxious face that it was urgent business that had brought him. Tracking this guy down was hard. After many wrong turns, a lot of false information, and a risky run-in with authority, I had finally located the dealer. But I noticed something strange. My friend from earlier had bought these goggles at a quarter of the price this guy was selling them for – I couldn’t believe it! His prices had actually raised significantly for night vision goggles… and only within a few hours… 3 mindsets you can use to design practically any system in a game – and KNOW it works When designing the nitty gritty numbers for your game, the process can be fun. It can also simultaneously feel like you would rather poke small, long needles into your eyeballs. How much damage does this flaming sword of skulls and bones deal? 5,000 hit points YEAH !!! It’s extremely easy to get carried away or end up with an unbalanced mess that ends up breaking your game at spots where you least expect it. There’s a specific reason I decided to fluctuate the price of popular items in my game’s black market, however, as you’ll learn below, the reasoning why is anything BUT random. I love balancing my games. Not just because I’m a complete nerd, but I also use a very refined and methodical system. I’ve always envied games that have a fairly large-ish (consistent) player base, mostly because of two reasons: They have access to a large amount of ‘statistical’ numbers we can test Getting a large and consistent player base to test your game from scratch is hard Is it weird that when I start getting a lot of players in one of my games, I track how many times each tile has been stepped on since the beginning of the game (and then continue to run it through a heat-map process that tells me how densely populated that area is)? (lighter areas are heavily populated) I know I know, I’m a complete weirdo. You don’t have to tell me. I design my games using 3 simple concepts and strategies that are extremely powerful. By following this strategic and methodical system, you’ll be able to rapidly test, move fast, and experiment further than if you were to just throw spaghetti at the wall and hope something sticks (like everyone else). I’ve read a lot of game design documents, and most are super boring, or too vague to really give me actionable advice. “Design with the player in mind!” What does that even mean? What does that look like when you’ve been awake for 40 hours straight staring at your computer screen, talking to yourself, questioning your sanity? Here are some unique things I did to my game’s market recently; Capped the amount of money players could hold. Inflated prices on popularly bought items with a slow decay time. Example equation: (price = 0.99*price + (1-0.99)*initial_value) called every second Fined players through money (something you don’t want players to do? Fine them heavily for it – you’ll quickly see that nobody is cursing anymore ) I made players have to repair their most used items with money. Why did I make these decisions? I’m not just waking up one day and saying “Let’s fine the players! They suck!” Each decision was based upon testing and previous data, ran through this framework. If I thought it would be beneficial to fine players when they curse, I would first spend 5 minutes making a code that tracks how many times players curse and store it in a log. I’d look at it a week later, and based on how often players curse I would decide if fining them would have an effect on the economy. Money inflation is a problem in most multiplayer games, but using a systematic approach that I’ll show you below, you will always know which lever you need to pull to get your game on the right track and finely tune it like a well-oiled machine (no matter what problems you’re facing). Step 1. A benchmark is something simple to track. Follow me through an overly simplified rpg “leveling up” process. A player starts at 50 health. Each level, they gain 10 health. The max level is 20, meaning the max health is 250. The most powerful weapon in the game deals 10 damage per second. The most powerful armor in the game protects 80% of damage. It would take (~2 minutes, or 125 ‘hits’) to kill the strongest player in the game who’s wearing the strongest armor in the game while you’re using the strongest weapon in the game (assuming every hit lands while both of you are running around). These are what I call benchmarks. With these benchmarks, it’s infinitely easier to see exactly how balanced your game is from an overhead angle. Step 2. Working Backwards By knowing your benchmarks, it’s infinitely easier to decide “I don’t want it to take 2 minutes to kill Bob, I want it to take 1 minute” — rather than continuously guessing why it takes the strongest weapon so long to kill bob but one hits everything else. Knowing this, you can adjust each variable accordingly to set an accurate (to what you feel is right) amount of time it takes to progress in the game. Just from our benchmarks alone, we can adjust the following variables: Bob’s max health Bob’s health gained per level Percentage of damage our armor deflects Bob’s speed slowed by his armor (changes combat dynamics) Speed of the top performing weapon (1 hit per second to 1 hit per 2 seconds) The damage of the top performing weapon With this mindset and formula alone, we are already 98% ahead of where you were before (and where most people are when designing games). Notice when most people react to an overpowered weapon, they usually just turn the damage down without knowing A.) Why they are doing it and B.) What their ultimate target is We could even get creative and introduce new designs to balance this. Weapon damage is (reduced or multiplied) by a percentage based on player’s overall level. Health gained per level can slowly decrease (from 10 down to 1) by every level closer to the maximum level allowed. Changing the percentage of damage our armor deflects based on player’s level How easy do items break? By striking the best armor in the game, does it destroy an item faster? If so, would your weapon be destroyed within the amount of time it would take to kill Bob? It can get complicated very quickly, but that’s why we test each change we make to the game one at a time, develop data, and make decisions accordingly. Step 3. Building a finely-tuned machine (perhaps the most important step of all) We can debate, and ponder, and guess all we want about how to balance a game. How to design your game. I know first-hand because I love doing it. It’s fun. It’s fun to dream about how great your game could be, and romanticize about some kind of super complex chemistry mixing system with its own periodic table of elements where player’s can mix to change their genetic codes to enhance stats or change appearances and give them special abilities, and what would happen if blah blah blah. This, my friends, is where I’ve seen more “indie game devs” fail than what I call a ‘dish graveyard’. When I used to work for Dish installing satellite cable, I would see stuff like this. When old people moved out and new people moved in, they would change service, or in most cases, a new dish was just put up because it was easier than adjusting/tracing cables back/swapping parts off an old dish. It was easier to just throw up a new dish. And I say Indies because I’m a fellow indie who’s been plagued by this. I say Indies because most don’t have a team pushing them to focus on their most important KPIs (key performance indicators). It’s fun to make up ideas, get halfway through a project, and come up with some other random idea that you just have to try because motivation strikes. Riding that high of motivation, you jump to the next project, eventually getting bored of that until the vicious cycle begins to repeat itself. We can conquer this by using small tests and tracking our KPIs. We have the ability to test literally anything within our games — and that gets my inner nerd all fluttery and excited. I track things like how many times an item is bought in a specific period of time. I track how often that same item is discarded. If you aren’t tracking stats like these, shame on you! However, we can get super carried away real fast trying to track everything. What do you think is more important to track? How many times a player gets killed (for no specific reason) or; How quickly a player is leveling up (in general) Setting KPIs in the initial phase This is where you need to get solid on specific KPI’s first, preferably straight from the initial design phase. These Key Performance Indicators are going to be the most important benchmarks that you need to hit in your game. They will guide you towards the things that are most important now, and steer you away from the wrong things that will cause you to lose focus. If I were just starting out making a game, my KPIs would be the most basic – Player movement engine (with collision) Basic player animation (walking) Bear bones interaction system If I was trying to balance a weapon, my KPIs would probably look like this; Strongest weapon in the game takes 5 minutes of combat to kill the strongest player in the game Strongest weapon in the game takes 1 minute of combat to kill the weakest player in the game Simple benchmark to hit. The goal is to get something up and playable ASAP so we can begin testing different things with the players. This is another fatal mistake I see so many people make. They spend months (sometimes years) creating this super complex combat-combo-style-point system, only to release it to few (if any) players — (because the developer didn’t want to let people play the game when it wasn’t ‘perfect’, they couldn’t develop a pre-alpha player base) And come to find out, the players hate it. Small test loops is where the real magic happens Using previous benchmarks and data from extensive testing and player feedback, we iterate through small loops. Take action and test based on a small change in our benchmark. Did we hit our KPI? (Did our KPI change?) Repeat. You can only plan something so far. When your work meets the real world, it’s the fine-tuning that will push it over that ‘excellent line’. Because in reality, your players are the market, and as much as it sucks to hear, no matter how much you liked putting in that lizard sword machine gun, if nobody uses it, buys it, or it can kill anything with 1 hit, you will have to adjust it to your player’s (market) demand. Unless you are tracking, planning, and hitting your KPIs (the only things that matter in the initial phase), you’ll easily get sidetracked, overwhelmed, start looking at the wrong things, make bad design decisions, and eventually, lose focus.
  23. Resources about how to implementing DIY DRM scheme on the web are limited. Requirements: Convenience and not annoying for the User User account for update and online features Watermarks Product key Code obfuscation Respect fair dealing Other such things: Easter egg, Trading Cards, Stats, Achievements, Modding, Leaderboards, and Unlockables. Any resources? ( some links, articles, posts, books, tips or best practices)
  24. Hello there everyone. I want to make a game inspired by Mass Effect, but there are a few general storytelling in video games problems that I'm trying to figure out, before I really get down to making the game. I've been thinking about it a lot, so it will be a bit of a longpost, but thinking in a bubble is never a good idea, so I ask for your help in solving these problems and criticism of my solutions. Any feedback is appreciated. I believe that these problems are interconnected, so I will present them here together and then present ideas that I have about addressing them. Problems Player character can't lose This is the biggest one. And it is not as simple as it may sound. In a lot of games, Mass Effect included, it is impossible for player character to lose an engagement with an opponent. The player can lose a gameplay section, but it doesn't result in player character losing, you just load a save and try again. Witch means that there are no stakes, not really. You can present a story in a way that creates an illusion of stakes, but after playing a couple of times, player realizes that they will defensively win eventually, so it becomes more frustrating then challenging. If you really need player character to lose for story reasons you only have two choices: create a gameplay section that is impossible to win and show a cutscene after one attempt or just show a cutscene where player character loses. Both feel cheap and betray trust between the game and the player. On the other hand, if you take away the ability to load a save at any time, you are presented with two other problems. 1. How do you handle player character's defeat? What exactly happens mechanically if you fail a mission? Does the character die and you have to start the game over? Do you need to write a story for every possible encounter going bad? 2. In a video game, you need to give player time to understand and practice game mechanics. You can't expect player to just be good at your game from the get go, so it feels a bit unfair to just throw them into important story missions that they can't replay and then present them with consequences. Choices that don't matter This is a very common problem in games. Often player is presented with a choice, that seems important, but doesn't really affect anything or affects things, but ultimately doesn't matter. Like: do you kill this person or let them go? witch of this two groups do you support? witch color do you like more red, blue or green? In my opinion, this is very closely tied to the first problem, that player can't lose. Imagine that you are an all-powerful godlike being that can time-rewind-magic their way through any presented problem, what can possibly matter to you? What consequence can you really feel? You could set up a system where your choices affect your relationships with other characters, but in this case you have no reason not to cater to those characters, because no other consequences matters. Linearity of the story This one is a result of the first two. If you can't ever lose and non of your choices matter then the story can only really unfold one way with minor deviations. So if you want to make the story not linear you basically have to make two or more different stories and let player choose witch one do they want to see, choose you own adventure style. Witch is not necessarily bad, but is very cost inefficient and difficult to produce. Solutions Conflict instead of a story All stories are based in conflict. But each story is only one example of how a conflict could unfold. When we tell a story in a video game we basically choose a way this conflict will go and take player through it one step at a time without ever showing them the whole picture. Why not instead present player the conflict itself in its entirety and let player try to solve it themselves? An example that I can think of is Total War games. In Total War you have a campaign map and individual battles. Telling a story is like defining everything that will happen on the campaign map in advance and only letting player win the battles. Presenting a conflict is like giving the player full control of their armies both on the campaign map and the battlefields. Separation of practice and performance Just giving the player full control over the conflict is not enough. We still need to address the whole time-rewind-magic thing. My idea is to create some sort of practice mechanic for the player to learn the game. It can range from letting player play the mission itself in practice mode, to only letting player practice individual mechanics (like a fight with a set of enemies), to anything in between. I personally would introduce some randomness into the missions and let player just play through them as many times as they want. Then, when player had enough practice, it's time to play the mission for real. Player gets one attempt and that's it. What those two ideas would achieve (in theory) When it comes to "Player character can't lose", together these two ideas address all underlying problems. It allows player to practice, it allows player character to lose and it sets up an overarching system of the conflict that defines what happens if player wins or loses and where the narrative goes from there. These ideas together help to create a more complex and believable system for choices. Since player can lose, they must consider not only what they want or what other characters want, but also what can they achieve in gameplay and what gameplay consequences each choice may bring. Finally, since you have full control over the conflict it creates more diversity in how the narrative can unfold, including player's complete defeat. What are problems that these ideas bring Nothing is perfect, so here are the problems that I see in these ideas. Less control over the narrative This is pretty obvious. If you give player full control over the conflict you can't reliably set up scenes, events or set pieces, because they may not take place in some playthroughs. You can guide the player in a particular direction, but you can't force them. Having to design campaign level gameplay and mechanics This is also pretty obvious. If you present player with the whole conflict you need to figure out what does the whole conflict look like, its rules and limitation. And create gameplay mechanics, that will govern it. Difficulty in presenting the narrative When the narrative is so diverse, it gets more difficult to figure out, how to present it to the player. I would tie missions to characters and present most of the story through character interactions before, during and after missions. Player can lose The opposite of the problem that I'm trying to solve is the problem of player losing. If player can lose each individual mission, it means that they can lose the conflict, the whole thing. Imaging putting 20 hours into a game only to lose it in the end. Imagine in Mass Effect 1 you lose to Sovereign in the end, reapers come through the citadel mass relay and destroy the galaxy, how would you feel? I'm not really sure how to address this problem and weather or not this problem should be addressed. So what do you think? Are these problems relevant? How would you solve them? Do you think my ideas can work? Do you see any flaws in my ideas? Do you have any other comments or feedback?
  25. The search for intelligent individuals has begun. Are you ready for the first step, PLAYER ONE? Sometimes, it's easier to find what you're looking for if it comes looking for you. The first clue is hidden within this GIF . Can you find the pattern? Can you crack it? Find it, and it will lead you on the road to finding us. We look forward to meeting the few that will make it all the way through. Good luck. #decipher #cryptography #steganography #geek #puzzle #crypto #readyplayerone #outguess #cicada 3301
  • 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!