Thread: I'm Making A Game - PowerMonger Crossed With MegaLoMania (aka HariSeldon Learns Unity)

HariSeldon

Cat Tailor/Amateur Rapper
Platforms
  1. PC
  2. Nintendo
EDIT: I started out trying to do this in LibGDX and concluded that the 3D in LibGDX was a pain in the bum and the lack of quality documentation and limited dev community around LibGDX meant it was unwise to continue down that path. I picked Unity and am currently learning that. This thread will, for a while, be me learning Unity, and then it'll eventually get back to this game.


ORIGINAL POST
So I'm just starting a little project for a bit of fun and thought it might be nice to document the progress here and maybe share screenshots and thoughts about the process of making the game. It'll probably be a bit of a diary of sorts. I don't have any plans to release it commercially but who knows, if it ends up being not shit I might do so. You guys won't be paying for it though.

I want to make games for my son to enjoy when he's older, that capture some of the goodness I got to enjoy, but run on modern tech and with some modern quality of life stuff, without the arcane UIs, and without the modern horribleness of microtransactions and exploitative bollocks. I'm focused mostly on single player but have enough experience of online development to potentially have some multiplayer fun, though multiplayer does come with problems in terms of achieving my other goals (it tends to lead to nerfing things that might be fun in single player for instance). I won't be making plafformers or shooters since retro platformers are ten a penny and plenty of people can do a better job than me - better to serve some more under-served niches. One day I might tackle a more Microprosey flight simulator for instance, or maybe something in the mould of Damocles.

The Inspiration



Mega Lo Mania is a simpler tile-based approach to a strategy game, in theory real time, but actually moving time forwards in chunks. The management of your tiles with mining, inventions, etc is pretty decent, in my opinion far better than how PowerMonger handles it so I'm nicking that, plus I'll probably take some cues from its UI which is excellent. Each tile has a base on it if occupied, or it's empty. Putting your men on an empty tile will have them build a base there to claim that tile. Once back in the castle your men will breed if they're not busy inventing things or mining. The game had wonderful charm thanks to wonderful sprites and voice acting (ergonomically tewwific). You could form alliances with one or two of the three opponents if you wished, though an offer could be accepted or rejected.

A typical path to victory would involve building up manpower then inventing a defensive weapon to guard your territory, then an offensive weapon (likely moving you to the next period of history) and grabbing an empty square or two to build an unstoppable army before unleashing hell. Later games would involve nukes while early games were spears and rocks.

PowerMonger is a fairly simple RTS which used the same 3D engine for landscapes as Populous, and similarly had people as sprites walking around that world. Speed was horrific, but we were used to that back in the day, but we can't have that in <<current_year>>. It had some pretty cool features - each human on the landscape was a person with a name and a job, doing a specific task at that time, with an amount of loyalty and morale. You would roam around capturing towns, and if you encountered enemy troops that could lead to battle if your captain's aggression was high. Strategy was less important than I'd like because 'inventing' was so clunky in the villages. Where Mega Lo Mania handled it in a fairly clear and sensible way, PowerMonger did not, which limited your tactical options somewhat. UI in general is poor and I'll likely not nick too much of that. Alliances and trade exist though the poor UI meant that in practice they were rarely used.

A typical path to victory on a map would involve taking your army and invading a village on low aggression to leave plenty alive to recruit for your army, and doing this to as many villages as you can get away with (tackling the smallest first as you had few men) before mopping up any roaming armies with your now supersized army. Sometimes along the way you might invade a village and gain a 2nd (and 3rd, and 4th) captain allowing you to split your armies between them, but orders are sent by carrier pigeon which can be intercepted in flight. Captains indicate their view of your orders by how enthusiastically they respond.

So what's the plan?
I'm planning to nick the following bits:
- Powermonger's terrain
- Mega Lo Mania's base management for the villages
- Powermonger's named individuals with day to day routines
- Powermonger's battles on the move
- Mega Lo Mania's alliances
- Trade possibly nicked from somewhere else entirely - possibly Stronghold
- UI likely borrowing from Mega Lo Mania but with tweaks to be more modern
- Mega Lo Mania's eras
- PowerMonger's handling of captains (inc carrier pigeons for orders)

It's something I still need to flesh out a bit more but the first stage is doing some code experiments to see how much stuff I can get working and what the impact of that is on CPU, GPU, etc. The game will be in 3D as my sprite drawing skills are shit but a low poly 3D can still look cool even with fairly mediocre art skills. Music isn't a problem - I can handle that - and voice over work will be reasonably manageable I think.

