Okay, so I've been hard at work on some new systems for my game.
I have been working on level generation. I got the old system working. It created random levels (all from an array), would spawn enemies and objects, and so on, but it had some limitations. One was performance. I had to be very careful not to push it too hard. I keep having to tone down certain settings such as how fast fog of war can disappear or how fast the z-order sorting worked. On my system, it worked okay, but I keep fearing it may be bad on lesser systems.
The new method of level generation I created, basically is made by hand. I set up a grid and created a system where I could quickly place objects in place on the grid. I can copy and paste for multiple iterations (such as multiple walls, floor tiles, etc.). I can easily place objects and create my own layouts. So, I have complete control over where everything goes. Now, it won't be as random as the previous system, but I can make as many variations as I want, so I don't think it will matter. I mean, with like 50 different possible layouts, I doubt anyone will really notice.
Creating levels like this brings several advantages:
1. I get a decent performance boost. There will be less objects and less going on that needs cpu power.
2. I get full control to make my own levels. I can make the more like real rooms and hallways.
3. I can add doors or other room objects such as pits or contraptions.
4. With functional doors, the rooms will feel more like a castle.
5. I can add in ladders/stairs for going down levels. Again, this means it will feel more like an actual structure.
6. If I choose not to show walls in the foreground, I can make the taller (like the door is taller).
The way the old system worked was you enter the portal and are transported to a different part of the castle. Since it was so random, I didn't know how to make functional doors since the next room would have to reflect the direction you came from. For example, you enter the top left door, you come out at the bottom of the next map near a door.
Now, there will be some limitations on the new system. I am most likely going to make doors jam/break behind you so you cannot go back. This means you cannot freely go from room to room, and you have to keep going forward. However, from a programming standpoint, I will not have to "save" a room layout or objects/enemies in that room. It will make things a lot easier to manage. That, and a map will not be needed with this type of design.
There will be a couple things missing:
1. I will probably not use fog of war. It was tricky to get right anyway, and used resources, so this is not all bad. It just means there's less exploration "in" levels and more "between" levels if that makes any sense.
2. Exploration will be a little less as I just mentioned. However, I think the castle will be more fun to traverse and make more sense from a structural standpoint.
I'm still working out the details, but I am most likely going to continue to use the new system. It just gives more control.
Here is a screenshot of some changes.
Notes for screenshot:
1. You will notice that I have changed the icons under the character portraits. I put an "A" or "M" on the icon to indicate auto attack or manual attack. I think it makes things more clear. The text under the portrait will also reflect this.
2. I have made some very quick doors. Ignore these graphics for now. It's just for me to see how they work.
3. I learned how to create shadow-catchers in Modo. The portal now casts shadows on the ground. So will the characters and whatnot.
4. I was able to make the chests more normal size now that I don't have walls blocking them.
5. I may black out the sides of the walls that stick out on the sides of the map.
6. I may make the floor have volume, so don't take any level graphics as being 'final.'
7. Ignore the spots with missing floor tiles. I did that on purpose to show that I can put them where ever.
8. I have changed the render mode to point sampling to prevent blurry objects when viewed full screen. The game runs in a window at 720p to save some resources and make use of smaller textures. Anyway, point sampling makes things a bit more pixelated, but prevents blurry images. I can put it back to linear sampling at any point.