DemoProductions / shmup

3 stars 2 forks source link

Level and map generation #68

Open ghost opened 8 years ago

ghost commented 8 years ago

On each play through, a random graph of levels is created. The 8th map will always end with the same boss, but not necessarily with the same waves of enemies

The 'environment' of that level will determine the type of boss that will be on that level. And the type of boss that is on that level will influence the types of enemies. ex: one boss may rely on an asteroid field

Graph of levels needs to have some sort of balance, ex: one type of boss played for 7 levels straight

Side levels or quests to be discussed further

Completion of certain levels or quests will unlock more things to be discussed further

ghost commented 8 years ago

69

flip40 commented 8 years ago

Why close this for #69? I think we should still do this, even though the actual level generation might all be contained within a LevelController or in part by a WaveController (if we separate those). I like a lot of these ideas, the Wave stuff just makes it easier to manage each wave and also randomize waves so each level is not an exact copy each time you play it. It could still be themed though, and at the very least should be done for difficulty reasons (level 8 should have new more difficult enemies than level 1, for instance).

Thoughts?

ghost commented 8 years ago

Reopening (not sure why I closed this)

With regards to level generation in LevelController, I'm imagining it like this: -For each level node, assign an environment/biome. Depending on the environment/biome, assign a boss, Depending on the boss, select enemy wave types.

Or we can disregard the environment/biome for each level node idea and just focus on increasing the difficulty on each level and randomizing (but making sure boss selection is at least somewhat balanced) the enemy wave types, like in The Binding of Isaac.

For balancing the bosses, can have some list containing the boss and the count (for each time they were played). Randomly select from this list for each boss battle. If the count gets to 3 or something like that, remove the node from the list.

What type of side levels/quests do you think we can have? Different types: Enemy waves only, Enemy waves with boss battle, dangerous asteroid field

flip40 commented 8 years ago

I think the main goal should be to balance bosses / waves by level. Within that though we can still add randomization of biomes and bosses. I'll consider that in making the level objects in LevelController for organization... Perhaps I should be organizing it by biome (level "feel") and have each of those have subsections for difficulty... so a "normal" biome would also have level1 waves, level2 waves... etc. such that that biome could be easily adjusted based on its position in the graph.

We could vary the side quests / levels a bit I think. All your suggestions sound fine to me, though I think in keeping with the nature of the normal game, if a side level makes forward progress on the graph then it should have a boss (to make it not be an easier way to progress than a normal level... also possible issues with reward differences for boss vs no boss).

flip40 commented 8 years ago

A problem that just occurred to me... (might make this a bug issue but this seems like the appropriate topic to discuss it for now).

Currently Levels are defined in LevelController... This is generally OK however, what implications does this have for generating a map of levels (mainly looking at the issue of this happening in another scene)?

A possible solution (though we should test this) is to simply have LevelController also be a part of the menu scene (or at least, map selection, depending on how / if we chop that up). Because LevelController is serialized, the list of levels will be present in both scenes, and therefore can be accessed by another script to generate the map (or perhaps we should even just have this be part of the LevelController script? We will have to adjust it to take note of what scene it is in, but that is not difficult http://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html).

What do you think about this issue? Would it make sense to just bundle the level map generation into LevelController and have it a part of whatever menu scene we have for that as well as the in game scene?