I plan to do this in LibGDX rather than a more established engine like Unreal or Unity. The reason is I want something light and I know my way around Java reasonably well. This allows me to run on desktop (primary platform) but also to export for Android and iPhone. It's unlikely I'll bother with mobile however as that goes against my goals of creating something good for kids. For me Unity adds too much lag while using a FPS engine (Unreal) to do this seems overkill, and adds a hell of a lot of overhead for what should be a fairly simple game.

I've worked with LibGDX for 2D stuff and it has a good reputation for that, but I've not used it for 3D, so I'm using some of the guides at https://xoppa.github.io/blog/basic-3d-using-libgdx/ to wrap my head around that stuff, while I've found https://github.com/libgdx/libgdx/bl...com/badlogic/gdx/tests/g3d/HeightMapTest.java as a possible approach to landscaping (I'm also considering a fractal-based approach).

I'll flesh this all out a bit more later but thought I'd get some early thoughts down.
 
Last edited:
Never played Megalomania, but I LOVED Powermonger. Populus, but with interesting stuff to do. In the late 90s when I was playing all the shareware/pirated/open source games I could download, I fished out some disks from a friend's basement with the manual and asked if I could try to get it working. It did not work. For some reason the game's clock speed was way out of control running on a "modern" system, it ran too fast. This was before DOS-Box so I had to fiddle and tweak until the game ran correctly. Finally getting it to work felt great.
 
Excited to see this documented. Never played either Powermonger or Megalomania, but I loved Populous as a kid.

Looking forward to seeing more!
 
  • Hell Yeah!
