Transferring the AI to C++, testing it with GDExtensions. Its been a long road but the real time aspect has slowed down the AI significantly when dealing with critical battlefield failures.
Testing the real time system before plugging in the rest of the GUI. The migration to Godot 4.6 required full rewrites to so many systems. The map editor, the way data is structured, even a revision on the context menu which used to be a radial menu now a bottom anchored menu. Just testing the unit behaviour here, if units chase or stand ground or keep distance. Direct or fast movement, etc.
The last cold days of March with spring just around the corner. I have to admit Godot 4.6 has huge improvements from Godot 3.6 (and even later 4.0-4.2). Just trying out different systems to manage squads with unique upgrades without creating massive overhead.
Looking back at the dozens of prototypes, the handful of vertical slices and the one horizontal slice I've made on top of the various alphas I can say I've come a very long way from the basics to complex large-scale systems. Things I assumed were too complex and had to be problems to be worked around are now mere triviality. Tools have truly sped up every iteration, from tools such as a map editor and faction designer to simple scripts that align tiles and adjust JSONs.
November sunrise watching FarScape. Spent some time migrating to Godot 4.5 after figuring out how to use a half-offset square grid to display rhombus shaped cabinet oblique tiles. Some nice features that I unfortunately already wrote (localization being one) but due to the vulkan renderer I figured out how, with a few minor changes, to turn my project into a command real time strategy game with a 1 second delay. It actually works well.
Morning October mist from the forest. After a long week of interlock (where the vast majority of stones were 96lb) I think after mowing the lawn today I'll just spend time working on this game.
A nice overcast sky. After a long day of interlock, cutting down a tree, and replacing the kitchen garbage disposal I can finally sit down and work on the final version of the tile sets. All systems are good to go. 4 factions have their HTN/GOAP set up and working. Just need to make things look a little better, change colours, add different highlights due to the oblique cabinet projection. Spent time making sure the GUI anchors work so players can resize windowed mode as big and as long as they want. Watching someone play Cyberpunk 2077 new features. I will have to focus on the remaining 5 factions once I feel balance is locked in for the first 4.
Watching Charlie Jade, just started, focusing on making a pool for ambient audio players to pass to map tokens in the viewer. The moon is shinning directly through the centre of my monitors.
Watching some discussion on new Marine formations while creating micro test maps with various unit groups for faster balance iteration. Had to hack a quick script to allow for quick map token integration, just dump them on the board and run. Doubt I'll clean it up as its mostly used as a tool to test tactical pacing. Had to create a fake test faction that has all the units in it (and face them against each other), all rough and ugly but it works.
After finally hashing out the tough stuff (HTN/GOAP hybrid for the Strategic/Operational/Tactical AI) time to do the BS jobs. GUI nonsense. For the first time I'm looking at Godot 3.6 Theme Editor. Didn't even realize it had this. Here I was making everything manually and bespoke....
Need to do both physical and project clean ups. Office needs a deep clean. The project.... there is so much unused code, old systems, old graphics, old units, data structures from old CSVs. Unused classes. I think I started this when Godot was 3.3 in 2021? Godot 3.6 is what I'm on (it's a mature engine, math, sprites, animations, audio, networking, serialization, memory management). Switched back to complete data driven. It just seemed easier, adding factions and units and abilities was just a small bit of logic and 2 connections.
Working on GUI (design), game balance, meta, HUD design. Best way not to overload information but have it accessible if needed. Quality of life stuff like snap-to buttons, allowing players to shuffle units in groups, so on. Programming isn't hard, I stand on the shoulders of giants and their white papers. Designing a balanced strategy game that is large scale, with tactical, operational and strategic layers (from casualty collection to air warfare) with factions that have unique base paradigms and economic models is the REAL challenge. I can't say I don't enjoy it.
Just working on things. Finally a normal multi-day snow winter. It's
been a while. In terms of development lots of refinement. My lack of
formal education in this always leaves gaps in certain algorithms that I
learn late which end up solving critical problems much more efficiently than the home-brew method I come up with. But such is life. Having
dynamic zones created and modified for the AI to properly label areas
helped a lot.
A New Year. A lot has happened. A lot of changes. Here I'm splitting 2 factions as they have so many units and such varied doctrine play styles they can literally make new factions out of those. After some play testing it might be appropriate to do so. Its been a productive year especially in higher level abstraction of major architectural systems. Finally have something of value with AI that can play to a certain degree, though it needs more refinement and tuning. Refined the combat a bit more, changed how units see through certain tiles for line-of-sight. I mean its an endless list of things really. Learned a lot...
Enjoying the fall weather. Lots of stuff. Did a bit of work on a multithread
manager (it can play on minimum 2 threads, one for the main to keep graphical
updates snappy while the other does all calculations/loading). Reading up on
'Information Set Monte Carlo Tree Search' to try to simulate a prediction
model, using Bayes' Theorem, on a higher abstracted level (instead of units checking each tile it looks at VP count, map control, tech level, units destroyed, spotted, force disposition, etc.). Worked a bit on the normal map for the
tile set to give it faux depth (though trying to illuminate it with shaders is a lot
harder than using a light source but a light source lags the game so I have to
figure out what to do about that, maybe just abandon it if I can't get a
system to work with shaders). What else? A few things everywhere basically.
Game AI Pro is a very helpful set of books (for free too, truly amazing). Hierarchical task networks, Monte Carlo tree search (on a high abstraction level; sectors held, tech level, army disposition,etc), goal oriented action plans for tactical unit-level engagements. Opponent modeling as opposed to relying too much on meta-data attached to the maps (though I don't think I can fully escape that). Using Godots Curve resource really helps ease creating utility graphs for some of the more fixed things (like focus firing vs enemy unit health; look for cover versus defending, etc.). I am now regretting the spaghetti code of behavior scripts I wrote earlier to test game features (basic build orders, aggression scripts, heal vs attack vs defend utility trees, heat maps, etc.)
Working on a decent 1 vs 1 computer-player that isn't reinforced learning. Even though DeepMind/DeepNash plays Stratego well, which is a game with an incomplete information environment, non-deterministic, and zero-sum, I do not have anywhere close to those resources to train a model on a 40k tile map with a large variety of units with complex/nuanced interactions on multiple layers. I've had to rely on behavior/trigger scripts, calculating utility, influence maps, threat matrices, meta-data attached to maps (choke points, connection networks, strategic terrain overlays etc.), tactical playbooks, operational templates, objective priorities, build orders/tech paths, resource management profiles, game state/game tree search, etc. etc. etc. to try to best simulate a good opponent. This requires datasets much larger than the actual game units/tile stats used to generate various data structures for game rules.
Posted this picture before, time of day in a rural farm area using simple modulation. Rough estimates for 3+ years is a meager 3,200 hours of actual work. Includes learning to use Godot, coding, art, experimentation and research. Same amount as working full-time on weekends towards a side project. I have to admit a lot of PhD students dissertations helped in the architecture of this game. This is a game I want to make as I've been hoping someone would make it since I was 16. There is something perverse that ruins a game when someone thinks of others (like launching to the public) so I've shifted to focus on what I was aiming for in this game. I no longer play games anymore.... if I have the time to do so I usually just end up working on this.
Production is going along. Watching someone longplay FF7 Rebirth (no commentary, as usual). Testing one of the factions creep seeping into the water. I've made this game 4 times now: first as a data-driven game, second as completely hierarchical OOP game, third modular and pseudo-ECS. Now it's a little of OOP for the intricate faction rules and viewer display, a little bit of ECS for unit interactions, a bit of data-driven for the map systems, model and peer-to-peer multiplayer, all glued together by a model-view-controller paradigm. Highly complex systems would be apt.
Got the air layer to look good while being able to see the ground layer slightly finally, it'll have to be smaller than the ground by a couple of tiles on the x and y but it at least looks appealing and one easily distinguish the difference between ground and air. I think the only thing remaining is figuring out a few shaders, finishing up 1 faction set of tiles properly, some more menus and certain global-level animations and that might be it for the graphic portion. I've seen it all, just listening to music I used to listen to 20 years ago (mp3 files with dates modified around that time).
Very productive month so far. Something about grey skies and the lighting specifically. I can work forever in lighting and weather like this Trying to figure out how to create a rules engine which can be fed a series of rules and actions so various AI scripts (for individual factions) can be abstracted and simplified to a higher order. Watching Jagged Alliance 2 v1.13 on YouTube.
Watching Dune (part 2), refining the tech tree for one of the factions. Working until the sunrises as light hits the top of the trees through horizon under the rain clouds. The more I abstract and systematize major aspects of the game the easier it becomes to write a new revision. Almost everything is modular (though a big chunk has a tremendous amount of spaghetti code). Because the way the enemy behavior (AI) scripts works, I have to finalize the unit roster before I can write more advanced scripts. Every time I pull a unit off from a faction (too overpowered, unnecessary, duplicate) I need to rewrite major segments of the AI such as how to value units relative to others and the specific hard/soft counters table. Almost 3 years solo developing..........
Shamefully slow production. Getting back into it, looking at where I left off on so many areas (from code to art to design to balance to system mechanic tuning). The final two factions have had their make over in terms of teching and base mechanics, more fleshed out and more engaging with actual stakes on the battlefield. So I'll aim to get the next build up to test that (against myself or my brother if he's willing to spare time).
As we get closer to spring it means time to do some spring cleaning soon. Possibly format all the computers again. Just backing up data. Very grey sky day (like the old Half Life 2 overcast sky box). Unusually warm.
Watching Harsh Realm, linking buttons to units, trying to smoke in the very cold office room. I honestly think I have over 15,000 graphical assets so far. Over 2000+ tiles, over 360 units all animated (each one roughly 16-24 frames for all actions; movement, attacking, death), I have 1600/2550 buttons created (right monitor), about 50 GUI menus (with their buttons and background separated, expanding it to 10-15 items each menu)..... all I can do is keep on grinding.
Working on Context Buttons (already over 200 buttons in 1 week of work). Went back to my trusty 15 year old Compaq Keyboard. I forgot how thick and large (and heavy) these monsters were. Oh also my 15+ year monitor died so it was replaced with one from my closet. Watching Desert Combat v0.7 mod for Battlefield 1942. Touched up on some old projects, I might revive them as a rotation. But overall excellent progress, the last asset hurdle is sound effects (which I have already experimented and devised a system) and music selection (which might require some remixing as well).
This game is coming along nicely, the complexity of modern warfare with the simplicity of pixel graphical presentation. I gotta say I learned a lot of programming paradigms, from model-view-controller to utility AI calculating actions. It's finally patting down to 360 units split into 6 unique factions (each with base paradigms so different from one another that they had to be manually coded in for their styles). Currently balancing out the tech tree for one of the factions while watching "Safe House"- 1998 with Patrick Stewart and Kimberly Williams-Paisley. The 90s were great. I should probably start focusing on creating sound effects......
Testing the new fog of war and destruction tiles and how they look. Reactivity to battles on a map is important in strategy games. The tile set has grown so big. Not only does it include normal and fog of war tiles (which looks better than a tilemap-on-tilemap fog of war) but also destruction tiles, flood tiles, damage tiles, and enough variation in tile types to create cities, towns, settlements, industrial zones, deserts, tundras, arctic, jungle, grassland, etc. etc. etc. Well over 2000 tiles if not more. I forgot how much I enjoyed art.
Watching someone play Fallout Tactics while I test a few export versions (changing icons for Windows is something else...). Thanks to other peoples hard work I have the ability now to export to
Windows and Linux for both normal and Steam distribution. I have many
more miles to go but it's rolling. Not much else I can do until results
and treatment are complete.
Testing naval units. Which somehow broke my game and won't let me be
able to screenshot in full-screen mode.... I also need to invest in a
laptop so I can continue working when forced away from my computer.
Bugs and more bugs. Need to be stomped out completely before moving to the next stage of assembly. ChatGPT 4 used to be great until the recent update which basically lobotomized it. Big difference is actually telling you about potential programming traps instead of just agreeing with you and writing really bad software. At least 2 months got some good progress on debugging and on tools development.
Working on some better tests maps (now with a destruction tile set for each tile!). Watching someone play Command and Conquer Generals Zero Hour. From time to time I play Neocron Classic (an MMO with 0 players) between work sessions slowly leveling a level 10 GenTank.
Spring cleaning, compressing out the computers, etc. I need to start to cut more things out of the game to make a reasonable launch which I can build upon. I think multiplayer will have to come much later as the AI systems alone are taking a significant amount of time. I tried Godot 4 and found it's tilemap to be wanting (has trouble making authentic oblique projections). So I can't take advantage of the network code of the newer engine and will have to muddle with v3.5.x. There is an upside, I won't have to rework my entire project.
Working on systems to allow for rapid balance patching (ie data files that hold unit stats). Also trying to figure out a system for multiplayer to check version numbers and some rudimentary anti-cheating. AI scripts have grown so large I need to make a system to manage them. Thank god for ChatGPT and it's explanations.
If I had another person working with me I'd probably be done but I guess all I can do is keep on grinding. One man doing sound, music, programming, scripting, art, animation, and design (on top of testing, debugging and soon publishing/marketing). Add to it day-to-day errands of life and it can be daunting at times.
Three factions 100% complete. One faction must be redone visually (too ugly) and another heavily modified (to fit a more modern less fantasy look). Three more factions to go....
Testing out two factions and various game play mechanics (fog of war, line-of-sight targeting, action-point system, etc.). First in-game screenshot. Note to self, add outline shaders to units. Keep black outlines for tiles to distinguish objects and flat floors. Internal lines should be an off-black brown or other darker (non-black) colour (with flat tiles always bright such as asphalt, grass, dirt, snow, rivers, etc.)
Finishing up all the surrounding menus that go around the main tactical map. With my health issues causing delays I'll be lucky to get a January 2023 launch. Though I'm hoping the drastic measures I've committed to over the last month will start to show results. I guess this will give me time to actually flush out the strategic, operational, and tactical AI for Computer matches.
Perfect lighting. Overcast grey sky in September. I need to make a Steam account and figure out the whole 'green lit' and Early Access features. Integrating the Steam API to Godot. I've been disconnected from the internet for so long.... at least my old programming skills still apply to a certain extent. Though I have to admit abusing the near limitless ram most computers have (for 2D games) is something I still can't get used to.
Reading the news, animating tiles, watching some dude walk around Tokyo in 4K. Polish and test. Polish and test. Trying to aim for a 2022 release at maximum CRUNCH!
Testing some initial menus and introductions (along with SFX and music). Inputting 'Unit Data' for all factions. Oblivion longplay (no commentary) playing in the background
Over hundreds of units across 6 unique factions with individual base paradigms. Currently setting up "Squad" unit types as infantry to function as a single unit while allowing complexity in combat. Watching Better Call Saul.