Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Grand Strategy Axioms|Making Culture Concrete: What is culture, why is it important, and how can we make it concrete and meaningful in a strategy or simulation game?

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
Is axioms the new prosper
No because I could never earn the glory of my own containment forum. Also I have been posting here since 2011 and talking about game development since 2012 so you can hardly call me new.

Also my game design is better and makes sense and provides something people at least theoretically want to buy and play.
 

barker_s

Cipher
Patron
Joined
Mar 1, 2007
Messages
807
Location
Poland
Codex 2016 - The Age of Grimoire Grab the Codex by the pussy RPG Wokedex Strap Yourselves In Codex Year of the Donut
I enjoy reading your posts Axioms, regardless of how far-fetched they sound on paper.

If I may have a request, as a fellow hobbyist game dev I'm also interested in the more technical details of your work. Having so many interconnected systems, you probably have some clever architecture managing it. How do your systems communicate? How do you handle modifiers/effects/triggers while also avoiding tight coupling? Please dedicate some of the posts to the coding nitty-gritty.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
I enjoy reading your posts Axioms, regardless of how far-fetched they sound on paper.

If I may have a request, as a fellow hobbyist game dev I'm also interested in the more technical details of your work. Having so many interconnected systems, you probably have some clever architecture managing it. How do your systems communicate? How do you handle modifiers/effects/triggers while also avoiding tight coupling? Please dedicate some of the posts to the coding nitty-gritty.

I always get this claim of being unbelievable or some related term. This never makes sense to me because for all practical purposes these mechanics are individually simple. Outside of the AI there is nothing difficult going on. It is almost all about flexibility.

I guess I'll give an example of the vassal mechanics. So a typical game has one type of vassal. This vassal type has to have most of the mechanics of a more flexible system like tribute/taxes, some military value, and so forth. So aside from the interface as code to choose vassal interactions you actually aren't increasing complexity very much, again outside of the AI. CK3 added individual vassal contracts, almost 7 years after I discussed them on my old blog and wiki for Axioms before my long break, if even Paradox can do it you know it was a failure of imagination and not technical capacity. Axioms still has a deeper vassal system than Paradox, but this mostly involves more granular interactions and a more serious survey of history. Programming wise my interactions are broken up so they are actually simpler rather than more complex.

In fact in Axioms the only thing that distinguishes "vassals" from any other diplomatic relation is a single variable and the user interface display of that variable. This allows for the implementation of a system substantially similar to the Roman Socii. The Socii system was relatively unique in history.

The way this worked was that on conquest the Romans would annex a small amount of land for a "colony", where Roman and other "Latin" colonists would live, these gave up citizenship in the city of Rome if they had it or their city of origin, in order to be citizens of this new colonial polity. These confederates would sign a treaty, of the type styled foedus, where they would be totally sovereign domestically but Roman foreign policy was their foreign policy and they were required to provide a levy for Roman wars, and the Romans were at war continuously for 98% of the ~5 centuries of the Republic, of a certain specified number of troops. There was no tribute. No fancy feudal marriages or obligations.

What Creative Assembly and companies like Paradox used to do 10 years ago was hardcode vassal types in a very rigid way. To borrow from your post the mechanics were tighly coupled. So functionally a large portion of what I am doing is sort of Object Oriented Design. Of course I only call it that because of the context of your post there is actual non-code design terminology for that. For the user interface and for the data structures the interface presents to the player what this means is that you really aren't doing that much work for the gains you are getting.

So to get back the the Socii example there was a rigid design distinction between "vassals" and "allies" with distinct code, interfaces, and other stuff like that. This meant more work to design a simple mechanic, more "tight coupling" in the data, code that was confusing for new developers, and adding a new feature required more work and at best you'd be copy pasting rathering than truly "re-using" existing code although often you wouldn't even be doing that.

In fact classical writers discuss the idea that the Roman Socii were actually vassals but the Romans and the Socii themselves wrapped the system in a thin narrative of "alliance" and "equality" because that made the Socii feel good about themselves and for the Romans those feelings reduced friction and the chance of revolts. Eventually of course the "Socii" started the "Social War". -AL is a Latin suffix that means "pertaining to" and thus the Social War is the "war pertaining to the Socii" or in pure English translation "the war pertaining to the allies".

Because my design is just implementing "loose coupling" in the meta-relationships of the data and mechanics you get most of the benefits while actually improving the code. Similarly by having flexible loosely coupled mechanics you have a framework to which you can attach a new mechanic very easily.