Reactions: HariSeldon
Never played Megalomania, but I LOVED Powermonger. Populus, but with interesting stuff to do. In the late 90s when I was playing all the shareware/pirated/open source games I could download, I fished out some disks from a friend's basement with the manual and asked if I could try to get it working. It did not work. For some reason the game's clock speed was way out of control running on a "modern" system, it ran too fast. This was before DOS-Box so I had to fiddle and tweak until the game ran correctly. Finally getting it to work felt great.
Yeah the game is very tied to its frame rate unfortunately. This means you either have a frame rate of 1 frame per couple of seconds or the game runs so fast as to be unusable. That's one thing I plan to address - it's reasonably easy in LibGDX tbh to be able to work at any framerate (though I might limit it to 60 since this isn't a shooter that requires super responsive controls) and any resolution too - though I'll have to figure out scaling UI etc. It's one of the reasons I'm thinking 3D btw as obviously proper zoom etc (PowerMonger had zoom at set intervals) means you can run at any res reasonably comfortably, and vector graphics scale well too.
 
Also, this thread really makes me want to get back on my coding course. Kind of fell off of it because I lacked that motivation, also feel it's too late for a 30 something year old man to be aiming for a Full Stack job.
 
Also, this thread really makes me want to get back on my coding course. Kind of fell off of it because I lacked that motivation, also feel it's too late for a 30 something year old man to be aiming for a Full Stack job.
Bollocks is it too late. I was out of the industry for a while so when I came back aged 30 I was starting from scratch basically as so much had moved on without me. Took an entry level job, quickly got back up to speed and now earn very very good money 12 years later.
 
Bollocks is it too late. I was out of the industry for a while so when I came back aged 30 I was starting from scratch basically as so much had moved on without me. Took an entry level job, quickly got back up to speed and now earn very very good money 12 years later.
That's it then. That's the motivation for being a better person in 2023 right there.

Thank you, think I just needed someone to tell me I'm not washed out and over the hill 😂
 
So I'm just starting a little project for a bit of fun and thought it might be nice to document the progress here and maybe share screenshots and thoughts about the process of making the game. It'll probably be a bit of a diary of sorts. I don't have any plans to release it commercially but who knows, if it ends up being not shit I might do so. You guys won't be paying for it though.

I want to make games for my son to enjoy when he's older, that capture some of the goodness I got to enjoy, but run on modern tech and with some modern quality of life stuff, without the arcane UIs, and without the modern horribleness of microtransactions and exploitative bollocks. I'm focused mostly on single player but have enough experience of online development to potentially have some multiplayer fun, though multiplayer does come with problems in terms of achieving my other goals (it tends to lead to nerfing things that might be fun in single player for instance). I won't be making plafformers or shooters since retro platformers are ten a penny and plenty of people can do a better job than me - better to serve some more under-served niches. One day I might tackle a more Microprosey flight simulator for instance, or maybe something in the mould of Damocles.

The Inspiration



Mega Lo Mania is a simpler tile-based approach to a strategy game, in theory real time, but actually moving time forwards in chunks. The management of your tiles with mining, inventions, etc is pretty decent, in my opinion far better than how PowerMonger handles it so I'm nicking that, plus I'll probably take some cues from its UI which is excellent. Each tile has a base on it if occupied, or it's empty. Putting your men on an empty tile will have them build a base there to claim that tile. Once back in the castle your men will breed if they're not busy inventing things or mining. The game had wonderful charm thanks to wonderful sprites and voice acting (ergonomically tewwific). You could form alliances with one or two of the three opponents if you wished, though an offer could be accepted or rejected.

A typical path to victory would involve building up manpower then inventing a defensive weapon to guard your territory, then an offensive weapon (likely moving you to the next period of history) and grabbing an empty square or two to build an unstoppable army before unleashing hell. Later games would involve nukes while early games were spears and rocks.

PowerMonger is a fairly simple RTS which used the same 3D engine for landscapes as Populous, and similarly had people as sprites walking around that world. Speed was horrific, but we were used to that back in the day, but we can't have that in <<current_year>>. It had some pretty cool features - each human on the landscape was a person with a name and a job, doing a specific task at that time, with an amount of loyalty and morale. You would roam around capturing towns, and if you encountered enemy troops that could lead to battle if your captain's aggression was high. Strategy was less important than I'd like because 'inventing' was so clunky in the villages. Where Mega Lo Mania handled it in a fairly clear and sensible way, PowerMonger did not, which limited your tactical options somewhat. UI in general is poor and I'll likely not nick too much of that. Alliances and trade exist though the poor UI meant that in practice they were rarely used.

A typical path to victory on a map would involve taking your army and invading a village on low aggression to leave plenty alive to recruit for your army, and doing this to as many villages as you can get away with (tackling the smallest first as you had few men) before mopping up any roaming armies with your now supersized army. Sometimes along the way you might invade a village and gain a 2nd (and 3rd, and 4th) captain allowing you to split your armies between them, but orders are sent by carrier pigeon which can be intercepted in flight. Captains indicate their view of your orders by how enthusiastically they respond.

So what's the plan?
I'm planning to nick the following bits:
- Powermonger's terrain
- Mega Lo Mania's base management for the villages
- Powermonger's named individuals with day to day routines
- Powermonger's battles on the move
- Mega Lo Mania's alliances
- Trade possibly nicked from somewhere else entirely - possibly Stronghold
- UI likely borrowing from Mega Lo Mania but with tweaks to be more modern
- Mega Lo Mania's eras
- PowerMonger's handling of captains (inc carrier pigeons for orders)

It's something I still need to flesh out a bit more but the first stage is doing some code experiments to see how much stuff I can get working and what the impact of that is on CPU, GPU, etc. The game will be in 3D as my sprite drawing skills are shit but a low poly 3D can still look cool even with fairly mediocre art skills. Music isn't a problem - I can handle that - and voice over work will be reasonably manageable I think.

I plan to do this in LibGDX rather than a more established engine like Unreal or Unity. The reason is I want something light and I know my way around Java reasonably well. This allows me to run on desktop (primary platform) but also to export for Android and iPhone. It's unlikely I'll bother with mobile however as that goes against my goals of creating something good for kids. For me Unity adds too much lag while using a FPS engine (Unreal) to do this seems overkill, and adds a hell of a lot of overhead for what should be a fairly simple game.

I've worked with LibGDX for 2D stuff and it has a good reputation for that, but I've not used it for 3D, so I'm using some of the guides at https://xoppa.github.io/blog/basic-3d-using-libgdx/ to wrap my head around that stuff, while I've found https://github.com/libgdx/libgdx/bl...com/badlogic/gdx/tests/g3d/HeightMapTest.java as a possible approach to landscaping (I'm also considering a fractal-based approach).

I'll flesh this all out a bit more later but thought I'd get some early thoughts down.

Once I left Java behind, I've never wanted to look back. Frankly, I do everything in Javascript and think I would just make this game using Javascript as well. I just... I just wouldn't be able to bring myself to do anything with Java nowadays. I would sooner do it in .NET Core, for sure.
 
Once I left Java behind, I've never wanted to look back. Frankly, I do everything in Javascript and think I would just make this game using Javascript as well. I just... I just wouldn't be able to bring myself to do anything with Java nowadays. I would sooner do it in .NET Core, for sure.
Tbh I like Java. It's well-engineered and in general a joy to work with, and tends to encourage good secure development habits. After years of PHP it was an absolute wonder. With that said, the huge ecosystem around java is both a blessing and a curse, with the last couple of jobs requiring drinking goats blood and chanting incantations to make anything work, with no guarantee that it would consistently do so, which makes me wonder if .net might be a better approach.

Javascript can die in a fire though. Its approach to object oriented code is absolute dog shit, improved a bit in TypeScript, but really it's a pain in the arse, especially once you start dealing with the nightmare of NPM and dependency hell. For me and for this project, Java works, because I'm not having to deal with too much of the worst of Java, and the framework is nice and clean and gets out of the way. For sure I'd use C# any time as it's as lovely as Java, but that would also likely necessitate working in Windows which I don't absolutely love. All in all, this environment works for me.
 
  • Love
Reactions: Optimus
this sounds really cool. I'd like to be able to do something like this someday maybe After I learn C. I've got a good imagination so I can come up with something.
 
Tbh I like Java. It's well-engineered and in general a joy to work with, and tends to encourage good secure development habits. After years of PHP it was an absolute wonder. With that said, the huge ecosystem around java is both a blessing and a curse, with the last couple of jobs requiring drinking goats blood and chanting incantations to make anything work, with no guarantee that it would consistently do so, which makes me wonder if .net might be a better approach.

Javascript can die in a fire though. Its approach to object oriented code is absolute dog shit, improved a bit in TypeScript, but really it's a pain in the arse, especially once you start dealing with the nightmare of NPM and dependency hell. For me and for this project, Java works, because I'm not having to deal with too much of the worst of Java, and the framework is nice and clean and gets out of the way. For sure I'd use C# any time as it's as lovely as Java, but that would also likely necessitate working in Windows which I don't absolutely love. All in all, this environment works for me.
If you make the jump to .NET, I might want to become a contributor. ;)

And yes, Javascript should die in a fire. Just because I would be more comfortable using it over Java doesn't mean it's any good. Thankfully, I do everything in Typescript, but it still doesn't change the fact that it's all hobbled together with duct tape.
 
  • Strength
Reactions: HariSeldon
If you make the jump to .NET, I might want to become a contributor. ;)

And yes, Javascript should die in a fire. Just because I would be more comfortable using it over Java doesn't mean it's any good. Thankfully, I do everything in Typescript, but it still doesn't change the fact that it's all hobbled together with duct tape.
I've not done enough commercial .net (in fact I've done bugger all vs a decade of java and another in PHP but I've thankfully forgotten all that shite) so for a first go back writing games (last made a game in 1994) it's probably best I stick to something familiar, but perhaps for my next project I can give it a bit of consideration.

Glad you're not stuck with vanilla javascript, typescript does a decent job of papering over the cracks considering what it's working with. Agree though it's definitely a sticky tape situation. To be fair a lot of enterprise java isn't much better due to too many systems talking to each other in ill-defined ways in ridiculous configurations making for horrible dev environments.
 
Sometimes I wish I got into programming like I thought I wanted to, but even if I did I don't have the creativity to make an entire fucking game. I look forward to seeing how this goes, best of luck mate!
 
Sometimes I wish I got into programming like I thought I wanted to, but even if I did I don't have the creativity to make an entire fucking game. I look forward to seeing how this goes, best of luck mate!
Not sure I have it either but I figure it's worth a go and at least this thread will keep me honest. I've got a reasonable sketch of what I want to achieve, just figuring out the tech to drive it, which involves a fair bit of reading around. Progress won't be particularly fast - I've got an 8 month old baby and a wife who wants me to notice her, but I'll plug away at it.
 
OT but take her away for the weekend and fuck her lights out. Coke, Viagra a cock pump, whatever it takes. Just plow that shit. She gave birth to your child, it's time to man up and do your duty. Seriously, before it's too late.
 
Not sure I have it either but I figure it's worth a go and at least this thread will keep me honest. I've got a reasonable sketch of what I want to achieve, just figuring out the tech to drive it, which involves a fair bit of reading around. Progress won't be particularly fast - I've got an 8 month old baby and a wife who wants me to notice her, but I'll plug away at it.
I'm still getting over you having the idea of building your own forum software. You do love a big project, don't you?
 
  • Funny
Reactions: HariSeldon
I'm still getting over you having the idea of building your own forum software. You do love a big project, don't you?
Tbh I've built bigger things. Btw I'd classify this game as quite a small project really. The 3D engine is a bit of work though LibGDX does a fair amount of heavy lifting for me, but the game logic isn't too bad.
 
  • Like
Reactions: Soodanim
Since you are a clever guy and into retro stuff as well, have you ever considered going with assembly for an old platform like the Amiga or ST?

It's a fun scene, and if your game is decent, you might even sell a good amount more than if you dump it into the endless pit that is steam.
 
