I'm making a game in Go... My Experience

Sdílet
Vložit
  • čas přidán 22. 07. 2024
  • I'm making a game in Go... My Experience
    Thanks for watching! Learning Go has been a great experience so far. If you would like to check out what I'm working with, check out the link below:
    Raylib-Go:
    github.com/gen2brain/raylib-go
    Join my Discord:
    / discord
    Support me on Patreon:
    / codingwithsphere
  • Zábava

Komentáře • 145

  • @nicholashendrata
    @nicholashendrata Před měsícem +96

    Yes please! GoLang Game Dev Tutorial Series ftw!

  • @Ahmed-ru6kj
    @Ahmed-ru6kj Před měsícem +23

    GoLang Game Dev Tutorial Series would be awesome

  • @ColinFox
    @ColinFox Před 8 dny +1

    Go has two answers to inheritance: Interfaces and encapsulation. You can define a struct, say "Sprite", and then you can define another struct, say "Player" that contains a Sprite. It inherits all the functionality of a Sprite, but can override functions if necessary. Combined with the heavy leaning on interfaces, and you have similar capabilities to inheritance.

  • @lucasborio4880
    @lucasborio4880 Před 28 dny +3

    Go Game Dev tutorial series would be really appreciated!

  • @brunomello7499
    @brunomello7499 Před 27 dny +2

    yes, please! golang game dev with golang would be something I'd definitely watch

  • @mogurt
    @mogurt Před 29 dny +4

    I'd love to see a Go game dev tutorial. I find building a game is a fun way to learn a new language + always wanted to learn Go!

  • @spodarman3823
    @spodarman3823 Před 28 dny +12

    Yes pls! I definitely want a golang game dev tutorial series. but please also focus on the game architecture aspects of it too and how different problems are tackled in game dev in general. im kinda stuck on collision detection part in a basic little platformer im developing, anyways, great video! love to see people using golang

    • @codingwithsphere
      @codingwithsphere  Před 26 dny +3

      I like to modularize my tutorials to be concept-based as much as possible. I plan on making an RPG tutorial for ebitengine (go's most popular game framework). Even though the game format is different, the collision system for both (AABB and axis aligned tiles) is very similar!

  • @SublimeCS
    @SublimeCS Před měsícem +10

    Yes please on the Ebitengine series! There are very little resources on Go as a game dev language even though it's such a joy to work with. I've been learning Ebitengine these past few days and it's been a blast! So please do!

  • @sameer-fs2ot
    @sameer-fs2ot Před měsícem +14

    most games I make are just that - little things that don't push the boundaries of any device they'll run on. Been toying with raylib-go and wasm4. Honestly I need more Go gamedev! Thanks for sharing :D

  • @ForeverZer0
    @ForeverZer0 Před měsícem +12

    I love Go, and game-dev is my passion, so naturally I also combined these two, but found the language to be a detriment as the game complexity grew. I went a slightly different route of using my own OpenGL/OpenAL/GLFW, bindings instead of raylib, though raylib is essentially a wrapper of those anyways, so a similar experience.
    I found Go was fantastic for 2D, especially with its ease of parsing Tiled (TMX) docs, and a relatively low amount of math. Once I went 3D and started designing a voxel-based Minecraft clone, things started falling apart. The lack of 32-bit float hardware instructions, no way to control alignment of vector types for SIMD, etc. begin to make using Go a slog.
    I have been writing Zig for the past few months, and found to be fantastic for game-dev, might be worth checking out if you are interested.

  • @inhies2560
    @inhies2560 Před 29 dny +2

    Ebitengine gets my vote. Using bindings in Go ruins one of its best features: super-simple cross platform compatibility. Also ebitengine is really great. I’ll also second another commenter and say don’t make a tutorial series but show how you do common things like collision systems or your ECS implementation etc.

  • @pixobit5882
    @pixobit5882 Před měsícem +5

    I'd love to see a tutorial series for developing games with go!

  • @Mikevmaestro
    @Mikevmaestro Před měsícem +3

    I was just thinking about picking up go. Great video!

  • @jakepsy
    @jakepsy Před měsícem +2

    This is great! Subbed for more go content. Thank you for your contribution!

  • @tubbystubby
    @tubbystubby Před 29 dny +1

    Would love to see a game dev series in go with raylib.

  • @cempack
    @cempack Před měsícem +2

    Definitely do it, it would be awesome!

  • @dj.yacine
    @dj.yacine Před měsícem +3

    Great game 😁

  • @misalambasta
    @misalambasta Před měsícem +2

    Waiting for GoLang Game dev tutorial series.
    Subscribed🎉

  • @abhinavadarsh7150
    @abhinavadarsh7150 Před měsícem +1

    Loved the video. I am big fan of golang and its simplicity and performance.
    Would love to see more video on game dev in golang.
    Struct embedding is the way of doing inheritance in golang.

  • @dqrk0
    @dqrk0 Před 24 dny

    yes, we want a game development series, this video was very enjoyable!

  • @voidnatta
    @voidnatta Před měsícem +1

    as someone that want to try Go in the future, this video is really inspiring!

  • @user-ry3ff4cu2z
    @user-ry3ff4cu2z Před 25 dny +1

    8:45 Yes please!

  • @dr4ghs
    @dr4ghs Před měsícem +1

    Ok, now you got me convinced to use Go for some projects. Known about Raylib while playing with the Odin language, didn't know about the Go bindings.

  • @soupnoodles
    @soupnoodles Před 17 dny

    Whoa this was a really high quality video. I sincerely hope it goes viral!
    Golang definitely seems like something I'd like to give a * go * (badum tss) someday, and coming from a Python background it should be a gentle transition hopefully
    The game was really neat too, I'd love to see you develop more games

  • @dragoneatery
    @dragoneatery Před 27 dny

    I would certainly like some Go game development resources. That sounds great.

  • @scottwilliams1902
    @scottwilliams1902 Před měsícem

    Great video. More people should be using Go for games. I played around with game programming with Go for a while. Go is great because it is so immediate. You can just get on with the job. In the end I went with Odin for it's speed and flexibility. Also Odin has Raylib built-in. Go allows inheritance type programming using composition. Also you can perform dynamic dispatch with interfaces.

  • @KTKettler
    @KTKettler Před měsícem

    Would love to see some Go game dev tutorials!

  • @batlin
    @batlin Před 25 dny

    Short and sweet, thanks for that! I also found Go quite idiosyncratic and a bit gauche. But I do like the fast compile times and general practicality of it. You might also like Nim which is a bit cleaner and more concise than Go, although it has some rough edges too. Crystal is another language worth trying out; more OO-ish than Nim (although I don't use OO and especially inheritance as much these days), but much slower to compile than both Nim and Go.

  • @tineocedric
    @tineocedric Před 24 dny

    yes yes yes go games tutorials in ebiten or raylib... please !

  • @runaway09
    @runaway09 Před měsícem +1

    Need the tutorial series!

  • @NicolaasvanderMerwe
    @NicolaasvanderMerwe Před měsícem

    Yes please! Golang gamedev series❤

  • @UmeshSavaliya-kd4yr
    @UmeshSavaliya-kd4yr Před měsícem

    Great video

  • @battesonb
    @battesonb Před měsícem +4

    This is a cool demo! I'm also a fan of the ECS paradigm, but you may have an option that's more similar to your previous flow. Have you come across Go struct emedding? You can do multiple struct embedding if you want to give your structs functionality that matches several interfaces without having to manually implement it several times over. This is still composition instead of inheritance, but that default behaviour is very useful.

    • @codingwithsphere
      @codingwithsphere  Před měsícem +2

      Yes I love struct embedding ! Im using it in this project too

  • @tyreldelaney
    @tyreldelaney Před měsícem

    I'd be interested in watching a go series on gamedev

  • @blindgoofball
    @blindgoofball Před měsícem +5

    I think it's really interesting that you are able to develop a game in go. It was something I looked into briefly, but it didn't really seem possible. Nice job!

  • @felfar197
    @felfar197 Před měsícem

    I'd watch the tutorial series!

  • @meida_oficial
    @meida_oficial Před měsícem

    Finally, someone making games with go

  • @shpleemcgert
    @shpleemcgert Před měsícem

    Damn you’re nuts. I started trying to make a graphics pipeline in Go and got unmotivated by the verbosity. You’re a better man than me.

  • @andriip1667
    @andriip1667 Před měsícem +1

    Yay fellow Golang gamedev enjoyer! Btw i noticed that most of the gamedev community is on the ebiten side

  • @zZGzHD
    @zZGzHD Před měsícem

    I love Go! It's makes my Cnile brain happy.

  • @Jam-ht2ky
    @Jam-ht2ky Před 28 dny

    thats really dope, i also considered golang for game dev, tho I went with unity and c# even tho I don't know any Microsoft lang.

  • @alcb1310
    @alcb1310 Před 28 dny

    Will be expecting the Gola g Game Dev Turorial

  • @twinwassold
    @twinwassold Před měsícem +1

    its kinda insane how underused go is for games

  • @Godot-Game-Dev
    @Godot-Game-Dev Před měsícem

    Very cool!

  • @oglothenerd
    @oglothenerd Před měsícem +2

    Personally, I hate the Go Programming Language... but... it is Turing Complete, so I love seeing cool projects made in it. Good work!

  • @runner989
    @runner989 Před 24 dny

    I would really like an Ebitengine series. Never heard of it until this video.

  • @bionic_batman
    @bionic_batman Před 27 dny

    While Go does not have inheritance (which is imo a plus) there is a feature called struct embedding which can be used instead.
    If you are familiar with debates about inheritance vs composition, Go's approach to solving this is to only allow composition and completely drop support for inheritance

  • @flamendless
    @flamendless Před 28 dny

    Agree. When i open my neovim for a go project, lsp is instant.. unlike in a rust project, i have to wait for a while.

  • @freedomextremist7921
    @freedomextremist7921 Před měsícem

    It doesn't have inheritance but you use composition to archive similar results.

  • @irishbruse
    @irishbruse Před měsícem +1

    You should check out LDtk for your level creation instead of tiled

  • @HassanMohamed-dc3tt
    @HassanMohamed-dc3tt Před 28 dny

    Hello can you please make a video about making games in terms of structure and organization techniques or architecture like ECS and OOP

  • @Vasrias
    @Vasrias Před měsícem

    I briefly looked into game dev with Go, but didn't find good resources. Would be cool to see a tutorial from you.

  • @zelinzky802
    @zelinzky802 Před 28 dny

    I really don’t miss inheritance. You can achieve similar things by the use of composition, embed classes within another. If you have a sprite class and you need your player to be a sprite embed the sprite class within player. Composition > inheritance.

  • @seoulpeterson432
    @seoulpeterson432 Před měsícem

    Can you explain more about the ECS vs OOP? I've got a background in OOP so I understand that fairly well (it definitely has its pros and cons), but I've never heard of ECS before.

  • @ubitubee
    @ubitubee Před 29 dny

    yes, please :)

  • @Palessan69
    @Palessan69 Před 26 dny

    I am learning GO and i want to use it to move my XNA game into it if possible. I think i will try this.

  • @alexandrecosta2567
    @alexandrecosta2567 Před 26 dny

    I've been thinking about developing in golang, game dev tutorials would be really handy!! Erase the first con of golang game dev

  • @baxiry.
    @baxiry. Před měsícem +1

    subscribed

  • @dozn
    @dozn Před měsícem +1

    Definitely Ebitengine, that's what pretty much all released Go games are using, and the main developer is an absolute machine.

  • @exvimmer
    @exvimmer Před měsícem

    In my opinion, Go's best feature is its error handling. I think all new programming languages should start treating errors as values. By the way, Go doesn't have a tuple type, it just returns multiple values like a tuple. If you want to make tutorials, I think Go + raylib would have more educational value. Thanks for this great video. I just subscribed.

    • @codingwithsphere
      @codingwithsphere  Před 29 dny

      Thanks for the response ! I hold go's error handling to high standards because I recently picked up Rust. Compared to most other languages, I much prefer it. It seems like a majority of the comments are requesting the tutorial series be on ebitengine rather than go + raylib, but I'm going to wait and see what the consensus is.

  • @oglothenerd
    @oglothenerd Před měsícem +1

    I love the colors of your game. Are you using a specific color scheme?

  • @spodarman3823
    @spodarman3823 Před 28 dny

    what do you think about the pixel game library in go compared to ebitengine?

  • @litfill54
    @litfill54 Před 5 dny

    lets gooo

  • @annunzarizzle
    @annunzarizzle Před měsícem

    Interested in how to get a Ebitengine project off the ground.

  • @nonefvnfvnjnjnjevjenjvonej3384

    what about null pointer exceptions? isnt that a big problem when you are making games?

  • @aldanasjuan
    @aldanasjuan Před měsícem

    I know you said it's good for small games but I think it'd be cool to see some benchmarking, like how many bullets can it handle or those kind of things. Maybe it's not that bad as we think. Props for going into go for gamedev.

    • @codingwithsphere
      @codingwithsphere  Před měsícem

      Golang is actually really fast. There are a couple benchmarks on youtube already that compare it to C's performance for gamedev

  • @seyproductions
    @seyproductions Před měsícem +1

    procedural programming let's go

  • @r.g.thesecond
    @r.g.thesecond Před měsícem

    I'm doing something similar, though I'm doing a 3D game. I'm also a Go newbie so yeah, CZcams recommendations is creeping me out again. raylib is indeed cool, but as someone more used to pure OpenGL it was a bit awkward to get started. A few opinions regarding go:
    - Oh my god, CGO is a PITA. Doing C/C++ under Windows using MinGW is already prone to breaking, and now add this to the mix... The ONLY reason I chose raylib over what I already knew was because the bindings let you use a DLL instead of compiling and linking it.
    - Very closely related to above, no SQLite in standard library. I don't like using OS filesystem calls, so SQLite was my crutch. There are bindings but I don't want CGO.
    - delve debugger gives me an odd vibe. I'll keep using it and GDB on-and-off but I reckon I might have to use it more if GDB starts misbehaving (common under Windows)
    Looking forward to your release BTW.

  • @MegaAkira18
    @MegaAkira18 Před 12 dny

    please do a golang gamedev tutorial! i need it!

  • @zvk5566
    @zvk5566 Před 25 dny

    Is it possible to port golang/raylib project to Android or XBOX?

  • @proofofze
    @proofofze Před měsícem

    I would love to see something in Ebitengine!
    I myself am also going to take a look at it and start building with it.
    Btw, nice video :)

    • @kreed1415
      @kreed1415 Před měsícem

      Ebiten is cool but very limited and the development is reliant on basically one person. It can't support 3D in any way unfortunately.

    • @proofofze
      @proofofze Před měsícem

      @@kreed1415 I don't think it will ever support it. It aims for 2D only and that's ok

  • @jefferymuter4659
    @jefferymuter4659 Před měsícem

    I have a small Go blog. Also organize for a local DevOps group. I'm making an AR game like Pokemon Go, in Golang, where game objects are bound by long/lat, and I'm doing it in all text so you can play from the terminal.
    Anyways, maybe we should make a Discord for golang game devs and try to organize a Game Jam? Seems like there's some genuine interest. Gotta start making a community for this.

  • @urits3719
    @urits3719 Před 19 dny

    Nice! btw, what vscode theme is this?

  • @BinaryMaestro1
    @BinaryMaestro1 Před měsícem

    try this
    if err := function(); err != nil {
    //handler example:
    return errors.New("error: ", err.Error())
    // or custom response
    } else {
    //continue
    }
    might be a bit easier for error handling the convention behind it is u can return ur own error using errors package
    also i think if u create a struct initial then do this
    func (e *Enemy) name() {
    }
    thats some kind of inheracy

  • @zachend2750
    @zachend2750 Před měsícem

    Yeah I love go but yeah it doesn't have prototyping but that stuff is hard to read anyways. Please make more videos on go

  • @ahmedabuharthieh579
    @ahmedabuharthieh579 Před měsícem

    Can you explain how you integrated the Tiled software with your game? My approach in c was just to read and parse the file manually which was a bit tedious.

    • @codingwithsphere
      @codingwithsphere  Před 29 dny +1

      Tiled comes with an export to JSON option. Golang has a very simple json serialization system built into the standard library, so I decided to go that route

  • @Harald723
    @Harald723 Před měsícem

    I have the exact same experience in GO I mean the exact same and I also want enums and the private and public system that is a litle better...

  • @fottymutunda6320
    @fottymutunda6320 Před 11 dny

    How about using go and godot?

  • @faurametalhead
    @faurametalhead Před 12 dny

    I've never programmed any games. But I'm interested in making a 2D game in Go. But as I've never done it and as I'm alone (I don't have an artist or composer for soundtracks), it's not just a matter of learning a Go library (like Raylib go), I wanted to know what I need to know to be able to make my own complete game besides programming in Go and using something like raylib? What are all the programs you use? (Both for making the pixel arts of the characters, both for the levels). This answer will help me a lot to get started, thank you very much for the influence

  • @ShaneCurtis-nl2ev
    @ShaneCurtis-nl2ev Před 3 dny

    I find the documentation for raylib with go so you end up jhaving to read a ton of c++ and mentally convert it

  • @danielyokoyama3861
    @danielyokoyama3861 Před měsícem

    Raylib golang bindings pls!

  • @jvf890
    @jvf890 Před 29 dny

    The only problem with Go is the CGO performance... so if your game need to manage a lot calls to ABI is just not work very well... but of course it depends of the kind of game...

  • @eleven2435
    @eleven2435 Před 25 dny

    go game tutorial would be nice

  • @Ansino558
    @Ansino558 Před měsícem

    I use monogame, but like the simple art style.

  • @viniciusantonio2253
    @viniciusantonio2253 Před měsícem

    imagine this man meeting OdinLang

  • @watercat1248
    @watercat1248 Před měsícem

    It's the first time heard this code language.

  • @hanna8399
    @hanna8399 Před 26 dny

    Really cool demo! Btw., which app were you using to edit the graphics and creating the scene? (I meant the window shown at 5:39)

  • @ScibbieGames
    @ScibbieGames Před 29 dny

    At first I wasn't a fan of the forced name convention. But I've gotten to realise that it's great to have just about everything following predefined rules. It removes a lot of friction and it eliminates all discussion about coding style, which is a huge plus.

    • @ScibbieGames
      @ScibbieGames Před 29 dny

      As far as the garbage collector goes, there's also an arena allocator now which can help a lot with that, if you're allocating loads of data.

    • @codingwithsphere
      @codingwithsphere  Před 29 dny

      @@ScibbieGames I did not know about this thank you!

  • @TedoHamTole
    @TedoHamTole Před měsícem

    yes please game tutorial

  • @corbingrossen
    @corbingrossen Před měsícem

    Either I'm getting into go game dev right at the time the community around it is building up or I'm just being recommended more and more videos of others doing the same. I have no idea, motivitating though.

  • @liuti_dev
    @liuti_dev Před měsícem +1

    go is amazing
    i am using godot and GOD i wish had go by default

  • @kreed1415
    @kreed1415 Před měsícem +1

    So I'm in a very similar boat to you. The one thing that prevents me from getting involved with gamedev in Go is the fact that porting to console is either not possible or a huge pain. There is a game engine called Ebiten that has shipped Nintendo Switch games, however it's a custom system only for that engine and it supports only 2D with no shaders. If you happen to know that there is a solution to this, I would love to see it.

    • @codingwithsphere
      @codingwithsphere  Před měsícem

      ebitengine is fully cross platform for desktop, mobile, and the switch. It also does support shaders and 3d (even if it doesn't advertise it).

  • @madsxcva
    @madsxcva Před měsícem

    pretty sure godot also has bindings for golang

  • @smc_onetwo
    @smc_onetwo Před měsícem

    great review! was C the first language you learned?

    • @codingwithsphere
      @codingwithsphere  Před měsícem

      Thanks ! My first language was Java, then python, then c/c++

  • @onderpala8908
    @onderpala8908 Před 18 dny

    maybe you can create same game with c++ and compare them

  • @therootsuperuser
    @therootsuperuser Před měsícem

    How much time did you took to complete your game from beginning to now

    • @codingwithsphere
      @codingwithsphere  Před měsícem +1

      I try to spend about 1-2 hours per day on the project. I would say maybe 20 hours total

  • @ar_xiv
    @ar_xiv Před 26 dny

    Your usage of Go sounds a bit like D. If you want to check out another (optionally) GC'd, compiled language, D is super solid, and I think won't have some of the sticking points of Go. I find it odd that D isn't so popular because it seems to fill many niches. perhaps too many!
    I'm giving Raylib + Odin a shot right now. No GC there, but Odin has really clever ways of making that approachable.

  • @neoplumes
    @neoplumes Před měsícem

    Is that catppuccin frappe?

  • @slicelfer9675
    @slicelfer9675 Před 28 dny

    Tutorials would be nice >~

  • @user-ry3ff4cu2z
    @user-ry3ff4cu2z Před 25 dny

    raylib