If you do indeed read my posts, and by posts you mean the +99 crit damage walls of text on my Substack you would have read the inagural post in the Esoteric Arcana series about Divination. This is a fantastic example of the benefits of my high level design choices. I can implement "prophecies" and even common "scrying" with practically no effort, mostly just some new user interface panels, because what is happening at the programming level is that "scrying" just applies an arbitraty level node of the "Intelligence Network" system to a province. It would be difficult to implement meaningful "scrying" in the common fantasy novel sense if one was already giving the player perfect information on every province, character, and population in the whole world. That is why the mechanic, if a game can figure out an implementation at all, is usually something like the spells in Dominions(no relation) 3-5 that disocver appropriately aspected "magic sites". Similarly in the same game series "divination" themed magic simply modifies the frequency and positive or negative value of scripted random events. My Divination magic, which covers all the classical forms, doesn't require anything meaningful code wise at all.

Additionally as far as the general claim of my design being implausible I suggest people consider that back in 2013-2014 I posted here and on my wiki and blog about mechanics which people had the same comments about and which are now, shittily to be fair, major mechanics in Paradox games. Secrets in CK3 is a subsection of something I posted about in 2014. Stellaris implemented something substantially similar to my "Intelligence Network" idea in 2021. CK3 also implemented a version of individual vassal contracts. There are some other things I believe. Royal Court implemented a frankensteinian Paradoxian amalgam of several of my systems in their new Culture system. Not that they copied me but just that the mechanics are substantially similar. Field Of Glory Empires implemented the Empire Age decadence system and a few other things similar to ideas I discussed here and elsewhere. I think this is pretty good evidence that the other things I am planning for Axioms are perfectly doable. It is just a matter of imagination, proper understanding of political concepts, and willingness to do something without an ironclad assurance that their is an audience. Game design conservatism is partially a limitation of the imagination and understanding of developers but I'd argue that it is something like 45-55 that and publisher conservatism respectively.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
I enjoy reading your posts Axioms, regardless of how far-fetched they sound on paper.

If I may have a request, as a fellow hobbyist game dev I'm also interested in the more technical details of your work. Having so many interconnected systems, you probably have some clever architecture managing it. How do your systems communicate? How do you handle modifiers/effects/triggers while also avoiding tight coupling? Please dedicate some of the posts to the coding nitty-gritty.

While my previous post contained some level of mechanical detail, particularly regarding the implementation of divination, it was mostly a high level conceptual post. I can say that in fact my architecture is currently not super clever. It is well designed in some areas but pending the completion of significantly more data structure programming I am overloading the WorldManager class, basically the top level connective tissue and some other stuff, with a lot of data storage and processing that I expect to eventually refactor into more focused high level classes. Of course seeing as I am a solo dev the purity of my architecture is less relevant than it would be otherwise. But basically anything I need to add for some mechanic or system where the proper section of code hasn't been implemented just gets shoved into WorldManager. It has a lot of std::vectors I expect to move to a more appropriate area of the program as more of the top level data classes are added.

I have some difficulty addressing your questions because they are somewhat non-specific and also because I don't believe my design *requires* anything fancy or complex. At least not until I get to the final stage of the project which is fleshing out the bones of the AI.

A strategy game program has basically 4 parts. Data structures, "work performing functions", AI, and UI.

The UI I think is somewhat serparated from the other code. Especially if you have a proper set of "descriptive methods" implemented in your data classes. I am planning to do some clever things with the UI. A key issue with 4x games is data visualization. In most cases due to the lack of capability among developers a spreadsheet is really the most effective thing to do for the vast amount of data and math these games tend to involve. Paradox and other companies use various "map modes", even all the way back to Civilization, but most of these to me are not incredibly helpful. At best they make for cool screenshots in an AAR. This has to wait mostly till the end of the development process.

The AI is easily the most difficult section but to some degree it can, and is in the majority of existing strategy games, be left unperfected. Paradox AI is famously shit and in fact the design of the games at least unintentionally covers up for this. Do the players really care? No. This is also perhaps a reason Paradox specifically does not implement interesting diplomacy, intrigue, and politics. Because the AI can't even play the game as it is. Plus the top level suits in the company seem to be of the "multiplayer meta subsumes these systems anyways so why bother" school of strategy design.

The nature of strategy games means that I am mostly leaving the fancy AI stuff till last when the actual mechanics are fully filled in. So I can't really comment on that in regard to your question.

My design posts really cover the issue of data structures pretty effectively I think. I have a lot of low level granular data that combines into the more interesting aspects of the game. This applies to the AI as well. Each game entity stores a pile of data in the Opinion system and the associated attributes of Honor, Trust, Respect, and Fear. This is necessary so that the AI can react properly. I would say Paradox as a developer has the most detailed AI data structures but even they are quite insufficient both for the AI being smart and for it being narratively interesting. Many games paper over this, as the famous SMAC does, with graphical sugar as well as a shallow "personality" based on scripted voice lines. SMAC leaders "feel" real in some sense but they are like a set of clothes with no person inside.

