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.

Vapourware Codexian Game Development Thread

Joined
Dec 24, 2018
Messages
1,898
Added cultures to the list of generator stencil options. Learned a bit more about how ImGui popups work and how to close them properly.
Adjusted the cartographer a bit to turn off tile borders and zone borders at certain distances. This was always planned but I didn't get around to it. It improves framerate and those don't need to be drawn when zoomed out (in fact, it looks bad if they are - better this way). I do note that my compute cull function seems to have a subtle logic error somewhere in it: for the most part it's fine but for objects that have multiple instances, if any instance is on the camera all are drawn. So for now that means labels aren't being culled. Low priority but it'll need to be dealt with eventually.

I did some experimentation with async loading for world assets and it mostly worked ok but did give me some Vulkan validation errors when loading finished since I tried to do it with minimal locking, just locking the cartographic layers and skipping them in the render cycle if locked, but - something clearly wasn't entirely right. It didn't cause visible problems, but still. I went back to single-threaded loading for now. I think if I want good async loading of things that have a presence on the renderer I need to look more carefully at the structure of data buffers and/or figure out a better sync point/mechanism for the threads.

I think next I will want to revise the editor brush a bit and add the capacity to paint "one tile", "all tiles in a zone" and "all tiles in [larger scope]" where larger scope could be a state, or a multi-zone region, etc. For now at least all tiles in a zone would be ideal to permit more rapid filling of contents (by the user) and possibly better performance.

Edit: Also, I discovered that I misunderstood the way swapchains work a bit and if I simply check if the window is minimized when drawing before doing ANYTHING Vulkan-related, I don't need to rebuild it. ImGui still needs to have its Render() called, though, and I also allow the Renderer's cartographic subsystem to do any needed mesh merges / object refreshes when Renderer::Draw() is called. Resizing is still on the menu. Of course, most AAA games don't allow free resizing (have to pick a preset in their menu), but IMO being able to just drag and resize a game's window is a mark of professionalism so I do want to support that eventually.
 
Last edited:

Tavernking

Don't believe his lies
Developer
Joined
Sep 1, 2017
Messages
1,264
Location
Australia
A greek city at night time. Almost 12 months in development now.
image-1 copy.png
 

Justinian

Arcane
Developer
Joined
Oct 21, 2022
Messages
292
Got a few bucks from taxes, broke down and bought 1 year membership for gamemaker 2. I don't want to use it, I hate the new interface, but the ability to play the game from a browser is too useful of a marketing tool to ignore. I don't want my next game to languish in obscurity like my first one. So I'll have to buckle down and just get used to the fucking thing.
 

LarryTyphoid

Scholar
Joined
Sep 16, 2021
Messages
2,233
I'm making it so my game assigns the dungeon's layout by reading XML output from Grid Cartographer. I'm still new to parsing text files, though, and accidentally made it so every empty tile gets completely ignored. That, and the fact that I have yet to properly rewrite how the walls are drawn from the player's position, turned the dungeon into an ever-shifting non-Euclidian hellscape:

 
Joined
Jan 9, 2011
Messages
2,823
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015 Codex 2016 - The Age of Grimoire Make the Codex Great Again! Grab the Codex by the pussy Insert Title Here RPG Wokedex Strap Yourselves In Codex Year of the Donut Codex+ Now Streaming! Enjoy the Revolution! Another revolution around the sun that is. Serpent in the Staglands Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 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. My team has the sexiest and deadliest waifus you can recruit. Pathfinder: Wrath I'm very into cock and ball torture I helped put crap in Monomyth
XML is structured. XML parsing is a solved problem. Get a proper XML parsing library instead of going through hell of writing one, especially if you're new.
 
Joined
Jan 9, 2011
Messages
2,823
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015 Codex 2016 - The Age of Grimoire Make the Codex Great Again! Grab the Codex by the pussy Insert Title Here RPG Wokedex Strap Yourselves In Codex Year of the Donut Codex+ Now Streaming! Enjoy the Revolution! Another revolution around the sun that is. Serpent in the Staglands Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 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. My team has the sexiest and deadliest waifus you can recruit. Pathfinder: Wrath I'm very into cock and ball torture I helped put crap in Monomyth
JSON is fine if you have control of the data, but LarryTyphoid is reading GC output. So he needs xml. I've used pugixml in a lot of projects, it's good.
 

zwanzig_zwoelf