Since you are a clever guy and into retro stuff as well, have you ever considered going with assembly for an old platform like the Amiga or ST?

It's a fun scene, and if your game is decent, you might even sell a good amount more than if you dump it into the endless pit that is steam.
Tbh Assembly is a bit beyond my skill level - in terms of alternatives on the Amiga these days people are getting a lot out of Amos but STOS was never quite as powerful (I used it in the 90s and it was very cool but lacked performance).
To get anything like acceptable performance I'd have to drop the 3D and go 2D, which means either top down and lose things like advantage to archers from height or go isometric which would be complicated. The bigger problem however is that frankly my artwork wouldn't be good enough. I've picked a low poly 3D style as a bit of a fig leaf for that (one has to adapt a project to the limitations of not just the hardware but the human after all).
I agree if it was good it's likely it'd make more on 16 bit than steam, especially as on the Amiga these days it's mostly shooters and performers on the Scorpion engine, but it also loses some accessibility in addition to those issues mentioned above. As it is my expectations are that it'll make £0.00 and that's fine, it's a project for fun.
 
Last edited:
Tbh Assembly is a bit beyond my skill level - in terms of alternatives on the Amiga these days people are getting a lot out of Amos but STOS was never quite as powerful (I used it in the 90s and it was very cool but lacked performance).
To get anything like acceptable performance I'd have to drop the 3D and go 2D, which means either top down and lose things like advantage to archers from height or go isometric which would be complicated. The bigger problem however is that frankly my artwork wouldn't be good enough. I've picked a low poly 3D style as a bit of a fig leaf for that (one has to adapt a project to the limitations of not just the hardware but the human after all).
I agree if it was good it's likely it'd make more on 16 bit than steam, especially as on the Amiga these days it's mostly shooters and performers on the Scorpion engine, but it also loses some accessibility in addition to those issues mentioned above. As it is my expectations are that it'll make £0.00 and that's fine, it's a project for fun.
True, 3D is not that easy to run somewhat performant on these old systems.

On using ASM, for someone who can code like you it's really not that difficult. It just looks a bit intimidating at the beginning, but in the end it's just reading writing values from registers into memory and vice versa plus some "if then" program flow control logic that looks a bit different but does the same things like in all higher level languages.

Plus, the 68K is really nice to code for.
 
True, 3D is not that easy to run somewhat performant on these old systems.

On using ASM, for someone who can code like you it's really not that difficult. It just looks a bit intimidating at the beginning, but in the end it's just reading writing values from registers into memory and vice versa plus some "if then" program flow control logic that looks a bit different but does the same things like in all higher level languages.

Plus, the 68K is really nice to code for.
Yep. Some games did pretty well, Damocles for instance, but it did it by limiting the number of polys on screen at a time quite significantly, and that's only really possible in 1st person tbh. Re the 68k - I have enough on my plate without adding that to it!

Does this mean ChatRüm is delayed?
Never gonna happen. Tbh I binned it because honestly I don't think I want to deal with the drama and the more I looked at it the less I saw ways of making money out of it. So I'm just doing something for shits and giggles instead. Who knows, maybe this will be awesome, maybe it'll be shit, maybe it won't get finished, but I'm hoping this thread will help keep me honest.
 
Last edited:
Really loved Megalomania back in the day, in many ways it was ahead of it's time. Good luck with your project, I've made a few games with Godot (2D) that went really well, I learned a lot in the process. I am a java dev by nature and I'm sure it will work just fine for your game and libGDX is really solid, I wouldn't get too hung on what language and tools to use, all modern languages are fine for smaller projects like this.
Most of the time for my games I fight with the assets more than the actual language and logic anyway. Doesn't help that even stick-men elude me, consistent artwork is hard (for non-artists)
 
  • Strength
Reactions: HariSeldon
Really loved Megalomania back in the day, in many ways it was ahead of it's time. Good luck with your project, I've made a few games with Godot (2D) that went really well, I learned a lot in the process. I am a java dev by nature and I'm sure it will work just fine for your game and libGDX is really solid, I wouldn't get too hung on what language and tools to use, all modern languages are fine for smaller projects like this.
Most of the time for my games I fight with the assets more than the actual language and logic anyway. Doesn't help that even stick-men elude me, consistent artwork is hard (for non-artists)
Yeah Godot looks cool - I've had a little play with it before and quite liked it. There are some great tools out there. I quite liked Game Maker Studio, it reminded me of STOS and AMOS in a way, but the price of modules is a pain in the balls. Tbh I'm fairly non religious about development environments but went with what I know.
Obviously I'll be posting screenshots, videos, all that shit, but I'll probably also stick early alpha versions up for a bit of fun, really bare bones programmer art shit, to give people a chance to tell me how shit it is. Obviously only download if you trust me enough to not put a virus on your pc!
Agree btw art is hard. I'm a coder and my art skills are good for a programmer but realistically a drunk chimp could probably do better.
 
  • Funny
