Game development career thread:

Kharzette

Watcher of Overs
5,851
5,841
Collector won. I'm doing a game about collecting magic runes. Going to sneak some Odin stuff in there.

Reason I'm here is because I wanted to re-read past stuff. I haven't done much art in months. Dune happened, then I got super into keyboard and esp32 coding. Somewhere along the way my gamerig addon got thrown out or nuked or something.

It looks like the one on github broke with version 4 of blender, but I can see that I'm using blender 4 in my screenshots of the last ludum dare. So I must have already bought it (the developers stopped updating the github and have it on gumroad now).

Damned if I can remember though.
 

Kharzette

Watcher of Overs
5,851
5,841
Collector won. I'm doing a game about collecting magic runes. Going to sneak some Odin stuff in there.

Reason I'm here is because I wanted to re-read past stuff. I haven't done much art in months. Dune happened, then I got super into keyboard and esp32 coding. Somewhere along the way my gamerig addon got thrown out or nuked or something.

It looks like the one on github broke with version 4 of blender, but I can see that I'm using blender 4 in my screenshots of the last ludum dare. So I must have already bought it (the developers stopped updating the github and have it on gumroad now).

Damned if I can remember though.
I am a tard. My own readme file links to the right version on github. Someone forked.
 

Kharzette

Watcher of Overs
5,851
5,841
Here's my first day. I made this as a 144fps vid from 5fps recordings, so not sure how youtube will mangle it.



Somehow I messed up my blender mirror modifier, had my gamerig nuked (see above), then had a brutal multi hour debug of some linker errors. Super weird. You can see me struggling with it.

Some super unrelated stuff worked together to cause the problems.

So for a long time I've had these really bad makefiles building my stuff. I only knew the very basics of how to get gcc to compile something, and never really understood makefiles completely, so all my libs were being rebuilt every time. This wasn't a super big deal as c compiles really fast but I wanted to fix it before the jam.

To make it work you need (apparently) to build object files as an intermediate step. The old way I just went straight from a .c to a shared library. This intermediate step lacks a little context, and caused some strange behavior in my audio library.

My makefile for my audio lib had the usual shared library make, but also a test program. This was just a simple main function that loaded up any sound effect files in the usual spot and played them. When building a shared library, main() is ignored, so I had a different build target for the test program that made an exe.

The obj intermediate step screwed that up and the shared library was being built with a main function. This was overriding the main in my actual program, but I had no way of knowing that.

I've been way too distracted with esp32 and keyboard firmware lately. My code is in a shit state.
 
  • 2Like
Reactions: 1 users

Kharzette

Watcher of Overs
5,851
5,841
The makefile stuff pissed me off so much I started looking around at other build systems. They are all crap and I hate all of them, but I knew if I made my own it would just make other people hate me as well.

There's this funny weasely little guy on twitch or youtube that does coding streams that made a build system that is just a c program. It is really nice! He made it just an h file with little helpers that can check if a build is needed, concat arguments and such.


Here's my build file that uses it: GrogLibsC/BuildIt.c at main · Kharzette/GrogLibsC

If you add stuff to it, you don't even need to rebuild it, just run it ./BuildIt and it rebuilds itself. Very fancy.

I should add: If you are converting over from make, it has some strange things to watch out for. Sometimes make needs single quotes around stuff that you wouldn't use if calling gcc from a command line. Also I know of one spot where there's a wierd linker variable RPATH you can set to $ORIGIN to have the exe look relatively for shared libraries at runtime. Make needs that as '$$ORIGIN' so you have to watch out for that with this c stuff.