Graverobber Foundation
Developer
Joined
Nov 21, 2015
Messages
3,178
Location
デゼニランド
JSON is fine if you have control of the data, but LarryTyphoid is reading GC output. So he needs xml. I've used pugixml in a lot of projects, it's good.
GC can also output JSON, which I generally find easier to work with.

That said, there's nothing wrong with using XML, but I agree that it's better to use a library for that since it can be messy.
 

beardalaxy

Educated
Joined
Jun 10, 2023
Messages
117
A greek city at night time. Almost 12 months in development now.
View attachment 38577
Very stylistic. It reminds me a lot of something... but I can't figure out what. Fallout, maybe?

I have done a bunch of stuff in my game. A few side quests and some NPCs mainly. Stuff I can't exactly show off in visual form, but I have been working a lot on them. Just continuing to chip away at it.
Here's something I can show off, though! I have implemented some color filters to help some people distinguish colors.

f0dbe00d2839f215.png


Unfortunately, with the tools/knowledge I have, I don't know how to saturate/desaturate individual color channels. Instead, it's just a color tint, essentially. It's nice, but not perfect, so I'd still recommend using something like the Windows colorblind filter if you have access to it, but I think it will still be useful for people who might be playing on Linux which doesn't have access to a great colorblind mode.

Tritanomaly is a particularly hard one to get right since I can only manipulate RGB and that kind of colorblindness suffers with Blue/Yellow. It also works a little bit differently than other types of colorblindness, so I'm just doing the best I can here. I added the Color/Contrast Boost modes as well as the Negative mode to cover any edge cases where people may REALLY need it for some reason. Or maybe someone just prefers how it looks with blown out colors or deeper contrast. I can't imagine you'd want to actually play the game in Negative mode, and I might tweak it a bit to be a little bit more pleasant to look at.

Fun fact, most games (kind of) get colorblind filters completely wrong. The idea is to push colors toward the visible spectrum that colorblind people can see, which will help them see the difference in colors easier. This works, but you aren't actually seeing accurate colors, just seeing colors as more distinct. This can lead to some really immersion-breaking moments like in the Call of Duty Modern Warfare remake where flipping on the Deuteranomaly setting turns flames pink and the night vision is so green I'm unable to see anything lol. There are also a lot of games that also just straight up simulate colorblindness due to a misunderstanding where a game engine might have a mode where you can see what a colorblind person would see, so that you can optimize your games around it. A lot of devs think that this is just actually a colorblind mode switch and include it in their games, not realizing that they are just making it worse for us lol.

Even a game like Forza Horizon 5, which won the Game Award for Most Accessible Game in the year it was released (because of that weird, completely unnecessary sign language mode), had a colorblind mode that wasn't helping colorblind people see the actual colors, either being a simulation or trying to push colors into their visible spectrum. Seeing this in video games really aggravates me these days, because I've played games with the Windows filter and know how things are SUPPOSED to look, so when I'm playing a game that's not like that it can be a little annoying.

A lot of people also see that Deuteranomaly, for instance, is green-weak, so they assume we have trouble seeing green. However, it's the opposite. The green cone in the eye is deficient, so the red cone takes on more green, resulting in seeing less red and more green in your vision. Colorblind glasses will strip out green because of this.

The BEST way to implement colorblind settings in your game, in my opinion, is by letting players just customize their own colors for important elements, like the HUD. I love it when you get stuff like Back4Blood that lets you change the color of practically everything gameplay-related because it means I can customize it to my own vision.

In case you want to put colorblind filters in your game, I'd look at the way the Windows colorblind filter affects the image and try to replicate that. In short, though, you can reference this loose guide to get things a little close. I'm sure it could get better with more specific tweaking, but everyone will also have slightly different vision:
  • Deuteranomaly: +10% Red, -10% Green.
  • Protanomaly: +10% Green, -10% Red.
  • Tritanomaly: +10% Green, -10% Blue.
 

zwanzig_zwoelf

Graverobber Foundation
Developer
Joined
Nov 21, 2015
Messages
3,178
Location
デゼニランド
Out now. Decided to surprise the players by releasing it 1 day early.


Congrats on the release! I’d like to buy it but my couch machine is still on Win7. Does it truly require Win10?

I think I answered you on Steam forums, but I'll repeat my answer here -- since I'm a solo dev and had to switch to Windows 10, I'm usually unable to test if the game works fine on Windows 7 in time for the release.

You can try the jam version as a demo to see if it works, since the commercial version is based on the same engine, but keep in mind that they are two different games at this point.
 

