SetsuneDev

VR and GB Game Development!

Working on Cuddle Kobold! for VR platforms. Posts may contain NSFW content.


Games on Itch.io
setsune.itch.io/

Scribble-Sheep
@Scribble-Sheep

Me in the past:
"Man I wanna do as much as I can on my own, and I'm doing it properly, no "hacky" stuff. Tools are fine, but it's not for me, and I like the accomplishment of doing things in a well thought out and scalable manner."

Me now, tired as hell, and having dev'd for ten+ years with not a single finished project under my belt:
"Oh, I can't find a plug in for drag and dropping stuff in godot...fuck, I'm gonna take a nap and see if I can just make an object move towards your mouse or something when you click down, hope no one notices..."


You must log in to comment.

in reply to @Scribble-Sheep's post:

I am somewhere in teh middle still, hehe
I still like rolling ouf my own buf there's a limit
Like whenever I am making a plaftormer and I hav to make a slope, there's where I stop trying to do physics myself, meowf

I remember when I was trying to make stuff in Unity, I would do everything with scriptable objects. Inventory, enemy FSMs, attacks. I had some sorta impressive things set up, and was trying to preplan for every instance that I knew I'd need.
I ended up getting burned out hard and moved to godot bc it seems simpler to do stuff in, and like

I'm thinking, if I do end up trying to port that game to godot and finish it...I'm just making a state machine outta Enums haha. Either that or use a state machine plugin.

It's really fun to make functional reusable code, but also it just...feels like if I make my code super modular and cool, that's the only thing I'm ever gonna do, y'know?

I had a similar experience wiff scriptables in unity, hehe. I treated them like traits in Rust or smthn, and I tried really hard not to duplicate code. If this enemy and this enemy can slash, they Need (NEED) to be both children (or whatever u do in unity) of a CanSlash object!! It's importanf or teh game will fall apart (and then if they slash in different ways, I can'f just put the differences in teh enemies themselves, I need two sub-objects that they then each subclass, because whaf if I make new enemies that also slash in one of teh specific ways?)

Honesfly I am still vee much an overengineer, specially in my initial, instinctual thought process, buf I am trying to at leasf delay huge brain plays and keep things simple until it seems like it might be a good idea not to, and even if I want to make something on my own there's no reason not to prototype it with a package/module/whatever.

It helps to get things actually done and not burn out, hehe (plus prototyping part-by-part helps you not take the whole projectf at once and takes a lot of the overwhelming feeling of it), and I've come to realize that the feeling of finishing stuff is just as satisfying as making something In The Coolest Way Possible, at least fur me.

Yeah, I get that lol. I see a lotta talk about interface-style stuff like "canRecieveDamage" or "canRecievePlayerInput" nodes/components or whatever mentioned sometimes, and it seems cool to have my code all modular like that!

I think on my next project, when I start getting bigger with stuff, I might try for the cool modular code, since that's good for rpgs or whatever that have a lotta units, but as of right now, what I'm doing is like...
More or less, I've given myself something simple to do, and I'm forcing myself to do it "wrong" since that way I can both learn to strike a balance between "oh this is cool code" and the dreaded burnout preoptimization stuff.

I think a lot of that comes down to me finding this unity coding channel that was all about using the SOLID principles and was, thinking back on it now, miiinorly elitist about "bad" code. Kinda fucked up my self confidence a bit lol. Which is silly bc most gamecode by nature breaks SOLID rules bc it's not always beneficial to perfectly follow object oriented law in something as coupled as a game engine.

Stuff like SOLID or KISS or DRY are nice to explore buf they aren't universally applicable; it's nice to make projects in those parameters and learn wher they made things easier or harder, and then use ur own critical thinking and intuition to judiciously use them in an actual project, buf they aren't "Good Code." I even use gotos sometimes when I am making state machines in C, hehe, like it feels like this pattern:

int data = 0;
state_t state = START;
state_t next = NULL_STATE;
bool running = true;

while (running) {
  switch (state) {
    case START:
      state = do_start(&data);
      break;

    case N_COMMON:
      data += 1;
      state = next;
      next = NULL_STATE;
      break;

    case N1:
      next = n1(&data);
      state = N_COMMON;
      break;

    case N2:
      next = n2(&data);
      state = N_COMMON;
      break;

    case END:
      running = false;
}

Is much more simplified by a couple uses of gotos:

int data = 0;
state_t state = START;

while (true) {
loop_start:
  switch (state) {
    case START:
      state = do_start(&data);
      break;

    case N1:
      state = n1(&data);
      goto n_common;

    case N2:
      state = n2(&data);
      goto n_common;

    case END:
      goto loop_end;
}

n_common:
{
  data += 1;
  goto loop_start;
}

loop_end:

(alfo whenever I need to return to teh beginning of a loop (withouf iterating) and gotos are available, I refuse to do any of teh trickery that's required not to use it, hehe)
(also I am goto-ing to teh start of teh thread to make teh code samples easier to read)

(EDIT: u could also put a n_common(&data) call in each N state, buf honesfly I only used functions here to simplify teh code, if I am making state machines in C it's nof that often I can neatly contain each state in a function, specially if I need to pass around a lot of data, meowf)