Jump to content
  • Advertisement
  • entries
    19
  • comments
    25
  • views
    10890

Planet Generation Plans

nukomod

1324 views

 

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.

image3.jpg.d0643950ffdd9f86dd0f6e1020922ba8.jpg

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.

image2.jpg.4f5a2e118dcbb0837f584cfc2e21d34d.jpg

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:

image4.jpg.06803f5afaa2b9138cb96c5e1150a331.jpg

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):

image9.jpg.0446fca9ecb9619023c5af59509a80be.jpg

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.


image1.jpg.a202d4363bdf2de698a27ea7eebeadd1.jpg

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.

image7.jpg.8681f66211b5b6385177bcae6a15e424.jpgimage8.gif.257e47a37cb70829e3a746f664e40150.gif

These tetrahedrons can be subdivided through to the core of the planet as required.

image5.png.87fe7726c2411700a7f6d0545558fae7.png

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!
 

 

 

 



17 Comments


Recommended Comments

I've had some success applying the usual cube-> sphere transformations to a cube where each face is a voxel shell with some pre-determined thickness. It's not terribly elegant, but it's easy to get up and running. Your tetrahedral approach might avoid some of the distortion and apparent grid - interested to see how it turns out.

Share this comment


Link to comment

Very interesting.  I'll be curious to see how you realise the plan.

Share this comment


Link to comment

Looks neat. In fact I'm working on almost the exact same thing :)  However I'm not sure you can divide tetrahedrons evenly. You can get four new ones on the corners and then you get this sort of odd center space.  In your picture it looks to me like you divided up the faces of the original tetrahedrons which you can do easily, however chopping up the insides might be tricky, however if you figure out a good way to do it, it would be way cool.

I decided to use prisms, just because you can make an octree out of them like you can a cube.  The down side is you can't go all the way to the center of your sphere and also the inner ones are a bit smaller than the outer ones. But if you build your geometry around some reasonable band of the world it shouldn't be a huge problem, and also it gets rid of the problem of geometry looking different in different corners of the world like you would get if you generated your world in a simple subdivided cube.

I had an old version working a few years back but it just used height-maps applied to a subdivided icosahedron based simplex-noise. However it did let you walk around a huge planet without generating any data in advance.

Share this comment


Link to comment
19 minutes ago, Gnollrunner said:

However I'm not sure you can divide tetrahedrons evenly. You can get four new ones on the corners and then you get this sort of odd center space.

That odd sort of space in the centre is an octahedron. Decomposing the octahedorn is tricky, but not impossible

Share this comment


Link to comment
1 hour ago, swiftcoder said:

That odd sort of space in the centre is an octahedron. Decomposing the octahedorn is tricky, but not impossible

Somehow the prisms still seem simpler to deal with though.

Share this comment


Link to comment

You guys are spot on about dividing up the space. I didn't realise at first that tetrahedrons don't tessellate in 3D space, it would have been great if they did. The picture of the sphere where you can see inside is quite misleading isn't it! Gnollrunner I'm playing with some options now, which includes some with prisms, seems I may be going down the same route you did :) Do you have any links related to what you did?

Share this comment


Link to comment
1 hour ago, nukomod said:

You guys are spot on about dividing up the space. I didn't realise at first that tetrahedrons don't tessellate in 3D space, it would have been great if they did. The picture of the sphere where you can see inside is quite misleading isn't it! Gnollrunner I'm playing with some options now, which includes some with prisms, seems I may be going down the same route you did :) Do you have any links related to what you did?

I really don't, I'm just kind of winging it.  I'm basically doing the same thing as marching cubes except with prisms. The hard part is really the LOD transitions.  I think surface nets or dual contouring does that better but then you get other issues you need to deal with. I haven't found any magic bullets. I'm using octrees with chunking such that all cells in a chunk that have any geometry must be at the same level AND neighboring chunks can at most have one level difference. Even with that, the edge conditions are a pain. I worked out an algorithm that seems to work but I'm still debugging all the cases. I have table look ups with pointers to little subroutines that handle various cases. It's a lot of code, but I'm tying to avoid a lot of ifs.