Justinian

Arcane
Developer
Joined
Oct 21, 2022
Messages
292
Out now. Decided to surprise the players by releasing it 1 day early.


Congrats on the release! I’d like to buy it but my couch machine is still on Win7. Does it truly require Win10?

I think I answered you on Steam forums, but I'll repeat my answer here -- since I'm a solo dev and had to switch to Windows 10, I'm usually unable to test if the game works fine on Windows 7 in time for the release.

You can try the jam version as a demo to see if it works, since the commercial version is based on the same engine, but keep in mind that they are two different games at this point.


Will have to wait until August to buy but good luck.
 

Ysaye

Arbiter
Joined
May 27, 2018
Messages
790
Location
Australia
Out now. Decided to surprise the players by releasing it 1 day early.


Purchased - congrats on another game finished. If you taking ideas for your next one, perhaps a Heart of Fantasy clone (ie. the original one with a limit on the number of turns) style game is next in order? :P
 

zwanzig_zwoelf

Graverobber Foundation
Developer
Joined
Nov 21, 2015
Messages
3,178
Location
デゼニランド
Out now. Decided to surprise the players by releasing it 1 day early.


Purchased - congrats on another game finished. If you taking ideas for your next one, perhaps a Heart of Fantasy clone (ie. the original one with a limit on the number of turns) style game is next in order? :P

It's something that I considered doing when I was sifting through ideas for my first game but decided to go with DGS for a variety of reasons.

Right now I'm interested in finishing Ringlorn Saga Gaiden and making something tiny along the way to grow my art skills.
 
Joined
Dec 24, 2018
Messages
1,898
While adding basic support for cities I ran into some maddening buffer alignment issues and eventually discovered that glsl has some different struct packing rules from C++; namely, a 32-bit unsigned integer, which takes up 4 bytes, actually causes the addition of 16, and not 4, bytes to the stride of the struct it's part of. I could tell pretty much immediately by the symptoms I was seeing (most objects being positioned incorrectly, which told me the object data buffer wasn't being filled properly), but I thought the problem surely had to be on the CPU side and spent a very long time hunting through my renderer with a fine-toothed comb.
Big shout-out to RenderDoc for helping me discover the real cause; RenderDoc shows the exact stride (CLion only showed me stride for C++ objects; GLSL support is poor). Unfortunately during troubleshooting I had rolled back basically everything I did regarding cities, so I have to redo all that, probably some other day.
 

zwanzig_zwoelf

Graverobber Foundation
Developer
Joined
Nov 21, 2015
Messages
3,178
Location
デゼニランド
zwanzig_zwoelf I saw your game on the front page of Steam. Did you do any marketing? How did your game sell so well on the first day?
Nice.

I only shitposted about it on social media and here. It caught the attention of Game*Spark and a few other outlets, and a few old fans hopped on as well.

TBQH I didn't expect any kind of coverage since it's a small, laser-focused experiment by design, so I'm as surprised as you are.
 
Joined
Jan 9, 2011
Messages
2,823
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015 Codex 2016 - The Age of Grimoire Make the Codex Great Again! Grab the Codex by the pussy Insert Title Here RPG Wokedex Strap Yourselves In Codex Year of the Donut Codex+ Now Streaming! Enjoy the Revolution! Another revolution around the sun that is. Serpent in the Staglands Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 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. My team has the sexiest and deadliest waifus you can recruit. Pathfinder: Wrath I'm very into cock and ball torture I helped put crap in Monomyth
While adding basic support for cities I ran into some maddening buffer alignment issues and eventually discovered that glsl has some different struct packing rules from C++; namely, a 32-bit unsigned integer, which takes up 4 bytes, actually causes the addition of 16, and not 4, bytes to the stride of the struct it's part of. I could tell pretty much immediately by the symptoms I was seeing (most objects being positioned incorrectly, which told me the object data buffer wasn't being filled properly), but I thought the problem surely had to be on the CPU side and spent a very long time hunting through my renderer with a fine-toothed comb.
__attribute__((packed)) in gcc, https://en.cppreference.com/w/cpp/language/attributes for the rest. C++ standard allows compilers to insert any padding they want into non-packed structures for alignment purposes, and it can differ between compiler vendors and even versions, causing binary incompatibility. Joys of not having a C++ ABI.

If your code depends on exact size of a structure, you should add static_assert(sizeof(my_struct) == whatever_you_need). If you care about alignment as well, there's alignof.
 

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