Undertale is a horribly made game

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ก.ค. 2024
  • Undertale is a game that revolutionized the RPG genre.. but what spaghetti is lurking behind the source code?!
    Download GameMaker FOR FREE: gamemaker.io/en/download
    I make content on indie games and game development!
    Join the Discord: / discord
    I stream every weekend over at / juniperdev
    Contact → juniper.owo.biz@gmail.com
    0:00 Undertale
    8:15 GameMaker
    9:45 Undertale
    #undertale #tobyfox #gamedev #indiegame #pixelarts #aseprite #indiegames #gaming #pixelart #pcgaming #gamedesign #videogames #gamemaker undertale toby fox yellow
  • เกม

ความคิดเห็น • 2.2K

  • @JuniperDev
    @JuniperDev  16 วันที่ผ่านมา +621

    Download GameMaker over at gamemaker.io/en or else

    • @unnaturalanimations1383
      @unnaturalanimations1383 16 วันที่ผ่านมา +8

      I already have 😈😈

    • @kr0tyara
      @kr0tyara 16 วันที่ผ่านมา +13

      I expected some kind of a referral link, but it's actually clean??? That's a miracle :3

    • @AnimatingBeats
      @AnimatingBeats 16 วันที่ผ่านมา +4

      OR ELSE?! WHY IS THERE AN OR ELSE?!

    • @SoupMarley64
      @SoupMarley64 16 วันที่ผ่านมา +6

      This is the most fitting sponsor i have ever seen. I literal unskipped on SponsorBlock to watch it. Swag.

    • @Csbees
      @Csbees 16 วันที่ผ่านมา +3

      I love gameMaker 💖

  • @ACoffiend
    @ACoffiend 16 วันที่ผ่านมา +12360

    if i remember correctly Toby actually got the genocide game delete to work. but he removed it since windows detected it as a virus 💀

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +2364

      @@ACoffiend LOL even better

    • @jarielwilliams9856
      @jarielwilliams9856 16 วันที่ผ่านมา +1040

      ​Well, that sucks. That would've been better. But noooo. Windows has to be a crybaby and complain about everything. "Oh my god! A game is uninstalling itself? I gotta fucking remove this virus!" ​@JuniperDev

    • @Tenandrobilgi
      @Tenandrobilgi 16 วันที่ผ่านมา +1921

      @@jarielwilliams9856 That's intended behavior, and should never ever change. A program uninstalling itself without the control of a user is malware behavior, regardless of the source and intention. If Microsoft ever allowed this, it would create a ton of security vulnerabilities. I agree, it would've been funny and scary, but there's a limit you have to not pass if you want your game to still be considered a game in front of the OS's eyes.

    • @jarielwilliams9856
      @jarielwilliams9856 16 วันที่ผ่านมา +229

      @@Tenandrobilgi Yeah. Fair. That is true.

    • @Boomrainbownuke9608
      @Boomrainbownuke9608 16 วันที่ผ่านมา +85

      @@Tenandrobilgi why can an uninstaller be allowed to uninstall a part of the pc itself then?
      thats a double standard there.

  • @ClodsireBcuzYes
    @ClodsireBcuzYes 16 วันที่ผ่านมา +6475

    the WRITING is genius
    the code on the other hand is held together by sticks, duct tape and a prayer.

    • @MarcosAlexandre-no3qx
      @MarcosAlexandre-no3qx 16 วันที่ผ่านมา +404

      so basically a normal computer program.

    • @Thatmoosejimenez
      @Thatmoosejimenez 16 วันที่ผ่านมา +221

      well we gotta remembner this guy was basically one man with $50k

    • @gjk-arts5855
      @gjk-arts5855 16 วันที่ผ่านมา +214

      correction: and hopes and dreams :)

    • @LucasMiddleNameandLastname22
      @LucasMiddleNameandLastname22 16 วันที่ผ่านมา +48

      that was one EPIC prayer.

    • @ssg-eggunner
      @ssg-eggunner 16 วันที่ผ่านมา +161

      @@Thatmoosejimenez he spend 50k more wisely than a certain other guy recently

  • @Francisco112DND
    @Francisco112DND 15 วันที่ผ่านมา +2463

    Toby Fox made his game in a cave WITH A BOX OF SCRAPS

    • @HaganeNoGijutsushi
      @HaganeNoGijutsushi 14 วันที่ผ่านมา +44

      GameMaker Studio: am I a joke to you?

    • @MineCraft-wt7iz
      @MineCraft-wt7iz 14 วันที่ผ่านมา +99

      I'm sorry...I'm not Toby Fox

    • @yosefyonin6824
      @yosefyonin6824 14 วันที่ผ่านมา +83

      he only had 2 sticks and a rock, and he HAD TO SHARE THE ROCK (with temmie)

    • @chapalapachala-oe1oo
      @chapalapachala-oe1oo 13 วันที่ผ่านมา +33

      And on hussie basement, the creator from homestuck, no wonder the game is called UNDERtale

    • @GenKoe6917
      @GenKoe6917 11 วันที่ผ่านมา +14

      Tony Fox?

  • @psiseven
    @psiseven 9 วันที่ผ่านมา +389

    "Undertale is poorly programmed" Canonically it was made by a dog barking into a text to speech converter, so that checks out

  • @Wince_Media
    @Wince_Media 16 วันที่ผ่านมา +5223

    Honestly, the fact that Undertale is a poorly coded game makes Undertale even more of an inspiration. If even a rookie developer can make such a fantastic game, then you can too!

    • @AnimatingBeats
      @AnimatingBeats 16 วันที่ผ่านมา +165

      That’s kinda why I use it as inspiration too. Kinda what made me ever consider if I want to learn to make video games. I probably won’t ever be able to make a full project, but I can dream!

    • @ssg-eggunner
      @ssg-eggunner 16 วันที่ผ่านมา +24

      not in my case, because i know i can do worse than toby fox in 2013 with 50k

    • @Wince_Media
      @Wince_Media 15 วันที่ผ่านมา +69

      @@ssg-eggunner if you feel you can't do what Toby did, just try a smaller scope! Find something that you feel you can do by yourself and just do it! Even if it never sees the light of day, you'll have a blast!

    • @Wince_Media
      @Wince_Media 15 วันที่ผ่านมา +27

      @@AnimatingBeats you don't have to start with a full proejct!! Toby started with ROM hacks, UniqueGeese started with a Garten of Banban remake, you can start with a small scope, like a 10-minute to 1 hour-long game. Once you feel comfortable doing stuff like that, you can dream bigger! It's better to have a complete small project than an incomplete big one!

    • @ssg-eggunner
      @ssg-eggunner 15 วันที่ผ่านมา +4

      @@Wince_Media i could do a ripoff of pong and i still can imagine it crashing

  • @standardhuman8675
    @standardhuman8675 13 วันที่ผ่านมา +665

    this is just how people code. if its not held together with spaghetti and tape, are you really even a developer?

    • @fragileglass9622
      @fragileglass9622 10 วันที่ผ่านมา +45

      Hahah! I laughed too hard at this. I diligently start every project with absolute star level folder and consistency. A week into the code base. I realize star level means you can pick a star in the sky and I’ve probably put a bit of glue, duct tape and code in it. 😂😂

    • @NotAGoodUsername360
      @NotAGoodUsername360 7 วันที่ผ่านมา +11

      It's called "modular design"
      By which I mean I grabbed a bunch of hastily-coded, self-contained functions and stitched them together as needed.
      And plagiarized as much open source as I could get away with.

    • @fragileglass9622
      @fragileglass9622 7 วันที่ผ่านมา +5

      @@NotAGoodUsername360 Haha! The three of us are on our way to becoming a AAA Studio! Heh heh heh!

    • @ElMisterDeLosGuantes
      @ElMisterDeLosGuantes 2 วันที่ผ่านมา

      literally running on Hopes and Dreams

  • @8083music
    @8083music 15 วันที่ผ่านมา +278

    The "Fun Value" thing should be in more games. It adds variety to different playthroughs with minimal effort from the developer

    • @8083music
      @8083music 15 วันที่ผ่านมา +2

      Awesome video btw

    • @rakesiar
      @rakesiar 15 วันที่ผ่านมา

      Can any coders tell us if this would be hard to add to games?

    • @a_username_lol
      @a_username_lol 15 วันที่ผ่านมา +20

      ​@@rakesiar not really just create a random value on new game and check if the value is below or above something and then do the thing u actually want to happen which is the hardest part

    • @catcactus1234
      @catcactus1234 15 วันที่ผ่านมา

      @@rakesiarSoftware engineer / game dev here: It’s actually pretty easy, the only hard part would be coding all the unique events (and that’s more of a content creation task).
      It’s as simple as doing something like:
      int funValue = Math.Rand(1,100)
      if (funValue > 57)
      {
      //add code for an event that will only happen if the fun value is greater than 57
      }
      I think a lot of games tend to avoid this because they don’t like players to have a very randomized experience. It only works for certain types of games where it doesn’t harm the gameplay, otherwise it can be kinda annoying.

    • @henryfleischer404
      @henryfleischer404 15 วันที่ผ่านมา +15

      @@rakesiar Not particularly, just adding the feature would be extremely easy, the hard part would be adding the various possible events, and that would scale linearly with how many there are.

  • @Vlad-Ra
    @Vlad-Ra 15 วันที่ผ่านมา +124

    5:00 For your knowledge: Computers are really fast at everything. Going through thousands of statements does not require a lot of computing power, however if that is done every frame (which it isn't here) it could take away crucial computing power from other tasks.
    So, Toby's approach is dubious, but ultimately fine.

    • @briannormant3622
      @briannormant3622 14 วันที่ผ่านมา +10

      Interestingly, the switch statement would theoretically be the best solution if you could design it in a jump table statement, where every single condition gets assigned a number and the code is spread out in a massive array, the number corresponding to the array position of the code. This would make it O(1).
      But yeah, sometimes you want to keep it simple, it is not an area where performance matters at all.

    • @NihongoWakannai
      @NihongoWakannai 14 วันที่ผ่านมา +4

      ​@@briannormant3622 in a compiled language yeah, but I think gamemaker has its own interpreted language or something. It's a mystery to me how it handles switch statements.

    • @Lucas-ty5ph
      @Lucas-ty5ph 13 วันที่ผ่านมา +14

      really, i think the only reason that such an approach is frowned upon is that it makes localization harder, since if the dialogue is stored externally, localizing the text to another language is just a matter of replacing it, whereas baking the dialogue into the executable like that means that translating the game's text to another language requires you to recompile the game entirely

    • @L4Vo5
      @L4Vo5 12 วันที่ผ่านมา +2

      @@briannormant3622 _technically_, the default way to make a jump table - as the name implies - requires an extra layer of indirection from an array. as the array/table that's built gets you "the direction to jump to to run the code there", not "the dialogue data itself". as long as dialogue data is always the same (and there isn't some extra preparation code for some special dialogues) an actual array would be faster. unless the compiler realizes the data is the same and makes a genuine array as a second optimization
      that being said i doubt GML even makes a jump table in the first place

    • @zyaicob
      @zyaicob 11 วันที่ผ่านมา +1

      You must never have used the laptop I did A level computer science on

  • @stridin_raye
    @stridin_raye 16 วันที่ผ่านมา +5704

    "If you like quirky characters and inconsistent pixel lengths, Undertale is for you." - Toby Fox, 2015

    • @wtfbro-5
      @wtfbro-5 15 วันที่ผ่านมา +34

      @@mrwilsonisofflinegape577 true insanity IRL 🦕🦕🦕

    • @84warhead
      @84warhead 15 วันที่ผ่านมา +38

      @@mrwilsonisofflinegape577 Buddy, Metal Gear Rising is almost 11 years old and it still gets talked about today. If we go even older than that we have Ocarina of Time or Doom, or Minecraft.

    • @rocks4brainzz
      @rocks4brainzz 15 วันที่ผ่านมา +13

      Hello pfp twin

    • @ShyGuyXXL
      @ShyGuyXXL 15 วันที่ผ่านมา +70

      I HATE inconsistent pixel lengths with a burning passion... but I still somehow managed to get through Undertale without rupturing a hernia. Who knows how.

    • @stridin_raye
      @stridin_raye 15 วันที่ผ่านมา +8

      @@rocks4brainzz No way......

  • @mrtruman4339
    @mrtruman4339 16 วันที่ผ่านมา +5832

    _Reads title._
    _Gets pitchfork._
    _Watches video._
    _Lowers pitchfork._ "Good point."

    • @Ev0rtheGLiTCH404
      @Ev0rtheGLiTCH404 16 วันที่ผ่านมา +106

      REAL

    • @Scypek
      @Scypek 16 วันที่ผ่านมา +250

      _Reads title._
      _Reads the first two sentences of the description._
      _Lowers pitchfork._

    • @bathgod
      @bathgod 16 วันที่ผ่านมา +15

      So relatable.

    • @AnimatingBeats
      @AnimatingBeats 16 วันที่ผ่านมา +69

      Accurate. Except I wasn’t gonna bring a pitchfork. I was gonna bring a machine gun. Get Ralsei to wield it. Stuff like that

    • @baileygobrr
      @baileygobrr 16 วันที่ผ่านมา +13

      im lowering my pitchfork but im not happy about it

  • @howard_blast
    @howard_blast 14 วันที่ผ่านมา +629

    Two very important things:
    - Undertale is graphically good. The vast majority of visual assets seen in the game were cleaned up considerably by Temmie, produced from scratch by her, or done by another artist Toby hired. The entirety of Home, Snowdin, and many other areas were not only drawn and sprited entirely by Temmie, but even conceived in concept art by her first via fairly vague instructions from Toby. It is not an exaggeration to say Temmie is more important to Undertale's identity at many points in the game than Toby is.
    There was a strong effort to keep the look simple and reminiscent enough of what Toby himself would doodle, but most of the final product is by no means not a professional quality finish, nor something he could produce anything that feels remotely similar to.
    This confuses a lot of aspiring gamedevs into thinking they can still achieve what Undertale did with lower standards/ability. They cannot.
    -Toby's lack of ability to code his way out of a "Hello world" assignment is one of the many factors delaying Deltarune to year infinity. It is very much an issue and, much like the point above, should not be something that encourages aspiring game devs to skip over learning their fundies.
    Toby has been notably trying to use Temmie less on Deltarune also, and development and the product itself is suffering for that as well.

    • @SugarbirdyOvO
      @SugarbirdyOvO 14 วันที่ผ่านมา +24

      I didn't know these facts, and I'm glad I now do. Thank you for making this comment ^^

    • @arian41148
      @arian41148 13 วันที่ผ่านมา +6

      really nice points.

    • @annagolikova5167
      @annagolikova5167 12 วันที่ผ่านมา +14

      Wait, why isn't he working with her as much anymore?

    • @howard_blast
      @howard_blast 12 วันที่ผ่านมา +82

      @@annagolikova5167 I'm honestly not sure. He mentioned in the 2022 commentary stream that he wants to be able to do as much of the visuals himself as he possibly can, but then he started simply giving more work to Gigi that would have gone to Temmie in Undertale.
      It's hard to figure out how he is thinking.
      Had he given Temmie the same role and freedom she had on Undertale, getting everything done for the game on the visual asset and design side would be done practically overnight with how good Temmie is these days. Maybe she simply charges too much now.

    • @drakegrandx5914
      @drakegrandx5914 10 วันที่ผ่านมา +8

      Question: I can see how the development would be suffering due to the lack of involvement of Tem. But why the product, too? Is there something from the already-released Deltarune chapters that bothered you and that you think clearly shows a downgrade from Undertale? Just to be clear, I'm not trying to criticize you, I am legitimately curious.

  • @YuNoGuy123
    @YuNoGuy123 11 วันที่ผ่านมา +25

    This video is kinda neat, though the statements made about the switch statement being "slow" or "unoptimized" are incorrect.
    It's still wrong to do dialogue this way because it makes the code difficult to read and add onto, but it doesn't make it "slow". A switch statement has a constant speed no matter how many cases are in the statement, this is why it's preferred to use a switch statement over a long string of elseif statements.
    In fact, depending on how the code is written, it would likely be *faster* than accessing a JSON file. (Since in order to access a JSON file you need to make a read request to the storage device as opposed to ram, though you could just store the JSON file in an array, but even then, that's unlikely to be faster than a switch statement.)
    Again, it's still wrong to do that massive switch statement, but it certainly isn't wrong because it's slow.

  • @MysticSlime
    @MysticSlime 16 วันที่ผ่านมา +3964

    Yeahhhhh Undertale is held together by a bunch of sticks and glue 😅it's honestly kind of miraculous that it not only works, but also that most playthroughs really don't see many glaring bugs at all

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +440

      MYSTIC! You have been all over my feed while I've been making this video haha. Seriously, creators like you are a big reason the community behind this game is still thriving and videos like mine are still interesting to people. Kudos!!

    • @youkofoxy
      @youkofoxy 16 วันที่ผ่านมา +64

      You forgot determination, loot and loots of determination.

    • @maulaz612
      @maulaz612 16 วันที่ผ่านมา +36

      Not as bad as tf2
      That spaghetti code is barely tied together there

    • @DogsRNice
      @DogsRNice 15 วันที่ผ่านมา +10

      It's like old Pokémon games

    • @coledoe1030
      @coledoe1030 15 วันที่ผ่านมา +3

      This is how most coding projects work, or at least mine.

  • @JoThNoMi
    @JoThNoMi 16 วันที่ผ่านมา +1799

    There are two routes of spaghetti:
    Toby Fox
    YandereDev
    Nuff said

    • @squid_cake
      @squid_cake 15 วันที่ผ่านมา +389

      At least Toby bothered using switch statements

    • @JoThNoMi
      @JoThNoMi 15 วันที่ผ่านมา +35

      @@squid_cake haha yes

    • @Hyperboid
      @Hyperboid 15 วันที่ผ่านมา +61

      chaotic good and chaotic neutral

    • @MyUsernameIsGoofy
      @MyUsernameIsGoofy 15 วันที่ผ่านมา +12

      And Papyrus

    • @smallxplosion9546
      @smallxplosion9546 15 วันที่ผ่านมา +108

      @@Hyperboidneutral???

  • @ZReChannel
    @ZReChannel 13 วันที่ผ่านมา +35

    a switch statement isn't inefficient memory-wise, it may be even faster than a file you read whenever you need data.

    • @BlueBoyTech
      @BlueBoyTech 8 วันที่ผ่านมา +1

      that's what i was thinking, the I/O solution sounds like it would take way longer

    • @ZReChannel
      @ZReChannel 8 วันที่ผ่านมา +3

      ​@@BlueBoyTech yeah, for it to be faster one needs to load the file into memory and then map every entry to an array, which would be the same as a switch statement (maybe a little more organized). However, when it comes to Undertale.. it doesn't really matter

  • @Ehh.....
    @Ehh..... 10 วันที่ผ่านมา +32

    Undertale is a roomba with a razor taped to it.
    Good enough.

  • @FireCo0kie-0fficial
    @FireCo0kie-0fficial 16 วันที่ผ่านมา +960

    3:01 fun fact: I saw on a yt video about unused undertale content that this flowey sprite was gonna be used if you manage to oneshot Asgore by hacking the game

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +166

      @@FireCo0kie-0fficial Oooh that's super interesting lol!!

    • @shadoww-snoww
      @shadoww-snoww 15 วันที่ผ่านมา +46

      100 yard stare lookin flowey

    • @The_Existential_Bread
      @The_Existential_Bread 15 วันที่ผ่านมา +52

      "..."
      "..."
      "...uhh, you win?"

    • @hntsanimated
      @hntsanimated 13 วันที่ผ่านมา +15

      That would’ve been hella funny

    • @lance499
      @lance499 13 วันที่ผ่านมา +23

      "Jeez..."
      "...And i thought I'M the bad guy here."

  • @Michal-je1hx
    @Michal-je1hx 16 วันที่ผ่านมา +348

    One of my favorite things about Undertale is how, with Toby's limited skills and technical crap, it's still one of the best games I've ever played

    • @SMCwasTaken
      @SMCwasTaken 15 วันที่ผ่านมา +37

      I actually like how it's "badly coded"
      Old games had bad code too and Undertale is meant to replicate those games

    • @vibaj16
      @vibaj16 15 วันที่ผ่านมา +23

      similar to Minecraft in a way, at least for redstone. Fun fact: turning off a 3 block long redstone wire causes over 1700 block updates.

    • @radhoodini9802
      @radhoodini9802 13 วันที่ผ่านมา +2

      ​@@vibaj16no wonder why my world is lagging like heck lol

    • @Nikki-nd6jd
      @Nikki-nd6jd 13 วันที่ผ่านมา +3

      ​@@SMCwasTaken at the same time though a lot of those games were sort of ingenious if you think about how much memory and space they took up like literal MBs of info which to me I think is awesome, like we laugh at how janky they are but a lot of those were written with basically assembly which is definitely pretty awesome

    • @jorami4838
      @jorami4838 11 วันที่ผ่านมา +3

      @@SMCwasTaken tbf, none of those games intended to have bad code, including Undertale. 😂

  • @mark009vn
    @mark009vn 15 วันที่ผ่านมา +14

    4:00 to be fair, Toby used to be an Earthbound rom hacker, and Earthbound is pretty much infamous for how overtly complicated it's text system was

  • @slab37
    @slab37 15 วันที่ผ่านมา +23

    I want to point out a few things:
    1. Game optimization does matter. However, it's importance depends on what kind of a game you are making.
    2. Switch statement are not inefficient. Inefficient is what's called an if ladder, because it will check conditions one by one. Switch statement are designed to determine what code should be executed in almost constant time. That's why it only accepts constant values as cases. So it's not that bad.

  • @bea-i-guess
    @bea-i-guess 16 วันที่ผ่านมา +545

    THE UNDERTALE DIALOGUE "IF" STATEMENT

    • @-bees-5704
      @-bees-5704 15 วันที่ผ่านมา +18

      Oh god no

    • @GrimMcGrimmer
      @GrimMcGrimmer 15 วันที่ผ่านมา +19

      Lord o me may code Jesus (so basically brackeys before he quit) save me

    • @viaaaaaaaaaaaaa
      @viaaaaaaaaaaaaa 15 วันที่ผ่านมา +6

      terrifying

    • @sandwiches1069
      @sandwiches1069 14 วันที่ผ่านมา +23

      still better yandere sim game spaghetti code

    • @user-cy4js3tv9n
      @user-cy4js3tv9n 13 วันที่ผ่านมา

      Switch is not an if statement

  • @ShayyTV
    @ShayyTV 16 วันที่ผ่านมา +722

    oh hey, i'm in this!! thanks for the shoutout

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +86

      @@ShayyTV Yooo!! Neat seeing you here! That makes a lot of sense bahahah, I was debating between showing a couple areas that seemed to have the gag surrounding conveyer belts. I appreciate the clarification!

    • @degenerateinthecloset
      @degenerateinthecloset 15 วันที่ผ่านมา

      i literally called it that shayy was going to be in the comments lmao

    • @Hyperboid
      @Hyperboid 15 วันที่ผ่านมา +8

      ah yes the room with the really quiet easter egg

    • @Over0w0MeAmTheHotel
      @Over0w0MeAmTheHotel 15 วันที่ผ่านมา +5

      Riiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiing

    • @hntsanimated
      @hntsanimated 13 วันที่ผ่านมา +1

      Hi Shay I love your content

  • @CaptainBeebi
    @CaptainBeebi 8 วันที่ผ่านมา +5

    4:47 Minor correction: Unlike a list of if statements, where you run the dialogue ID through X amount of statements one after the other. Switch statements, on the other hand, use a hashlist that tells the game what part of the program to jump to in order to execute the right code.
    Like it's a messy blob function that could be written in a more coherent way, but coming from a background of backend development, I've sort of just accepted that there are some situations where you will just have blobby code, and game design is one of those cases.
    So it's less "slow", and more "a visual affront to god"

  • @45545videos
    @45545videos 7 วันที่ผ่านมา +4

    IT'S A SWITCH CASE!? THAT'S HOW THE DIALOGUE WORKS!? WHAT THE FUCK!?

  • @ToastieKelly
    @ToastieKelly 16 วันที่ผ่านมา +2670

    You should change the "Written" in the title to "Programmed", "Coded", "Developed" or "Designed", it'd still be plenty eyecatching for the youtube algorithm and wouldn't send people to just dislike and then click off which would tank the video and stop TH-cam from recommending it. But yeah I agree it's interesting how a game as great as undertale looks like it was just programmed on a napkin by a drunkard with a crayon behind the scenes.

    • @SamBateman
      @SamBateman 16 วันที่ผ่านมา +434

      Perhaps something more creative and eye-catching than even that, like "Undertale's code is spaghetti" with Papyrus' shocked face as the thumbnail.

    • @artinlaurez2714
      @artinlaurez2714 16 วันที่ผ่านมา +4

      where's u pfp from?

    • @sumas7
      @sumas7 16 วันที่ผ่านมา +59

      The point is that she may have done it on purpose to get more views

    • @Kelekona
      @Kelekona 16 วันที่ผ่านมา +86

      @@SamBateman Leave the title but have foreshadowing with just Papyrus pogging at a plate of speghetti with no words.

    • @ToastieKelly
      @ToastieKelly 16 วันที่ผ่านมา +60

      @@SamBateman Honestly could work, messy code is often called "spaghetti code" so there'd be plenty of space for some Papyrus jokes.

  • @bananaman9869
    @bananaman9869 16 วันที่ผ่านมา +683

    Games nowadays don't have enough dogs you can pet.

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +81

      @@bananaman9869 So true

    • @minestar2247
      @minestar2247 16 วันที่ผ่านมา +3

      Minecraft legend does

    • @pixelcat29
      @pixelcat29 16 วันที่ผ่านมา +8

      Or just animals to pet in general

    • @anotheryoutubeaccount5259
      @anotheryoutubeaccount5259 16 วันที่ผ่านมา

      ugh

    • @glorbojibbins2485
      @glorbojibbins2485 16 วันที่ผ่านมา +5

      That is a huge pet peve of mine

  • @Nerd-O-Matic
    @Nerd-O-Matic 10 วันที่ผ่านมา +7

    This very much reminds me of Thee Sims 2. It’s in my (and many other people’s) opinion the best Sims game to date, yet the code is so awful, that you have to jump through hoops _not_ to completely break the game beyond repair. Like, certain buttons in the game that you’re supposed to use will just break. Say you try to export a lot that Sims have lived in, the whole game has a chance of breaking because now there’s missing data and it’s just a beautiful mess of a game.

  • @broohmygod
    @broohmygod 15 วันที่ผ่านมา +16

    extraordinarily rare oneshot mention in a random video
    the 2016 remake of oneshot doesn't do anything as extreme as deleting the entire game though, but it does do something similar by restricting your access to the rest of the game until your delete your save file or solving the puzzle related to it
    though OneShot becomes literal in the 2014 version as mentioned. however, there are versions where you get more than one attempt at the game

  • @illegalmemedealer3549
    @illegalmemedealer3549 16 วันที่ผ่านมา +650

    So THAT’S why Deltarune Ch.3 is taking so long

    • @minestar2247
      @minestar2247 16 วันที่ผ่านมา +228

      Well, actually the opposite, cause toby now has other people working on the game so he has to make it more readable

    • @Cubeytheawesome
      @Cubeytheawesome 16 วันที่ผ่านมา +37

      I can’t wait for the Woody fight

    • @soapgaming4903
      @soapgaming4903 16 วันที่ผ่านมา +159

      Deltarune is a pretty large step up from Undertale, so that means that the code has to be written cleaner so the game can actually work. Also he has a team now so the code has to be readable if they want to work on the game.

    • @illegalmemedealer3549
      @illegalmemedealer3549 16 วันที่ผ่านมา +3

      @@soapgaming4903 yes I know this is sarcasm

    • @soapgaming4903
      @soapgaming4903 16 วันที่ผ่านมา +7

      @@illegalmemedealer3549 whoops. Looks like I need to work on my literary skills lol.

  • @ashgrun
    @ashgrun 16 วันที่ผ่านมา +468

    read the title. grabbed my pitchfork. then watched for a few seconds and realized: "yeah the code is just papyrus' spaghetti" and then put my pitchfork away

    • @animainmilol
      @animainmilol 15 วันที่ผ่านมา +2

      Papyrus'S

    • @stuckatthevalley
      @stuckatthevalley 15 วันที่ผ่านมา +8

      ​@@animainmilol *Papyrus'

    • @vibaj16
      @vibaj16 15 วันที่ผ่านมา +3

      @@stuckatthevalley both are valid

    • @NoobySwooby
      @NoobySwooby 15 วันที่ผ่านมา +4

      @@vibaj16no. if you have a name that ends with S, you don’t put another S when referring to something that belongs to the person with the name ending with S, so it’s just papyrus’

    • @danielthecake8617
      @danielthecake8617 15 วันที่ผ่านมา +4

      Papyru's

  • @RodDev
    @RodDev 13 วันที่ผ่านมา +10

    Wow your channel is awesome! How did youtube not recommend this to me earlier? Keep it up!

    • @JuniperDev
      @JuniperDev  13 วันที่ผ่านมา

      Dude thank you so much!! (:

    • @justcameoverhere
      @justcameoverhere 11 วันที่ผ่านมา

      @@JuniperDev Your channel is truly awesome! But I wish the title of this video didn't make a bad first impression of it. :P

  • @AnhDNH-us9bx
    @AnhDNH-us9bx 15 วันที่ผ่านมา +14

    My experience messing around Undertale's code is when me and another guy working on technical stuff for an Undertale localization project, the other dude noticed me about a problem that when a player walk through Alphys's lab, they sometime got lag and even game crash. The reason for that is because of the screen displayer (that display Frisk's face) works by deleting and generating a sprite from the main surface (that draw everything inside the room) every single step, using function sprite_create_from_screen_x, which is sprite_create_from_surface but with application_surface. We have to modified the code to use surface_copy_part and the result is like day and night. There are more funny stuff we found inside the code but this one is the one I remembered the most.

  • @extremempsilvamps5851
    @extremempsilvamps5851 16 วันที่ผ่านมา +127

    Yeah, I remember the heartbound dev saying that you "don't need to be a good game dev to make a great game" in a shorts and using Undertale as example, so I actually didn't get clickbaited (Also, there is a code behind sans so...)

  • @michaelurmo7984
    @michaelurmo7984 16 วันที่ผ่านมา +172

    "Undertale is a horribly coded game" could have gotten the point across better, but what do I know? I still clicked on the video 💀

    • @Ray-op7xc
      @Ray-op7xc 12 วันที่ผ่านมา +29

      Yeahh but honestly that title made me avoid this video for a while bc it was so glaringly obvious that it was a clickbait. Im only here because TH-cam kept shoving this video into my recommended and I got tired of it

    • @chrissysonicutdrloz
      @chrissysonicutdrloz 11 วันที่ผ่านมา +2

      Title's meant to be clickbait for angry UT fans looking for a fight.

    • @Enuocale
      @Enuocale 10 วันที่ผ่านมา

      Hence the issue. It's a clickbait title mostly just saying stuff we already knew.

    • @scizorscyther694
      @scizorscyther694 10 วันที่ผ่านมา +5

      @@Enuocale Opinion moment, most people think the games is amazing, you dont lol. But to be fair there is no game that is for everyone.

    • @Ciopekwah
      @Ciopekwah 2 วันที่ผ่านมา

      @@scizorscyther694 i don't think they meant to diss the game, they (maybe) thought that undertale having funi coding practices is common knowledge :P (especially thanks to the piratesoftware short that got quite popular recently)

  • @SirRyus348
    @SirRyus348 15 วันที่ผ่านมา +25

    Robtop is hiding under his desk begging not to be found after this video came out...

    • @TrulyAtrocious
      @TrulyAtrocious 3 วันที่ผ่านมา +1

      The twd video essay:

  • @itsskatenow876
    @itsskatenow876 15 วันที่ผ่านมา +6

    7:38 deltarune chapter 1: 😰

  • @CrownedComet
    @CrownedComet 16 วันที่ผ่านมา +87

    the thing holding it all together is some tape and DETERMINATION

    • @BollesMessesWithAi
      @BollesMessesWithAi 10 วันที่ผ่านมา +1

      And Papyrus‘ spaghetti of course

  • @leo5907
    @leo5907 16 วันที่ผ่านมา +343

    -It works?
    -yes...
    -so?

    • @MarcosAlexandre-no3qx
      @MarcosAlexandre-no3qx 16 วันที่ผ่านมา +34

      programmer philosophy 101.

    • @tiqosc1809
      @tiqosc1809 15 วันที่ผ่านมา +7

      Watch it bite your ass one year later​@@MarcosAlexandre-no3qx

    • @ee-zae
      @ee-zae 15 วันที่ผ่านมา +8

      Look at Yandere Dev and say that again

    • @lobotomy_archive
      @lobotomy_archive 15 วันที่ผ่านมา +26

      ​​@@ee-zae unlike the 5k polygon toothbrush game, Undertale works just fine

    • @leo5907
      @leo5907 15 วันที่ผ่านมา +6

      @@ee-zae 2 words
      "it works?"

  • @agent5981
    @agent5981 15 วันที่ผ่านมา +10

    1:17 Thankfully this only happens in an old version, the steam version just has niko confused when you relog into the game

  • @bobbiejoringulet5040
    @bobbiejoringulet5040 16 วันที่ผ่านมา +10

    Remember kids, you dont have to be good, just good enough

    • @Cryonator_932
      @Cryonator_932 14 วันที่ผ่านมา

      This doesn't make any sense

    • @Cryonator_932
      @Cryonator_932 14 วันที่ผ่านมา

      This doesn't make any sense

    • @birdmoney
      @birdmoney 12 วันที่ผ่านมา +1

      True that

  • @hoTube.
    @hoTube. 16 วันที่ผ่านมา +1275

    I know you are going for a rage bait title but I strongly recommend you to change it. You don't want to meet a certain side of the fandom

    • @THGMR-ox7sd
      @THGMR-ox7sd 16 วันที่ผ่านมา +139

      Exactly. Why rage bait? Doesn’t end well usually.

    • @thistletea
      @thistletea 16 วันที่ผ่านมา +66

      and this one's especially too strong that even people outside the fandom to get startled ngl

    • @krys7643
      @krys7643 16 วันที่ผ่านมา +100

      @@THGMR-ox7sdit gets views, let’s be honest we all clicked because of the title

    • @Kosta991
      @Kosta991 16 วันที่ผ่านมา +16

      The game is like 10 years old I don't think those kinda people are around anymore

    • @theoriginal____starwalker
      @theoriginal____starwalker 16 วันที่ผ่านมา +30

      @@Kosta991 i love how that age's a year away from not being a hyperbole

  • @legendgames128
    @legendgames128 16 วันที่ผ่านมา +42

    More accurate, and less clickbaity to say "Undertale is a horribly coded game" because everyone either knows that's true or would be interested to learn more about. (As a modder, it _is_ questionably programmed... Well, at least I was able to make plenty of progress on my Bug Fables mod of Undertale!)

    • @Swuh
      @Swuh 14 วันที่ผ่านมา +2

      Bug fables mentioned 🗣️🗣️🔥🔥🔥🔥

  • @GameMakerEngine
    @GameMakerEngine 13 วันที่ผ่านมา +3

    Real. You ain't gotta code good to make a 10/10 all-timer. Make games!

  • @ram-1919
    @ram-1919 15 วันที่ผ่านมา +8

    4:30 Excuse me, but isn't switch statement very efficient so it will jump into a certain place in a constant time no matter how many cases there are?
    From what I have seen in this video, I guess dialogs in the game work in a way that when an event that causes a dialog happens, the event asks a global switch statement to handle a number the event was given in advance. For example, the player hits an object, so the object requests the global switch statement to handle the object's pre-made number.
    In such a way the dialog shouldn't be inefficient, am I wrong?

  • @T0B3573R
    @T0B3573R 16 วันที่ผ่านมา +28

    Yeah, Undertale is a cheap game. But it’s not cheap in its heart, literally. So much will and emotion is put into every corner of it. Honestly, it being so simple in its controls helps it’s worth blossom MORE, because the game is about subversive storytelling. It’s saying that beauty can be found in anything, and in anyone. And it’s up to you to give it that chance, and you do that so many times in the game that it eventually feels instinctual to the player. It gives someone good values without them even knowing it.

    • @a-s-greig
      @a-s-greig 9 วันที่ผ่านมา +2

      "Undertale" (and by extension, what it says about Fox) is the _Ratatouille_ of indie games.
      "A great artist can come from anywhere."

  • @ZipplyZane
    @ZipplyZane 16 วันที่ผ่านมา +215

    I disagree about the illusion of choice. When done correctly, it's a very useful tool that gives the player some sense of agency without spiraling off exponentially with every decision made. Plus having multiple paths to the same outcome is just realistic.
    Plus all you need to do is throw in some real choices, and then now the player doesn't know if the choice will matter or not.
    You do want a common experience between players. Not exactly the same experience, but they need to feel like they're playing the same game. And, for completionists, it needs to achievable to see all the content.

    • @ShrekPNG
      @ShrekPNG 15 วันที่ผ่านมา +20

      I think that's what Toby wants to do with Deltarune, since, you know, your choices don't matter. The last chapter will probably happen during the roaring, since I can't imagine any possible outcome of snowgrave

    • @LilacMonarch
      @LilacMonarch 15 วันที่ผ่านมา +17

      I actually really like when this is done in a way where the choices lead to very different dialog/scenes that eventually lead to the same outcome. Even if the overall story is the same, it feels unique enough to have a new experience

    • @NihongoWakannai
      @NihongoWakannai 14 วันที่ผ่านมา +8

      The main problem with illusion of choice is when there's literally zero depth to it. Instead of adding flavor it just brings extra attention to the fact that you have no agency.
      At least give *some* detour before joining back to the main route instead of "yes/no" ">no" "haha you don't mean that" "yes/no"

  • @adriabama06
    @adriabama06 13 วันที่ผ่านมา +7

    4:51 As far as I know, using switch is faster than using if, yes, the code reads worse, but internally the compiler makes optimizations that make it much faster, using a CSV you first have to read the file and I suppose you will load it in a map, which I think is a little slower than a defined switch, although they are small things that practically do not affect the performance of the game.

  • @TheUnexpected6
    @TheUnexpected6 12 วันที่ผ่านมา +1

    Loved this video essay, if you make more of these trust that I'll be watching the whole way through. Super comfy watch, intriguing and informative. Earned a sub, guud shit.

  • @genericu2
    @genericu2 16 วันที่ผ่านมา +46

    I saw "Dev" in your name and immediately knew it was going to be about the code lol

  • @e4gyofficial
    @e4gyofficial 16 วันที่ผ่านมา +220

    "Undertale is a horribly coded game" wouldn't hit as hard as written

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +109

      YEAH that's what I'm sayiiiin man but hey, I do feel bad for possibly clickbaiting people D:

    • @AcrylicThePartygoer
      @AcrylicThePartygoer 16 วันที่ผ่านมา +39

      @@JuniperDev you clickbaited me
      i legit thought you were gonna hate on Undertale as a whole

    • @sociallyineptsnapper
      @sociallyineptsnapper 16 วันที่ผ่านมา +29

      @@JuniperDevyou should change the title if you feel bad :/.

    • @1th_to_comment.
      @1th_to_comment. 16 วันที่ผ่านมา +11

      ​@@JuniperDev I was already loading my dislike shotgun

    • @LucasMiddleNameandLastname22
      @LucasMiddleNameandLastname22 16 วันที่ผ่านมา +2

      @@1th_to_comment. NOT THE DISLIKE SHOTGUN-

  • @Shepe1304
    @Shepe1304 14 วันที่ผ่านมา +1

    Super well-made! This video got me to subscribe. Looking for more of your content!

  • @BucketoBirds
    @BucketoBirds 10 วันที่ผ่านมา +2

    this is the same guy who wrote and sang a song about a 13 year old boy giving birth to his best friend. and it's an amazing song.

  • @dracobot1223
    @dracobot1223 16 วันที่ผ่านมา +72

    I feel the need to clarify that larger switch statements do NOT impact performance. No matter how large the switch statement is, it will always take the same amount of time for the game to figure out which set of instructions need to be referred to -- effectively, they are the O(1) alternative to having a bunch of separate if statements.
    I will agree, Toby's method of handling dialogue events may seem kind of odd, but ultimately it looks more like a preferential thing to me. It seems like he was more fond of keeping everything in one place so that he could refer to different in-game events easier, instead of having to look in multiple different places around the game. That's just what I personally believe, though.

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +23

      @@dracobot1223 My understanding is that the operating time depends on the compiler; you are correct that many languages do port those statements into a jump table automatically, making it o(1), but not all do. So without optimization generally o(n). And if it's thousands of cases, that optimization may be a binary search, so logn.
      I could definitely do some more thinking about that one and you definitely got me double checking. I appreciate your comment! 🍃

    • @santania4719
      @santania4719 16 วันที่ผ่านมา +4

      @@JuniperDev I think the main problem is even worse case scenario the switch statement is still faster than loading and processing a csv file.

    • @rz2374
      @rz2374 16 วันที่ผ่านมา +7

      On a good compiler, you would be correct, but gamemaker studio uses an interpreted language. It's proprietary, so you can't know for certain but it probably does not do many optimisations, so it will still be O(n). In the end, it doesn't matter since computers are fast enough that you can do thousands of comparisons per second. I just checked in python, known for being slow, and it does 1,000,000 comparisons in 43 ms.

    • @flameofthephoenix8395
      @flameofthephoenix8395 16 วันที่ผ่านมา

      @@santania4719 Worst case scenario you need to write your own jump table and an interpreter so you can read the instructions that you're jumping to.
      Whoops! I meant to reply to someone else, still should show for everybody I think, but sorry that it looks like I'm replying to your entirely different comment.

    • @dracobot1223
      @dracobot1223 16 วันที่ผ่านมา +1

      @@JuniperDev Interestingly, I've just learned that switch statements in GameMaker may have not always compiled the same way. I remember getting an error when attempting to supply a non-constant in the case argument field, which led me to believe that switch statements were compiled as jump tables. It seems that this is no longer the case..?
      I'm not fully certain what this means in the context of the version of GameMaker that Toby used, either.
      For now I will say that I may have been the one spreading misinformation here, LOL.

  • @SoftTehCustomer
    @SoftTehCustomer 16 วันที่ผ่านมา +88

    If you think Undertale's dialogue being one giant switch statement is bad, look at VVVVVV. %90 of THE GAME (yes, the ENTIRE game) is one giant switch case statement

    • @minestar2247
      @minestar2247 16 วันที่ผ่านมา +9

      WHAT

    • @AldinRamic
      @AldinRamic 16 วันที่ผ่านมา +5

      ​@@minestar2247I've been seeing you a lot recently.
      You're now one of the commenters. I see frequently.
      It's interesting how you keep reading you to comment sections and you keep finding familiar faces.

    • @drimp4551
      @drimp4551 16 วันที่ผ่านมา +3

      ong

    • @KwikBR
      @KwikBR 15 วันที่ผ่านมา +7

      why are the best games so horribly coded

    • @cashhhmere
      @cashhhmere 15 วันที่ผ่านมา +3

      im crying what

  • @NYKevin100
    @NYKevin100 10 วันที่ผ่านมา +2

    4:45 - I'm going to have to disagree with you here.
    Huge switch statements are bad because they are hard to maintain and work with. They are not bad for performance, at least in any halfway decent language. A competently-designed compiler will transform a large switch statement (or lengthy else-if chain) into a lookup table, because that's much more efficient and has the same overall effect. It does probably make performance a little worse, because it increases the size of the binary and might cause paging or cache misses, but that is way cheaper than manually iterating through every case as you suggest it's doing. Also, fetching dialogue from JSON or CSV files will hit the disk, which is quite slow compared to a computed indirect jump.

  • @Willowthetherian-fx5td
    @Willowthetherian-fx5td 14 วันที่ผ่านมา +6

    6:56 omori does that wich is why I wondered why I saw Mari once and not again in a different play through

  • @ZipplyZane
    @ZipplyZane 16 วันที่ผ่านมา +24

    Was he trying to delete the game from the game's own code or something? That's not a great way to do it. Spawn and use a separate process. Write an EXE to temp that kills the game and then deletes it. Or, if you want no traces of the game left, launch the game uninstaller in silent mode, and close out the game before it starts.
    Sure, you can possibly figure out a way to delete the actual files out from under you, if you know how to keep the game in memory while the files are removed. (Or if you're using Linux, which automatically handle this). But it's so easy for things to go wrong. Far better to separate things out.
    Of course, maybe the tool he used can't spawn new processes?

    • @AldinRamic
      @AldinRamic 16 วันที่ผ่านมา +4

      Nice, I was disappointed that there was no explanation for how to be could have done it in the video
      Thank you for this

    • @Mizu2023
      @Mizu2023 15 วันที่ผ่านมา +3

      GameMaker by default won't let you spawn any process you wish to. You can make extensions that let you do that, though

    • @AldinRamic
      @AldinRamic 15 วันที่ผ่านมา

      @@Mizu2023 I didn't know that

    • @vibaj16
      @vibaj16 15 วันที่ผ่านมา +2

      For the code to be running, wouldn't it already be in RAM? So it wouldn't need to worry about that?
      Also, another comment said that he did actually get it to work, but Windows detected it as a virus.

    • @ZipplyZane
      @ZipplyZane 15 วันที่ผ่านมา +4

      @@vibaj16 Like I said, it's not impossible to delete something while it's running. But it can be tricky. Running programs are often locked, to prevent other programs from messing with them while running.
      That idea that it was detected as a virus makes sense. It was trying to delete itself while it was still running. That's something viruses often do, to try and hide themselves.
      I'm not at all saying it can't be done. Just that it's attempting to do it in hard mode.

  • @SkaiaMechanic
    @SkaiaMechanic 16 วันที่ผ่านมา +25

    I remember that instead of figuring out any type of real pathing system or fixing several boundary issues, there's several Out of Bounds areas in Undertale that have "magic glass" (his words) that appears when you or Undyne walk on it. It's like instead of being able to get rid of a bug, he put a clown nose on it instead and said, "See, now it's a funny joke and not irritating at all!" and went to do something else.
    I sometimes wonder how the game would look if he knew beforehand just how popular Undertale would become.

  • @WIPIL69
    @WIPIL69 15 วันที่ผ่านมา +15

    Oh thank god
    I saw the title and I was getting worried I would have to summon Franklin again

    • @Grayson-tk5hn
      @Grayson-tk5hn 14 วันที่ผ่านมา +2

      whos franklin😨

  • @Penguimus
    @Penguimus 12 วันที่ผ่านมา +3

    10:22 - Toby Fox’s 2 favorite words…
    *P E T D O G S*

  • @Yellow_Plus_Red
    @Yellow_Plus_Red 16 วันที่ผ่านมา +118

    While I agree with the overall message of this video, it contains A LOT of misinformation. Here are some critiques:
    1:00
    This code technically works, but it's blocked due to limitations with Game Maker and Windows. While a work-around could be done, it's not really a "coding" issue as much as a computer security one.
    4:56
    This would not slow anything down. In fact, it's the opposite: this is the most performant method possible way you could add dialogue to your game. Parsing an external .csv file or other data structure would take waaaay longer. Having the text embedded directly in the code allows for instant access. It also wouldn't take more memory. I'm guessing you said this under the assumption the hard-coded strings are loaded at runtime, but compiled code stores hardcoded strings directly on the .exe file and only loads them when they are used.
    In addition, we actually don't know how Toby created the switch statement. As far as we know, Toby used a tool like Excel to write all the dialogue, then used a script to convert the data into a GML switch statement. This would actually be the best system by far in terms of writing the dialogue and loading it in game. Which is why I hate how this potentially genius system is treated as some "Toby bad coder" evidence.
    5:10
    Not much to say here other than this tweet seems to imply "if statements" are inherently evil... but they serve a specific function and are required to do most things. A lot of the "if statements" run at the start of the level's creation to set things up, which would not impact the game's performance at all. Once again, this is actually the fastest and most logical way to handle things, not bad at all?
    5:30
    This is a somewhat deceptive critique of Undertale. While technically correct, this could be optimized a tiny bit by moving the Game Maker object instead of recreating it, internally this would make no difference for the renderer. All the font glyphs are preloaded, and the data is re-sent to the GPU even if it's the same Game Maker object. You need to rebuild the text to animate it in other ways due to Game Maker limitations, so this choice probably made the most sense for working with the existing system Toby already had.

    • @santania4719
      @santania4719 16 วันที่ผ่านมา +20

      THISS!! Also the part about the snowballs having vertices is weird because they aren't 3d models. They are sprites and should render like everything else

    • @inkblooded1058
      @inkblooded1058 15 วันที่ผ่านมา +6

      Thanks for saving me a watchthrough! I was wondering where the flawed arguments would come into play.

    • @firuis1
      @firuis1 15 วันที่ผ่านมา +1

      @@santania4719 not sure about how gamemaker studio works, but it could be due to something with the graphics engine - for something like opengl you process vertices first, and it'd be where you apply transformations regarding position, perspective etc. though, that is mainly for 3D graphics and i cant imagine he actually used a proper graphics API to scoot around some snowballs lmao

    • @vibaj16
      @vibaj16 15 วันที่ผ่านมา

      Couldn't the dialogue just be directly in the code that uses it, instead of all being put in that separate file?

    • @firuis1
      @firuis1 15 วันที่ผ่านมา +6

      @@vibaj16 itd be much better for translation and code structure to have dialogue be loaded in fron files. much easier for the translators to change text files and load the appropriate language, and the dialogue could be update more easily (just add a line of text to the file for the dialogue and any conditions etc that happen during the scene).

  • @DukeFishron452
    @DukeFishron452 16 วันที่ผ่านมา +114

    She actually has a point, PUT DOWN THE PITCHFORKS

    • @MichaelJohn-hy6ut
      @MichaelJohn-hy6ut 14 วันที่ผ่านมา +2

      No

    • @radhoodini9802
      @radhoodini9802 13 วันที่ผ่านมา

      ​@@MichaelJohn-hy6utwhy?

    • @DefeatedPwolf55
      @DefeatedPwolf55 13 วันที่ผ่านมา

      Nope! That woman will suffer the CONSEQUENCES.

    • @bobbaseball5182
      @bobbaseball5182 13 วันที่ผ่านมา

      wait why

    • @BollesMessesWithAi
      @BollesMessesWithAi 10 วันที่ผ่านมา

      I won‘t put down my pitchfork, but I‘ll put down my Meowmere

  • @YanntastischGER
    @YanntastischGER 10 วันที่ผ่านมา +3

    Is this what all this "Hopes And Dreams" is all about?

  • @pteroid11
    @pteroid11 15 วันที่ผ่านมา +1

    I’m glad my ‘Had us in the first half’ sense have been honed enough to see the twist in topic coming

  • @SpamtonOf
    @SpamtonOf 16 วันที่ผ่านมา +11

    When I read the title, I knew exactly what you were talking about
    Toby even added a reference to this in Deltarune with the Spaghetti Code item

    • @heheheiamasuperstarwarrior9281
      @heheheiamasuperstarwarrior9281 15 วันที่ผ่านมา +1

      I think the spaghetti code item is a more broad reference to jank programming, spaghetti code is a common term.

    • @caperfilet
      @caperfilet 7 วันที่ผ่านมา

      I think I remember Toby hinting multiple times that coding is a slog for him.

  • @panic488
    @panic488 16 วันที่ผ่านมา +4

    this is honestly extremely encouraging. i want to get into game design but have found it challenging to approach and this video honestly made it seem better. just jump into it, doesnt matter if youre perfect. an unprofessional random guy did it pretty inefficiently and now its one of the most beloved games ever

  • @Penguimus
    @Penguimus 14 วันที่ผ่านมา +3

    This is the equivalent to some stickman carrying a Statue of Liberty.

  • @FAMCHAMP
    @FAMCHAMP 10 วันที่ผ่านมา +1

    This honestly makes me wanna go back and learn more about the backstory to Earthbound and see if there were any similarities in that process as well

  • @stellarx20
    @stellarx20 16 วันที่ผ่านมา +10

    I was honestly hoping this was actually about the story because I wanted to see what unique standpoints would be given for a criticism of the game.

  • @cringecande_9352
    @cringecande_9352 16 วันที่ผ่านมา +9

    Bait used to be believable

  • @jason256-8
    @jason256-8 7 วันที่ผ่านมา +2

    1:01 Regarding that, maybe he should use a list of file names and a loop that goes through all of these file names to shorten the code.

  • @speedyasian330
    @speedyasian330 4 วันที่ผ่านมา +1

    This video is awesome at explaining it, ive heard thor talk about this in particular during a stream and you just summed it up keep making these videos!

    • @speedyasian330
      @speedyasian330 4 วันที่ผ่านมา

      Thor = pirate software

  • @soapgaming4903
    @soapgaming4903 16 วันที่ผ่านมา +59

    The title almost gave me an heart attack lol

  • @kataking8661
    @kataking8661 16 วันที่ผ่านมา +10

    I agree with Mr. Fox on the last bit. Hades is only good because you can pet Cerberus.

  • @noba04
    @noba04 15 วันที่ผ่านมา +7

    So clickbait-y title aside, this video really isn't great because I think you can totally improve and do better. The whole topic of "toby fox = bad programmer" is very disingenuous when you're supposed to be talking about the source code and why its bad / how to do better yet you've only brought up one proper example about its dialogue system. Everything else is just cut content, secrets and features that did not make it in (and some random talk about its art for a minute? why is this relevant?) You've only covered one valid example that goes on for 2 minutes in a 10 minute video, is that not a problem?
    5:45 as far as I know, Toby isn't responsible for most of the website's content as in he most likely never had a hand in its development and couldn't have added that comment there. The website is all done by Fangamer who are also in on Toby's den of secrets, so its a little something they added themselves

  • @poisonshroom64
    @poisonshroom64 11 วันที่ผ่านมา +2

    using a switch statement is literally faster than using a csv. the switch statement is going to be compiled to a vector table and instantly branch to the desired code. A csv has to be loaded and parsed, then do the lookup. Its cleaner, but it is not more efficient.

  • @HoodedOlive
    @HoodedOlive 16 วันที่ผ่านมา +6

    Making a metroidvania right now and writing all of my dialogue in a single array because I'm too lazy to set up a json. So I can sympathize with Toby Fox.

  • @invalid_user_handle
    @invalid_user_handle 15 วันที่ผ่านมา +4

    5:30
    Ah, the classic "I could program this object to be able to move with another object and spend hours debugging that, or I can fake the same thing through weaponized code jank because this is literally the only time I need it to move like this".

  • @tangerchef6662
    @tangerchef6662 13 วันที่ผ่านมา +2

    Understanding how really, really big games has a lot of kludge and are made in a not-so-professsional way encourages me to keep programming

  • @garfocusalternate
    @garfocusalternate 13 วันที่ผ่านมา +1

    I realized this when I started developing in Game Maker and noticed Undertale had a walking glitch that took me like thirty seconds to fix.

  • @insertnamehere1398
    @insertnamehere1398 16 วันที่ผ่านมา +40

    Undertale has spaghetti code... boom. the title doesn't trigger my fight or flight response

  • @nite637
    @nite637 15 วันที่ผ่านมา +36

    i feel liek a better title would be "undertale is a horrible coded game" before people start jumping you??

    • @the_seer_0421
      @the_seer_0421 15 วันที่ผ่านมา +11

      Gotta get people to click somehow

    • @lavendermoon5486
      @lavendermoon5486 12 วันที่ผ่านมา +1

      @@the_seer_0421 fr lmao i personally think it's genius

  • @Lftwngs
    @Lftwngs 15 วันที่ผ่านมา +2

    The title scared me for a second but great video!

  • @lrmclinn
    @lrmclinn 5 วันที่ผ่านมา +1

    I'm so glad they changed that for the oneshot for steam so people could actually see the story they don't give any information that closing the game kills the kid

  • @Bluehawk2008
    @Bluehawk2008 16 วันที่ผ่านมา +9

    All these commentators are like "thank god you didn't talk shit about the dialogue or characters!" and here I am disappointed that this video is only about code.

    • @JuniperDev
      @JuniperDev  16 วันที่ผ่านมา +3

      @@Bluehawk2008 HAHA I bet you can find critiques out there. I did enjoy the game but I also see some flaws as well. Thinking of making a "Everything I'd change about xyz" for various games

    • @danielferrovias
      @danielferrovias 14 วันที่ผ่านมา +2

      Can i be honest with you... The game is kinda eh... I preffer deltarune

  • @crumpscrumbs
    @crumpscrumbs 16 วันที่ผ่านมา +4

    2:13 This Steam Thread was surprisingly tame. Why use this as an example of them being horrible? Lord knows you have PLENTY of choices in that regard.

  • @sophiedeergirl
    @sophiedeergirl 15 วันที่ผ่านมา +1

    Correction: Only all of the text from the first area, the ACT menu options, and the dialogue that has "choices" in it is in the file you're referring to.
    It's also a switch statement which would probably be a-okay in terms of performance to have all the dialogue in if it were any other programming language, but switch statements in Gamemaker are roughly equivilant to "if else" statements or even worse sometimes. I know this because I have tested the performance of switches vs if else statements in Gamemaker, seen the bytecode switches compile to, and have also seen this dialogue file.

  • @justyourfriendlyneighborho903
    @justyourfriendlyneighborho903 13 วันที่ผ่านมา +1

    This is honestly inspiring, even though I don't have plans to seriously dev and release any games I've done stuff for fun and I always feel anxious about how bad my code must be because I really only know the basics and know nothing about optimization. Really inspiring knowing that one of the most beloved games is awfully coded.

    • @birdmoney
      @birdmoney 12 วันที่ผ่านมา

      Don't focus on memorizing stuff. It's all written down for you, and programming languages evolve and change all the time.
      There's always a more efficient way to write something.
      I'd just focus programming. Have your manual next to you, and have Stack Overflow and Reddit open.

  • @MKG-2033
    @MKG-2033 16 วันที่ผ่านมา +16

    Everything from its programming to the music to the dialogue was unorthodox, that’s what makes undertale so great. Toby went and did everything you aren’t supposed to do with a game, especially something like RPGs and made it into a game and IT WORKED.

  • @cooleecoolee9504
    @cooleecoolee9504 15 วันที่ผ่านมา +3

    "Not yet ferb!"

  • @abhikergaming7783
    @abhikergaming7783 15 วันที่ผ่านมา

    Ngl this video was awesome to watch, and I learned some new stuff about Undertale that I never knew before so thank you for making this video it was really good!!!

  • @charuseTV
    @charuseTV 8 วันที่ผ่านมา +1

    Ive been wanting to see a video on this since I saw PirateSoftware making a short on all the text being in a single switch statement

  • @KatelynS0209
    @KatelynS0209 15 วันที่ผ่านมา +4

    I've heard that Toby was inspired by the Shin Megami Tensei series, it's where he got the idea for the talking to enemies especially, and that series is also has a good amount of code fuckery like accidentally making a boss a debug enemy with only 2 attacks, having a stat that does almost nothing, having magic damage thst decreases as you level, forgetting to compress layouts and having an underflow glitch where you can't increase your agility past like 27

    • @prismavoid3764
      @prismavoid3764 13 วันที่ผ่านมา

      Toby's other major gamedev experience before Undertale was the Halloween Hack, which is made on Earthbound, a game infamous for its horrific code. I can't include links in youtube comments, but if you're interested, look if you can find Mato's article about how the dialog system works in Earthbound, it's absolutely bonkers.

  • @dre_rona
    @dre_rona 16 วันที่ผ่านมา +4

    I ascended reality when I went from programming everything as an if statement to programming everything as script_execute(asset_get_index("ScriptName"))

    • @vibaj16
      @vibaj16 15 วันที่ผ่านมา

      i still put everything in a single script

  • @cptnqusr
    @cptnqusr 14 วันที่ผ่านมา +1

    i gasped at the dialogue being one if statement, oh my god

    • @crypt5129
      @crypt5129 13 วันที่ผ่านมา

      Thing is, it's not even true

  • @ilikecats24-ct5nx
    @ilikecats24-ct5nx 11 วันที่ผ่านมา

    I've been planning to make a specific game for half of my life, and gamemaker was really the only option i saw for me, it looks really convinient

  • @mintx1720
    @mintx1720 15 วันที่ผ่านมา +3

    Why on earth do people think switch for dialogue is slow?
    It's literally supposed to be faster than loading text from a disk and using a hashmap for dispatch.

    • @Veylon
      @Veylon 14 วันที่ผ่านมา +1

      Because most coders don't think about what the processor does to do to make their program happen. It's ugly so it's bad, and because it's bad it must be slow.

  • @shavy7734
    @shavy7734 6 วันที่ผ่านมา +3

    Came here to see this vid get clowned on. Stayed when it was actually ballin.

  • @Solesteam
    @Solesteam 9 วันที่ผ่านมา +1

    8:18 Calling game maker free nowadays is like calling mushrooms a fruit.
    You can make web based games but that's it. They removed free Windows game development. That's paywall content unless you have the old version unlocked and installed before the switch.