The worst part of solo game dev..

Поделиться
HTML-код
  • Опубликовано: 5 фев 2025
  • One of the hardest parts of game dev is fixing a bug you can't reproduce that only a small fraction of your players experience. Here's a cautionary tale about an elusive bug I've fought for the past 3 months in my upcoming game Hexagod.
    Hexagod Demo: store.steampow...
    #gamedev #indiegame #aarimous
    My Games:
    Steam Page: store.steampow...
    Chess Survivors: store.steampow...
    Social Media:
    Twitch: / aarimous
    Bluesky: bsky.app/profi...
    Discord: / discord

Комментарии • 39

  • @Aarimous
    @Aarimous  9 дней назад +4

    One of the hardest parts of game dev is fixing a bug you can't reproduce that only a small fraction of your players experience. Here's a cautionary tale about an elusive bug I've fought for the past 3 months in my upcoming game Hexagod. Checkout the demo for Hexagod on Steam: store.steampowered.com/app/3059390/Hexagod/

    • @_theknighthawk_7018
      @_theknighthawk_7018 9 дней назад

      Never heard of it before. But looks interesting so I'll check it out.

  • @zZMazeZz
    @zZMazeZz 9 дней назад +23

    There's a lot of exaggeration on game dev youtube, but you are 100% correct that the worst part of any software development, are bugs you cannot replicate.

    • @Aarimous
      @Aarimous  9 дней назад +1

      I did think... "is this title clickbait", but like these bugs do suck the most. Thanks watching the video and leaving a comment :) Good luck on fixing your bugs!

  • @FirebelleyGames
    @FirebelleyGames 8 дней назад +5

    I feel your pain, I just got done fixing some really obscure bugs myself!

  • @TheBarrenBaron
    @TheBarrenBaron 9 дней назад +2

    RUclips just gave me this godly of recommendation to your channel. Informative video, and good commentary. You got my wishlist for Hexagod Aarimous!

  • @stcash713
    @stcash713 9 дней назад +3

    You have really solid content. I always enjoy what you have to share

    • @Aarimous
      @Aarimous  9 дней назад +1

      Thank you and I'm glad you are enjoying the videos!

  • @Anyobin
    @Anyobin 9 дней назад +1

    ...2015...a decade old...?
    oh fuck.
    good video btw

  • @OldRod99
    @OldRod99 9 дней назад

    Wow, that's a rough one, for sure. Glad you (hopefully) got it whipped now :)

  • @Drrobverjones
    @Drrobverjones День назад

    The other thing that's worse is when you can't replicate the issue, and then you make changes and add logging, push that to the user and the logging fixes the issue because it slowed the program down just enough to make the problem go away

  • @dathan8644
    @dathan8644 9 дней назад

    Hey! Just wanted to say thanks for these awesome videos man! Since I've (again) started working on a small game since last week I've been watching some of your videos and they've been super nice to get some guidance but it's also really fun to look at some of your code and how you implemented things to get some technical inspiration for my own code.
    Hexagod looked cool before but as a turn based roguelike it looks really interesting, I will definitely play it when it comes out! :D
    Also, sorry for the unsolicited request but just in case you're looking for possible future video ideas I'd love to see how you handle scaling your game for different resolutions and screen ratios and keeping it looking good and not messing up the looks/graphics. It's obviously dependent on the project but it's what I seem to struggle with the most and it would be interesting to get your insight.
    PS Your cats are really cute

    • @Aarimous
      @Aarimous  9 дней назад

      Glad you enjoy the vids! Cheers :)

  • @cherryskies9876
    @cherryskies9876 9 дней назад

    Sorry for those pesky bugs. I'm glad you made it through! 😁 🎉

  • @morgan0
    @morgan0 8 дней назад +1

    never ever ever ever check floats for exact equality, you’ll only get headaches. always check with a delta, or check greater than or less than (with equals) if it doesn’t actually need specifically equals

    • @TyrusDev
      @TyrusDev 8 дней назад

      yeah, sounds like comparing two floats without any margin/delta.

    • @n3y
      @n3y 6 дней назад

      conveniently godot has is_equal_approx(a, b) and is_zero_approx(a) for this exact purpose !

  • @JoeTheis
    @JoeTheis 9 дней назад

    Definitely was bashing my own head against a wall with my own bug last night. Sometimes it just takes walking away, and coming back with fresh eyes. Gamedev is hard. Cheers!

  • @mischiefmotorsgame
    @mischiefmotorsgame 9 дней назад +2

    Those bugs are the worse. I squashed a bug this weekend after 3 days (8 realtime hours) of messing around.
    The bug was basically that my Pause menu and GameOver (Win Screen) would break in Build mode only but was okay in Edit Mode.
    The error was happening because Unity seems to manage OnDisable/OnEnable differently (or slower?) in a Build than in Editor.
    Switching to Start() fixed it (and I had to tweak some things around that but now it works)

    • @Aarimous
      @Aarimous  9 дней назад +1

      Yeah, my last job I was a tech lead on a support staff. Which basically meant I had to deal with customers who had these exact sort of non-reproducible very customer specific bugs. But maybe we should try just not writing bugs in your projects ;)

    • @mischiefmotorsgame
      @mischiefmotorsgame 9 дней назад

      @Aarimous haha yeah! How dumb of us to go and write bugs!

  • @foldupgames
    @foldupgames 9 дней назад

    Woof! So glad you were able to fix it.
    I often add in a catch-all type statements in my code to (hopefully) smash bugs before they happen.
    if work_to_complete >= 99:
    work_to_complete = 100
    But sometimes they are just impossible to replicate or fix. Even big studios will do some workaround to make the game crash gracefully or reload stuff if they can't fix it.

  • @nikolascrisci4233
    @nikolascrisci4233 9 дней назад

    This matters only if the bug is not fixed:
    I'm not very familiar with Godot, so I'm not entirely sure if this applies, but it's possible that floating-point imprecision is causing the issue. Once you switched from time-based calculations to turns, these imprecisions might have started to matter. If you haven't already, you could try comparing the results to an approximate value to see if the problem persists.

  • @maciek5924
    @maciek5924 7 дней назад

    The worst part of solo game dev is being solo

  • @GrahamOfLegend
    @GrahamOfLegend 4 дня назад

    No lies were told. The worst part of solo dev is fixing bugs by yourself (or at all) 😅

  • @paipai762
    @paipai762 7 дней назад

    Things like this are why I use raylib instead of an engine. At least then I can find out exactly what is going on under the hood and understand the issues with some digging. Has its cost tho..

  • @nycdotnet4751
    @nycdotnet4751 9 дней назад

    It seems you ran into what is just a fundamental problem with floats/doubles. The IEEE 754 floating point standard is about making very fast calculations for science and simulations. This is just baked into the standard and all languages that implement IEEE 754 have the same problems with those data types. The canonical broken example is that 0.1 + 0.2 does not equal 0.3.

    • @Aarimous
      @Aarimous  9 дней назад

      Good point. It also seemed to functionally work fine when the game was realtime and thus adding work each frame (using delta) worked, but then having a discrete amount of turn processing time broke it all. Thanks for sharing!

  • @InstanceJeff
    @InstanceJeff 8 дней назад

    I think your old solution would work if you used _physics_process instead of _process. It runs at a fixed rate per second (adjustable in godot settings, default is 60/s) rather than once per frame. Or at the very least, it would be less variable between hardware

  • @kiwifrogg
    @kiwifrogg 9 дней назад

    To be fair my system is old but not that crappy can play most new games. Hence, I'm not bothering to upgrade ;) .

    • @Aarimous
      @Aarimous  9 дней назад

      Fair fair, I was more or less talking about my old crappy laptop but realized I could have been talking about your comp as well. Anyways, thank you for your help debugging this all :)

  • @SuperEssenceOfficial
    @SuperEssenceOfficial 9 дней назад

    I had a bug that users reported, and I could never reproduce it even with great steps from them. I ended up rewriting the whole system adding in a bunch of failsafes. I can't say for sure I fixed it. But i dont get users contacting me anymore so I guess its fixed? wack

  • @somefishhere
    @somefishhere 9 дней назад

    What is a tween?

    • @Aarimous
      @Aarimous  9 дней назад +4

      From the Godot docs: "
      Tweens are mostly useful for animations requiring a numerical property to be interpolated over a range of values. The name tween comes from in-betweening, an animation technique where you specify keyframes and the computer interpolates the frames that appear between them. Animating something with a Tween is called tweening."
      docs.godotengine.org/en/stable/classes/class_tween.html

  • @BartMamzer
    @BartMamzer 7 дней назад

    Or you can just skip fixing it and take the few negative reviews on the chin.