Reactions: Pr0cs
Yeah Godot looks cool - I've had a little play with it before and quite liked it. There are some great tools out there
I like how easy to use it is an how painless it is to get started, one simple exe, no configuration no licensing or other back-end shit. Just download a single exe and you can get started. The language (gdscript) is not terrible, it does have some oddities but nothing compared to some of the garbage I have to deal with on a day-to-day basis so I could work around it. There are a bazillion tutorials on how to do things too (youtube, discord, et al) which I found handy when learning (sprite chunking wasn't something I was familiar with but found a few great tutorials and modified it for my own purposes).

Obviously I'll be posting screenshots, videos, all that shit, but I'll probably also stick early alpha versions up for a bit of fun, really bare bones programmer art shit, to give people a chance to tell me how shit it is. Obviously only download if you trust me enough to not put a virus on your pc!
Very cool, keep us posted. I posed my shit on itch.io which was handy to get quick access to beta testers but keep us posted too as it's interesting to see how people tackle particular issues differently.

I attempted to reboot the old-school PD Amiga arcade port of Omega Race in Godot, you can find it here if you're bored:
 
  • Strength
Reactions: HariSeldon
I like how easy to use it is an how painless it is to get started, one simple exe, no configuration no licensing or other back-end shit. Just download a single exe and you can get started. The language (gdscript) is not terrible, it does have some oddities but nothing compared to some of the garbage I have to deal with on a day-to-day basis so I could work around it. There are a bazillion tutorials on how to do things too (youtube, discord, et al) which I found handy when learning (sprite chunking wasn't something I was familiar with but found a few great tutorials and modified it for my own purposes).


Very cool, keep us posted. I posed my shit on itch.io which was handy to get quick access to beta testers but keep us posted too as it's interesting to see how people tackle particular issues differently.

I attempted to reboot the old-school PD Amiga arcade port of Omega Race in Godot, you can find it here if you're bored:
Clearly a better artist than me, the visuals are lovely!
 
Clearly a better artist than me, the visuals are lovely!
Hah, you give me too much credit, the sprites are slightly modified open source ones that I updated to include normal maps so that the bullets would give them some sense of depth. I can't draw for shit.

I wanted to reboot Raid on Bungling bay and started researching BSPs to programatically generate different islands instead of the static ones that came with the original C64 game but I kind of gave up, mostly because I knew a lot of the art was going to be problematic and well beyond my shit-tier skills.
 
  • Brain
Reactions: HariSeldon
Thinking some more about how to get prototyping and production happening, and the general code structure. While the game is in 3D, the actual actions that take place are basically in 2D space. As such each entity exists in a place on a single 2D plane (the ground) and moves about on that. Even the planes and nukes that'll be flying through the air might be considered simply to be on a different z-tier within a standard 2D arrangement. The locations on the 2D plane may have properties to determine that they have height, and one can then cheat to determine advantage between entity on a hill vs entity in a valley by comparing their height and determining that the points on a straight line between them don't block the view. This allows me then to separate the game engine from the display engine such that the display engine is simply a rendering of what is happening in this 2D world.

Ok so what does that buy me? Well it means I can work with 2D programmer art and a top down view while I'm prototyping the game logic, and work separately on a 3D renderer which means I can divide my time more easily and continue reading up on 3D while still making progress with the game and avoid getting bogged down in the learning new shit.

I've also been thinking about how to handle ground rendering. So for a while I was thinking of doing something similar to Godus (absolutely shite game - Molyneux's worst - but the terrain does look cool) but decided against it in favour of something closer to the PowerMonger polygon approach. This allows me to not have to use Blender or some other bloody thing to make the terrain (though I'll still have to use it for characters and animation - doing the mo-cap for the spear chuckers is going to be fun). Instead, my terrain will be stored in simple text files.

Imagine for a moment the ground is divided into squares, the corners between each of the squares being a point with height. My text file will be a list of those points with properties like maybe height and biome, so it might look something like...

Code:
3-s 5-s 1-d -1-w
4-s 4-s 2-d -1-w
2-g 2-g 2-d -1-w

... so in the above example the first square is 3 units high with snow, the third is 1 unit high desert (which will double as beach), then we finish that line with water. One could potentially add other properties in similar ways to indicate the presence of trees, likelihood of animals living there, and so on. At the end of the file then list the locations, types, sizes and ownership of each settlement along with the mineral reserves to be found in them, and the number of humans in those locations. That ought to give enough information to generate the 3D model of the world programmatically, and populate it with settlements and people, with tasks to go about assigned fairly randomly at initial load.

Anyway, end of ramble, these are just some thoughts.
 
Currently working through some reading material around 3D rendering to upskill for this, but meantime I've been thinking over the game mechanics some more. As such this is clearly more PowerMonger than Mega Lo Mania, so I was thinking about some of the under-used mechanics of PowerMonger, and that led me to consider aggression levels.

Before going on I should explain how that works in PowerMonger. So you have 3 icons - 1 sword, 2 swords, 3 swords - that set your aggression level. That aggression level acts as a modifier for all actions. If you're taking food from a settlement, low aggression will take a quarter of the food, full aggression will take it all and middle aggression takes half. The same goes for recruiting from a settlement. If your aggression is high and you encounter anyone from the other side your men will kill them, even if civilian. Low aggression they'll ignore even other armies, unless provoked. When invading a settlement, minimum aggression leaves most villagers alive, while maximum aggression kills them all. Given that on conquering a village you can recruit the surviving men for your army and given the victory goal of having a high percentage of the total men on the map under your command or in settlements you own, there's no incentive to go aggressive other than the fact that it makes fights a bit harder. It turns the game into go to small settlement, raid, next smallest, raid, and so on until you get the biggest, which is fine, but it means the aggression really isn't doing a useful job.

So I started thinking about what it means to be aggressive. It led me down to thinking a bit about how Black And White responds to the way the player behaves and while I'm not as talented as any of the Bullfrog or Lionhead crews, I can certainly think about the directions they took. It seems to me that on maximum aggression you're basically going to go in and commit war crimes. In PowerMonger the world doesn't really react to that, but I started thinking about the notion of reputation. If you go to a village and raze it to the ground, word really should get out that you're a bad motherfucker. What impact can that have? Villagers will be shit scared and simply flee if they conclude you're a bad enough motherfucker, instead of fighting to defend their homes, and thus the enemy will have to station their army at defensive points. However, the soldiers themselves may well stiffen their resolve, believing themselves to be on the side of good against a truly evil force, so maybe battles vs soldiers get harder when you do that. It's something that'll require a bit of balancing - making battles more challenging on low aggression than they are in PowerMonger - and it's not an idea yet fully fleshed out in my head, but I believe there's the germ of an idea there.
 
Seems like you have some solid ideas there. I should probably play power monger since it's been many years since.
For me I always found that I'd get started on a project but get to the finer details, the minuta and then get bored because the project turned from a hobby to a chore, made worse by being a dev as my day job.
Start small, little pieces for key features then start pushing the pieces together. If you are still going to use Java at least you can unit test key features and ensure stability as you make progress
 
  • Brain
Reactions: HariSeldon
This could be a worthwhile series to keep tabs on.


Game Maker's Tool Kit has a bunch of great content and does really good deep-dives into types of mechanics and design principles.
There's an annual game jam that has picked up pace and is often a highlight of the year when the channel shows off entries with eye-catching mechanics.

Last year GMTK decided they were going to make a game themselves and they give somewhat regular updates on progress.
Whilst not a 1:1 overlap of your plans @HariSeldon, the broad strokes covered in these videos - including the process, trials and errors etc - may be of value.

For anyone with an interest in game design (and hidden gaming gems), the whole GMTK channel is worth a gander.
 
Cheers @Schrödinger's cat I'll have a look at that channel. I'm just watching...



... as that looked relevant to my interests. It makes a cogent point that I realised a while back - tutorials are literally the worst thing in the world. Really anything beyond how to get started is just not worth the time, and experimenting and figuring stuff out and getting stuck and reading around for solutions when you get stuck is the way to learn. When I made games as a kid in STOS there was no YouTube, no documentation, not even much in the way of tutorials in the magazine it came free with. I had to look at the example code, figure out what it was doing, and use that to try to experiment with stuff myself. And it worked. Today I'm a professional software developer because I developed that discipline.

Back to tutorials - in the world of LibGDX the big problem tends to be that they're all out of date - it seems there was a flurry of activity on this stuff a few years ago then everyone kinda stopped, which coincided with the LibGDX project going dark for a few years. They've got up and running again but a lot of the heat has gone, and while helpful the community that remains is not so good at documenting things in a way a newbie can understand. Like there's a method to create a rectangle on a 3D plane - it takes 5 Vector3 objects. A Vector3 is simply 3 numbers representing a position in space in X,Y,Z co-ordinates. The first four Vector3 objects represent each corner of the rectangle, while the 5th represents the normal. Ok but what the fuck is the normal and how is it represented by a Vector3? Nothing in the docs indicates that and nobody online can tell you.

Overall I'm beginning to think that while people have made 3D games in LibGDX, it may simply be the wrong tool for me to build 3D content in. A bit of me wonders if JMonkeyEngine might be more suitable - unfortunately there's not much out there for that. Two books on Packt (eugh) from 2013 and 2014. Resources on YouTube are a bit old and ratty too - it looks like a game engine whose time has been and gone, and while it may well be better than LibGDX, I do fear running down a blind alley. And so, I am beginning to conclude that I may have to simply bite the bullet and use Unity. I don't love the lag that comes with Unity but I do plan to stick to a simple style with flat shading to give that retro feel, which will help, and this is not a reflexes-driven game, which makes that slightly less of an issue. What Unity does have is a shit-tonne of support out there. It's widely used, lots of people in the community to ask including lots of people who know how to write documentation, so perhaps it's time for me to make the switch, because just generating terrain in LibGDX is proving an enormous ballache. I've roughly got an idea now of how to do it but honestly I think LibGDX has an arse-backwards retarded way of doing 3D so it's worth I think taking a sideways step to look at Unity and get comfortable with it. As a bonus it'll give me some time with C# which is really sexy. On the negative side I have to use fucking WIndows :(

EDIT: Turns out you can run Unity on Linux, thank fuck.
ANOTHER EDIT: Interesting that the approach taken by one of the LibGDX tools I was using, Ashley the Entity Manager) provides quite a useful bit of insight into the way Unity works.
 
Last edited:
Might also be an idea to look at Godot game engine, fully open source, can do 2D and 3D, easy to get up and running, supports a Python like scripting language and also a C# version.

Could be a good alternative to Unity. I was using Unity for a bit to mess with a 2D prototype but it just kept pissing me off and adding lots of bloat so I much prefer Godot.
 
  • Brain
  • 100%
Reactions: Pr0cs and Mirabilis
Might also be an idea to look at Godot game engine, fully open source, can do 2D and 3D, easy to get up and running, supports a Python like scripting language and also a C# version.

Could be a good alternative to Unity. I was using Unity for a bit to mess with a 2D prototype but it just kept pissing me off and adding lots of bloat so I much prefer Godot.
It's definitely something I considered but for now I'm thinking it's good to follow the herd. Similar to my experience in the world of java - I spent ages working on a project that had been built in Struts 2 which nobody uses. Now I'd gotten pretty good with it but if I had a problem I was on my own, google was nowhere near useful because nobody uses Struts. So I set about moving things to Spring as I wanted microservices etc to allow for more easy scaling etc - why did I choose Spring? Because everyone uses it. That means tonnes of support, it means high quality documentation, a tonne of books and tutorial videos on every aspect of its use and a wide pool of available employees (recruitment is a pain in the arse if you put Struts in the ad - nobody wants it).

My plan is to give Unity an honest try, spend some time initially experimenting with it and getting used to it by making some small things in 2D, then some small things in 3D, then get back to this project.
 
So I spent most of the weekend mucking about with code, and honestly had a great time with it (in-laws were here so it was a great excuse to check out). Must admit I've given Unity some shit over the years but one thing it really does do well is the focus on getting shit done quickly. Made a little flappy bird thing really quickly and easily - I'm going to do a few small experiments, likely the old favourites like Breakout, Llamatron, perhaps a quick and dirty platformer in 2D to get some of that sussed, then prototype my game in a very simple 2D engine, before I think about anything like generating landscapes etc. Will do this stuff just borrowing assets to keep the focus on code and gameplay and get some familiarity with the tools.
 
  • Like
Reactions: bork and regawdless
So I spent most of the weekend mucking about with code, and honestly had a great time with it (in-laws were here so it was a great excuse to check out). Must admit I've given Unity some shit over the years but one thing it really does do well is the focus on getting shit done quickly. Made a little flappy bird thing really quickly and easily - I'm going to do a few small experiments, likely the old favourites like Breakout, Llamatron, perhaps a quick and dirty platformer in 2D to get some of that sussed, then prototype my game in a very simple 2D engine, before I think about anything like generating landscapes etc. Will do this stuff just borrowing assets to keep the focus on code and gameplay and get some familiarity with the tools.

When will you move to UE5 and use Lumen?