The "work performing functions" aren't really anything special either. They aggregate the appropriate information from data structures and perform mathematical evaluations and return a result. It really all comes down to what information you have in your data structures for the simulation to act on.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
God hates me. Well he isn't real but, still. Trying to write a function to check how many provinces are "between" 2 provinces. Cause characters have a lot of decision making that references how far other characters are from them. I already have adjacency stored per province. Easy right? No. Because fuck me... The "center" of provinces is not quite central so it sometimes gives a different result than a naive look at the map. Also I haven't thought about pathfinding like 8 years. So this is the most basic bitch algorithm ever.

Take the "center" of the provinces of the liege and vassal. Check if they are the same. Check if they are adjacent. If not pick the closest adjacent province and add to route. Check center of new waypoint vs target province. Repeat this till you get there. Totally works but the route is weird as fuck.

Gonna try to combine the distance from the start province to the potential bridge province to the end province. For a target 2 provinces away from start. What a pain.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
Got a lot of work done yesterday on Characters/Families. spawning a variety of relatives and stuff. Added spouses and potential for children so that the player and NPCs have marriage options and stuff like that. Functional early tribal phase gameplay should be possible the last week of this month. Then I just gotta start layering on the more complex stuff.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
So I haven't posted in about two weeks. Mostly cause I don't really devote time to blog posts and only work on actual programming. Did a bunch of UI fixes, moved from text buttons to picture buttons, rewrote a bunch of the Supply class for Units, which is the subdivision of Army but also used in Espionage and Exploration.

I also did a bunch of work that is described in the comments of the previously linked reddit post.

Also I did the much harder task of getting populations and creatures/animals to consume their supplies properly. This is actually kinda complicated. Stupid math and nested loops.

For a little while due to personal troubles I thought I might not get a core gameplay/pre-alpha video out by the end of the month but then I had a really good day and so I'm back on schedule.
 
Joined
Dec 24, 2018
Messages
1,788
You should post screenshots. I get that you don't have good art assets presently (though the ones you have are perfectly serviceable placeholders), but most people would much rather see some actual screenshots, even with placeholder assets, than just hear stuff described.
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
You should post screenshots. I get that you don't have good art assets presently (though the ones you have are perfectly serviceable placeholders), but most people would much rather see some actual screenshots, even with placeholder assets, than just hear stuff described.

I still don't understand what people expect to see in screenshots. It is a turn based map game.

https://imgur.com/X7YKpE7

Like an image can't tell you anything if you don't know what stuff is. The final UI will be relatively easy to understand but the simple dev version is optimized to tell me stuff is working right with the least code/effort possible.
 

thesheeep

Arcane
Patron
Joined
Mar 16, 2007
Messages
9,956
Location
Tampere, Finland
Codex 2012 Strap Yourselves In Codex Year of the Donut Codex+ Now Streaming! Serpent in the Staglands Dead State Divinity: Original Sin Torment: Tides of Numenera Codex USB, 2014 Shadorwun: Hong Kong Divinity: Original Sin 2 BattleTech Bubbles In Memoria A Beautifully Desolate Campaign Pillars of Eternity 2: Deadfire Pathfinder: Kingmaker Steve gets a Kidney but I don't even get a tag. Pathfinder: Wrath I'm very into cock and ball torture I helped put crap in Monomyth
I still don't understand what people expect to see in screenshots. It is a turn based map game.

https://imgur.com/X7YKpE7

Like an image can't tell you anything if you don't know what stuff is.
Games are a visual medium.
A screenshot will always tell you more than any description would on its own (except for how stuff works under the hood, of course).

It is also much more pleasant and much quicker to look at than parsing paragraphs of text.

If anything CAN be shown with a screenshot, it is always better to do so.
Especially if it is UI you are talking about...

PS: Code::blocks?! Wow, that's a blast from the past! Mhhh, good memories.
 
Last edited:

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,516
I still don't understand what people expect to see in screenshots. It is a turn based map game.

https://imgur.com/X7YKpE7

Like an image can't tell you anything if you don't know what stuff is.
Games are a visual medium.
A screenshot will always tell you more than any description would on its own (except for how stuff works under the hood, of course).

It is also much more pleasant and much quicker to look at than parsing paragraphs of text.

If anything CAN be shown with a screenshot, it is always better to do so.
Especially if it is UI you are talking about...

PS: Code::blocks?! Wow, that's a blast from the past! Mhhh, good memories.

I had to upgrade from C::B 16 to 20 after I started the project again. Also TGUI 0.7 to 0.9.3 and some number of SFML updates as well. What a hassle. Oh and like 2 compiler updates from 5.x to 7.x. 7 whole years blech.

Screenshots are great for games with 3D or even 2D art assets as the core of the game. Probably why Paradox added all that new 3D garbage to their new games. To make marketing easier and impress normies.

A screenshot can barely tell you how the UI really works, you'd need a series of them, much less inform you about gameplay. Also the game is using the "dev ui" right now. Fancy UI features and UI theming will come at the end once it is settled.
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom