My First Test Level in Godot (GDScript Edition)

Поділитися
Вставка
  • Опубліковано 29 тра 2024
  • In this video, I walk you through my experience building a test level from scratch, utilising pre-existing assets. Be prepared to see me fail a LOT.
    Hi, and welcome to The Infinite Inkwell. I’m Lewis, and I’m on a storytelling adventure, exploring and experimenting with new ways to tell stories. My first storytelling escapade will be in the form of a video game.
    The tool I use for all my notes, including all of the prep I do for these videos is called Notion.
    www.notion.so
    Chapters:
    0:00 Tease
    Intro
    01:05 Recap
    01:19 My Experience with Godot
    02:13 Failure begins
    03:22 Failure continues
    07:01 Y Axis WHY?
    08:33 Demoing my level
    15:16 Learnings from the level build
    19:02 Outro
    Resources I've used on top of my original learning:
    This one was awesome!!!!
    • How to make an ARPG in...
    • The SIMPLEST WAY to Ch...
    • Godot 4: Switching Lev...
    • Full Guide To 2D Colli...
    • How to Make Collectabl...
    • Godot 4 Platformer Tut...

КОМЕНТАРІ • 78

  • @Creationkitnz
    @Creationkitnz Місяць тому +10

    Appreciate your transparency with your game development journey, this is honestly what game dev consistently feels like especially for me! A consistent cycle of making and breaking things till I’m forced to truly know every single aspect of the engine, your not alone 😂🙏🏾

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому +1

      Thanks for watching. I'm glad it felt relatable and hopefully slightly validating 😂 It did for me, hearing this is something that other people experience is incredibly reassuring.
      I think the make it, break it, try and fix it cycle is good though. You learn so much and I'm hoping the engine I end up settling with will mean there's a lot of that to come. Thanks for sharing your experience of game dev.

    • @user-px5et8df6n
      @user-px5et8df6n 24 дні тому

      It does help to understand game loops and what all is required. Back before these engines you had to write all the code for handling the game loop yourself, and this actually gave you a deeper understanding of what all is going on. Nowadays with these engines a lot of that is hidden away and can be a problem trying to get things right so they all work as you expect. It is honestly pretty simple, though. Probably worth going through a tutorial to make a game in python using pygame. You'll learn about the game loop, about probably about delta time and what that's all about, etc. Could help you be more solid in your understanding of how game engines work behind the scenes.

  • @krank23
    @krank23 Місяць тому +5

    Imagine my confusion, then - I first dealt with coordinates in a graphics library in… Turbo Pascal, possibly. Then in level editors for Doom, and then Quake. And THEN I got to the coordinate systems used in mathematics. So to me, the Y positive = down is the "real world", the default, the one my mind is basically configured for… =) I recognize your confusion! But I think it's good to exercise your brain this way, learning to reorient and question things and be flexible…

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  23 дні тому +1

      It's great to hear that experience coming the other way to the X/Y axis issue. My brain is enjoying the exercise. Thanks for sharing your experience!

  • @Kolbiathan
    @Kolbiathan Місяць тому +4

    Think of it this way with X & Y values. A screen's top left corner is the 0,0 point, and a screen displays they same way we read text in the west (left to right, top to bottom) x+ makes sense (left to right) but y+ going up doesn't because there's no screen space above the left corner, so y+ should go down (top to bottom)
    EDIT: Also the tile map collision is generally the intended way to do the collision you want AFIAK. That's why it's included in the tilemap, that way you don't need a separate node.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      That actually does make sense! Thanks
      Thanks for this, that's super useful. I thought I was making a mistake. I guess it's just that there are multiple ways to do things in the engine. But if it turns out I did things the right way, then that's a win!

    • @antonm_
      @antonm_ 22 дні тому

      @@TheInfiniteInkwell Don't throw away your mental model though. The moment you step into 3D, your mental model does fit wherein +Y goes up, -Y goes down from the origin. Of course now you have to deal with the Z axis and projections.
      As mentioned, it makes sense for Godot to go this route because in 2D games, it makes sense to align with how the screen works. It is as if you are actually placing stickers onto a screen. Whereas for 3D, you're screen acts more like a window and you're looking from inside your room towards the outside world (where you are sitting and the direction you are looking at greatly affects what you see onscreen + it also matters where objects are placed).

    • @antonm_
      @antonm_ 22 дні тому +1

      @@TheInfiniteInkwell One more thing though is that, as you progress with your journey, you'll eventually understand that all this is just convention. The reason why the origin (0,0) is at the top left, is simply because of where the "camera" is situated BY DEFAULT. The moment you utilize Cameras, you'll have full control over this.

  • @map-reduce
    @map-reduce 29 днів тому +4

    You're correct that the Y axis inversion comes from raster displays drawing from top to bottom. A suggestion that might help your brain "disconnect" from your math background is to think about 2D display coordinates as rows and columns, like a spreadsheet or a printed page. Rows go down the page. Then, make sure you're using the Vector constants UP and DOWN rather than defining the values yourself when doing calculations and this will deal with the "backwardness" for you. Oh, and just wait until you get in to 3D and you have to deal with handedness, winding, and what direction various tools think Z is :D Anyway, enjoyed your video, it was well edited and useful. Keep it up!

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Yeah that's a good idea, that disconnect will be a sensible thing to do. It almost reminds me of when Will Smith turns the directional instructions upside down in Independence Day, after trying what he expected and it all going wrong.
      Oh my, I hadn't even entertained 3D yet 😬 It'll be fine. Wait... what direction is Z? I know it's the third dimension but surely there's industry standards on that one?
      Thank you for your comment and your kind words. I'm looking forward to making the next one...

  • @bradleywood1984
    @bradleywood1984 Місяць тому +4

    The struggle is real. You're learning and progress comes in spurts and fits my man. You've earned a sub.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Thanks so much! It's definitely a lot of blank faces and struggle, then sudden a whole piece works and I've learnt a boatload. Welcome on the journey - happy to have you here 🤓

  • @aussiescorner3954
    @aussiescorner3954 Місяць тому +4

    sadly getting into game dev there is so much that can and will go wrong in such weird ways. It is extremely frustrating when you bang your head against the keyboard until by some random chance you hit the right key and fix a bug. What I usually do in these situations is work on a different project all together, or a different part of the current project. Starting over is a pain but sometimes as you have seen, necessary. But then once you feel more comfortable go back and step through your project step by step and see if you can find the bug.
    However you are doing good in my opinion, just remember you are learning multiple different skill sets to be able to create games and it is hard at times. But take a breather when needed and just keep creating and you will keep learning.

    • @aussiescorner3954
      @aussiescorner3954 Місяць тому +1

      Also everyone's journey is different but if you are wanting a language that isn't specific to godot to use in godot, I recommend C# over C++ just because it's a bit easier to understand then C++ and if you are also planning to try out Unity in the future just to compare that's what it uses.
      But again everyone's journey is obviously different so whatever route you choose I wish you luck.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      If I'm honest I think this is why people start with the best of intentions and walk away part way through a project. It is demotivating. You are completely right though, being methodical about it will only come with time and experience. It's not an easy thing so you have to be patient. I did learn that walking away and coming back again after getting annoyed works well for me. I do it when I play games too. Keep hitting a brick wall, turn if off come back later, do it first time - which is actually what happened here.
      Thank you so much for your kind words and support, it's incredibly nice of you. I'm actually looking at taking a breather from the technical side pretty soon, which I think I'm really looking forward to.

  • @IRDazza
    @IRDazza 28 днів тому +3

    I spent multiple 100's of hours on a game to be told it was bad. SO, I did what many do. I quit.! I quit so bad to the point of deleting backups, notes, all code, all tests etc etc etc. Even the scribble notes were all destoryed.
    I regret that now, but TOO LATE.
    Its good to see people get arounfd these obsticles. Keep it up/

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      I'm really sorry to hear that was your experience. It's never too late to go back and start learning again and creating something awesome. I wouldn't worry about what others think, it's about what you like. There will be someone out there that will enjoy what you create, there always is, the internet is a huge place with all sorts of players in it, and a very welcoming indie scene. Thank you for your support.

  • @ghostradiogames
    @ghostradiogames 29 днів тому +2

    glad to see a new gamedev working through things. Good luck!

  • @m128jg
    @m128jg 29 днів тому +2

    Before I started trying out Godot, I spent some time learning an open framework called SFML and C++. It's very doable and the frustration level isn't that far off from your experience learning GDScript.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому +1

      That is interesting, thank you. I will check out SFML. Did you already know C++ when you picked it up?

  • @khairulhamdan762
    @khairulhamdan762 29 днів тому +4

    Solid start!
    Honestly GDScript is the best way to go when you start as it is very simple in its syntax and easy to itterate. C# is faster but unless you are doing something resource intensive, it isn't really needed.
    Also I noticed that your tree collision shapes might not be alligned correctly (too far to the left).

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому +1

      Thank you! I think GDS's got a lot of potential for me because it is simple as you say. I will go and have a look at that tree collision, thanks. I think I'll be more careful when it comes to the final title I'm building.

  • @LukeDrumm
    @LukeDrumm 29 днів тому +5

    This might be a good time to get started with source control so that you can potentially save yourself from complete rebuilds and have some extra options when it comes to debugging.
    Side note: A large proportion of software development is unfortunately debugging. Book authors get "burdened " with editing. Software developers get "burdened" with debugging.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Yeah source control is going to be a big thing. I recently did some digging with that. I'm used to my devs at work talking about GitHub all the time for it. I need to go and learn about it in relation to game dev. If you've got any suggestions I'd appreciate it.
      I think I'm kinda ok with debugging being a big thing. It'll let me get better and write cleaner simpler code (is my expectation anyway). I'd like to try and do it as I go, but I think that could be a challenge. I may make a video on how I'm going to manage that in the future.
      Thanks for your suggestion on the source control!

  • @Darklingza
    @Darklingza Місяць тому +3

    The screen coordinates are laid out like that because from the beginning of computers and computer graphics in particular, 0, 0 has always been the top left corner of the screen, and coordinates have always been positive offsets from that point. Its not just that it was easy to work with logically, it also reflects how video memory is/was laid out.

    • @bradleywood1984
      @bradleywood1984 Місяць тому +2

      Yeah, unfortunately that is just something you have to live with but you get used to it in Godot.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Learning about the history behind it is fascinating. I think it's just as my noob brain gets used to it, I'll be fine. Thanks for sharing some of the background.

    • @RenderingUser
      @RenderingUser 21 день тому

      its also prettymuch how all computers handle their windows. its why top left corner has priority for opening a window

  • @haroldmcbroom7807
    @haroldmcbroom7807 Місяць тому +2

    I know exactly how you feel. I've been there myself, so many times. My greatest struggle is not from a lack of patience, or laziness, but from an extreme lack of tutorials on how to do things the CORRECT way. Some kiddie out there, creates something, then they start teaching everyone else how do things their "own way", which most often times, more than not, is the "incorrect way". So what I'm stuck with in the end, is some "Frankenstein" hybrid code, I can only "hope" continues to work, until it doesn't. There has to be standard, efficient ways of doing things, than having to watch endless video's for an endless number of ways to do something; especially, when you begin watching one video, and they start using a framework, or asset from a store that you can't get past unless you purchase it.

    • @slesh3752
      @slesh3752 Місяць тому +4

      Surely there's always the most efficent way to coding or making games (or anything really) but suprisingly many sucesfull games don't always have clean code (they don't event need to be indie, even League of Legends, one of the most successful games ever is criticised for having "spaghetti code"). So don't stress to make everything perfect especially when you are learning.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому +1

      It is a little frustrating but I'm hoping as I become more experienced, I'll find my own shortcuts and best practices from utilising a range of sources. I'm trying to focus on more of a test and learn approach with this. I think because I don't have the technical background I kinda have to. I also think you shouldn't be put off by this. It's only Frankenstein code if you have to share it with people. Also it'll only be for the first few games, then you'll start to find your feet, well that's what I've found with a lot of other areas of my life anyway. It just takes time of doing it and doing it, and doing it and doing it. You learn what works best for you. It doesn't matter if it's not perfect for someone else. People will always have different ways of creating things. Just keep doing things that work for you and you'll be fine. Breaking stuff along the way is just a new way of learning. Also a big lesson for me from this single level was that I seriously need regular version control 🤦🏻‍♂️😂

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Couldn't agree more with you @slesh3752 ! From what I understand Undertale is an incredible game but apparently has that exact spaghetti code you mention - which doesn't stop it being enjoyed by most who play it.

    • @haroldmcbroom7807
      @haroldmcbroom7807 25 днів тому

      @@TheInfiniteInkwell I wish you luck.

  • @Hwyadylaw
    @Hwyadylaw 20 днів тому +1

    Even in maths Y+ isn't always "up". The thing is that Y+ for up is just a convention for drawing graphs, there's nothing that inherently makes it more up than Y- or even X+/-.
    Many programs and game engines do use Y+ for up, especially in 3D (Z+ is also fairly common). But (0, 0) being the top-left pixel of digital images is an old convention that still lives on in Godot for example. Even when an app shows you Y+ as up, it eventually has to convert it to Y- before it can be presented on your screen.
    Game engines (and especially their editors and tools) try to make it as fast and easy as possible to get started. But there's still a lot of complexity behind it all, so if something breaks it's going to be very hard to figure out without knowing what's happening behind the scenes. Even experienced programmers who know a system inside out can easily run into bugs that seem to come out of nowhere.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  16 днів тому

      That's completely fair, I think I was looking at it from my relatively limited experience.
      I think the potential of breaking stuff regularly, is why I will need to properly create branches in my code repository, when I create one. Having something like GitHub help me with version control will be so important in making sure I can roll back anything I break, intentionally or not.

  • @kraterkraterton2418
    @kraterkraterton2418 Місяць тому +2

    Am enjoying your channel. Your videos are well laid out in a calm, concise manner and are entertaining. Welcome to the "indy-gamedev journey" and good luck with your endeavors! Now, I am just a "non-professional" hobbyist programmer, but (imo) learning c++ within the context of a scripting solution for a game engine is a mistake. cpp is a beast and it's capabilities are nothing short of incredible. That being said because of all it's miraculous abilities it can get quite complicated and quite confusing for one uninitiated into computer programming.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Thank you, that's very kind. I think that C++ is so powerful and such an unwieldy beast will definitely make it an interesting thing to look at in this regard. I do think I may have to make a difficult decision when I start learning about it. I really value your input, thank you for the advice.

  • @DevJeremi
    @DevJeremi 20 днів тому +2

    This is like developing looks at start, you add some/change some stuff,
    and it breaks some stuff and you don't know way, but then you found why
    and fix it is quite dopamine boost - it can frustrating at start,
    but after some time you do this mistakes less and less.
    About Y Axis, Blender do this yet another way X - is right/left, Y - forward/backward and Z - up/down.
    You don't need C++ to make a game.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  20 днів тому

      Yeah I completely agree, puzzle solving is so rewarding in itself, the dopamine hit will be huge! I'm kind of excited to get to that point, but I think we're a little while off that yet.
      Ha! More ways tools can confuse me with their axes. Thanks for the heads up.
      100% C++ is not the be all and end all. Thanks for your support :)

  • @choitv1281
    @choitv1281 20 днів тому +1

    Hey man, great work, keep it up!
    I get the sense we're about the same age, I started Godot a couple of weeks ago too and are also documenting my journey. Our kind should stick together hahahah

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  20 днів тому +1

      Thanks so much! I checked out your channel. I can see you're another Goblin from the chat who got inspired like I did. There's a lot to be said for community in game dev and learning more generally. Let me know when your next stream is, and I'll try to stop by. 7

  • @kolosso305
    @kolosso305 Місяць тому +4

    You blew up because your presentation style is engaging and your insights are interesting. I wish you well on your learning journey!

  • @RenderingUser
    @RenderingUser 21 день тому +1

    one thing to help with y axis....
    use Vector2.UP or Vector2.DOWN instead of specifying the numbers. you can just use the enums that are alraedy given

  • @stevepine3568
    @stevepine3568 29 днів тому +2

    I'd understand C#, but picking C++ will be quite a pain. I don't think you'd want that for yourself.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Haha, my experience with C++ is my next video I'm filming today, that'll go up Monday.

  • @user-px5et8df6n
    @user-px5et8df6n 24 дні тому +1

    Regarding coordinates, specifically the Y coordinate seeming to be backwards, consider something like Excel. Your rows start with row 1 at the top and increasing as it goes down... We are used to that and that is how screen coordinates work, rather than based on how things work in mathematics. You ran into trouble because you assumed it would be like it works in math. I'll give you this big tip: Beware of your assumptions! Nearly every bug that occurs in your code will be due to some faulty assumption you made along the way.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  23 дні тому

      That's a fantastic tip! I'm trying to be more aware of my assumptions and open my mind to more given how different this is from anything I've done before. Thanks!

    • @user-px5et8df6n
      @user-px5et8df6n 22 дні тому

      @@TheInfiniteInkwell No Problem! Hope you are successful in this journey of game development. It can be tough but I find it worth it.

  • @samistube
    @samistube 25 днів тому +2

    For the whole thing blowing up and you needing to restart: use git! Make small steps, then commit. Then you can snaphot your project back to a working condition, no problem. There is abit of learning to use git, but the payoff is 1000x. For win gui i suggest fork, for vs code and other ides theres plugins

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  23 дні тому

      I really need to take a proper look at versioning. Thanks for the tip on that. I think Git will be a big learning before I start going at my project full time. Thanks for the recommendations and sharing your experience.

    • @samistube
      @samistube 22 дні тому

      @@TheInfiniteInkwell yeah its not too much learning when using a gui, and not do merges or rebases. Just make branches, commit changes, and then browse the history, its all quite simple still

  • @lucdingreville4307
    @lucdingreville4307 24 дні тому +1

    You clearly don't need C++, not even C# (which apparently is supported natively by Godot). Don't waste your time on learning it. I discovered Godot few weeks back and I did pretty much all I wanted with GDscript. I just added some shaders I found online. Btw, shaders are quite fun to play with, you should try. I used it to add fog in my dungeon, to disolve my player, to add flames on torches... And I just tried particles, it's reasonably simple and gives life to the game (for example to add few flies). One minor question/comment: why didn't you enable the h-flip on your character? You could save 3 additional animations. If direction == -1: h-flip = true

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  23 дні тому

      Thanks for sharing there's a lot of helpful stuff in here.
      I've heard shaders can be really powerful, so I'm looking forward to playing with them at some point. I'm looking to add fun to the process, so I will definitely take that advice on board.
      Also the h-flip I didn't know about. I will have to go and read up on it. I didn't know it was a thing, so thank you.

  • @bradleywood1984
    @bradleywood1984 Місяць тому

    Wouldn't using a world boundary (or multiple) allow you to have invisible boundaries on the outside of the level so you didn't have to paint in the rivers along the edges?

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Yeah, so this was a big learning, I think it was weird as a workaround. I will likely have a boundary-wall-esque tile in my TileMap going forward that would be transparent. It was more in this instance where I had a limited TileSet, I just dumped it in as a test more than anything. I only did it because I couldn't work out why the CollisionPolygon2D wouldn't work, which was super weird - that was my original plan. This was an experiment based on something working elsewhere.
      Next time defo going to make it transparent or maybe themed if it makes sense.

  • @iogilarb
    @iogilarb 29 днів тому +1

    i suggest you to make animation with your story.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      Thanks, I'm hoping to be doing that in my next "Chapter", after I've picked an engine, I want to start looking at art, which I'm really looking forward to.

  • @twilightverdict
    @twilightverdict 28 днів тому

    Godot is really designed assbackwards. It has some neat features, I'll give it that, plus it's free, but man... The amount of nesting nodes within nodes within nodes to do some basic stuff is idiotic. In Construct, for example, I can add basic bitch Platformer behavior and tweak settings to prototype quickly, and if I want more refined control, I could use Custom Movement. In Godot, there are basic behaviors, but they're so bare that you have to basically reinvent the wheel every time you make something. It's frustrating because I really like some of Godot's features and the engine in general...

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      That's really interesting to read that. There are elements there I do agree with. I do think that having a more visual way to stack your code and different elements would breakdown the stackable nodes in a much easier way for people new to the platform. I wonder if that's something they'll add in a future update. I think that'll be interesting to discover if I explore it further, how certain elements are more basic than others. I wonder if I'll end up having my own code repos of basic repeatable functions that don't exist in the engine. It could be that some of the exist in some of the community extensions. Definitely something to investigate. It's still a young engine though, so I'm sure it'll come on in leaps and bounds.

    • @RenderingUser
      @RenderingUser 21 день тому

      bro if you dont like nested nodes just make a scene out of it and call it a day. then you wont have to look at the node tree
      also
      "I can add basic bitch Platformer behavior"
      is really bad practice for using a game engine. at that point why not use mario maker to make levels and publish it cause its got everything you need, platforming, tiles, etc...
      and this example is particularly bad given that godot now comes with a template code for a platformer
      like bruh

  • @TheRealStus
    @TheRealStus Місяць тому

    The audio is a bit quiet.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  23 дні тому

      Sorry about this. I have been playing with the recording levels and it should be better in my next video.

  • @MindReforge
    @MindReforge Місяць тому +3

    Не сдавайтесь!

  • @thephilvz
    @thephilvz 8 днів тому +1

    You're taking on game dev like it'a rogue like.... 🤪.... Stick to it and get gud.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  3 дні тому

      Ha never thought of it like that. I thought of it more like TV Pilot season, finding something that I liked that I could go with long term. I think I’m almost ready to settle on one now though.

  • @ksefchik
    @ksefchik Місяць тому

    It’s weird to me that you get tripped up on something as simple as x/y axes. This is something that’s been pretty normal in UI programming for awhile now.

    • @TheInfiniteInkwell
      @TheInfiniteInkwell  26 днів тому

      I think it's because I'm coming in completely fresh to this, with no prior programming knowledge or experience. The closest I've got is some light design stuff with the design platform Figma. It's all a steep learning curve for me. But you're right, it is pretty basic. I think now it's engrained, I'm hoping it will be easier in the future.