Share this comment


Link to comment
On 6/19/2018 at 6:03 PM, nukomod said:

You guys are spot on about dividing up the space. I didn't realise at first that tetrahedrons don't tessellate in 3D space, it would have been great if they did. The picture of the sphere where you can see inside is quite misleading isn't it! Gnollrunner I'm playing with some options now, which includes some with prisms, seems I may be going down the same route you did :) Do you have any links related to what you did?

Yeah, I was doing the same kind of problem (I started with an octohedron, but...) and found the same problem. I don't have my notes at the moment, but I seem to remember splitting lengths into three (or maybe four?) rather than two and thus getting a vertex in the center, which IIRC solved it. Maybe you can experiment along those lines, I'd love to know what you end up with in either case!

Share this comment


Link to comment

You could consider an more complex cube->sphere thingy, similar to the results a hexahedral meshing algorithm would produce, see this image on the left. The only advancement is that the interior does not tesselate to infinity, if you want destruction of whole planets for example. Increasing scale issue on the surface remains the same.

 1-s2.0-S0378475414000871-gr14.jpg

Share this comment


Link to comment
5 hours ago, JoeJ said:

You could consider an more complex cube->sphere thingy, similar to the results a hexahedral meshing algorithm would produce, see this image on the left. The only advancement is that the interior does not tesselate to infinity, if you want destruction of whole planets for example. Increasing scale issue on the surface remains the same.

 1-s2.0-S0378475414000871-gr14.jpg

The first one looks similar to what I'm doing, except you start out with a cube so you end up with hexahedrons instead of prisms. In my case I won't have destruction of whole planets (no Death Star in my game :P) so I don't worry about the middle. You can easily use marching cubs, surface nets etc with this, but you sill have the same issues of LOD transition, chunking and so forth which in my experience is the hardest part.

I think if I wanted to support full destruction I might be tempted to just forget about tying the make voxel orientation uniform around the world and just build everything with regular matrix.

Share this comment


Link to comment
JoeJ

Posted (edited)

Thinking of it my proposal is pretty stupid - using a simple subdividing cube grid projected to sphere has the same advantages at the core and the same number of singularities at the surface. (Ooops :) )

 

Edit: But there may be advantages to support Minecraft alike building eventually? Not sure - my world looks flat if i look outside the window and i'm happy with that :)

Edited by JoeJ

Share this comment


Link to comment

Just got a look at my old handwritten notes (dear lord in heaven....). I completely forgot that I started experimenting on something you miiiight have a use for. Basically, treating existing objects as point clouds and converting anything near the player to visible graphics via a standard marching cubes algorithm. If there are a lot of gold points in a section, that section is depicted as a gold thingie, and so on.

Just a thought. I'll go into my padded cell now and count the silence.....

Share this comment


Link to comment

as far as topology goes one method I've found that looks sort of neat is as follows:

1. create a random line (for sphere, hemisphere), random side of the line raise +1, other side of line -1.
2. repeat procecess until desired shape is achieved. (100-1000+)

 Problem with this though is that sometimes it leads to really unround, lopsided planets sometimes. Other than that it can look pretty dynamic. I did not come up with this idea, though, and I don't remember where I got it. Also may need to smooth or scale.

Edited by h8CplusplusGuru

Share this comment


Link to comment
4 hours ago, h8CplusplusGuru said:

that looks like it exactly 😃

I implemented this years ago. The main problem I have with it is, it doesn't easily let you just generate local terrain at one point on the planet.  While it's procedural, you end up having to store everything rather than just keeping the stuff you need that's around the camera.  For me simplex noise works a lot better since you can easily throw away and regenerate local data as needed to whatever level you want, and also you can customize your functions locally in infinite ways. 

I suppose you could use it as a base function for which you store your terrain at a predetermined level and then apply simplex-nose stuff on top of it to fill in the details.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By White_crow
      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.
    • By White_crow
      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.
    • By alessand
      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.
       
    • By tanglopho
      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?
       
    • By Scouting Ninja
      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. 
       
×

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!