I'm making a game in Go... My Experience
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
Yes please! GoLang Game Dev Tutorial Series ftw!
GoLang Game Dev Tutorial Series would be awesome
Seconded!
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.
Go Game Dev tutorial series would be really appreciated!
yes, please! golang game dev with golang would be something I'd definitely watch
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!
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
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!
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!
signed
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
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.
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.
I'd love to see a tutorial series for developing games with go!
I was just thinking about picking up go. Great video!
This is great! Subbed for more go content. Thank you for your contribution!
Would love to see a game dev series in go with raylib.
Definitely do it, it would be awesome!
Great game 😁
Waiting for GoLang Game dev tutorial series.
Subscribed🎉
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.
yes, we want a game development series, this video was very enjoyable!
as someone that want to try Go in the future, this video is really inspiring!
8:45 Yes please!
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.
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
I would certainly like some Go game development resources. That sounds great.
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.
Would love to see some Go game dev tutorials!
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.
yes yes yes go games tutorials in ebiten or raylib... please !
Need the tutorial series!
Yes please! Golang gamedev series❤
Great video
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.
Yes I love struct embedding ! Im using it in this project too
I'd be interested in watching a go series on gamedev
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!
I'd watch the tutorial series!
Finally, someone making games with go
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.
Yay fellow Golang gamedev enjoyer! Btw i noticed that most of the gamedev community is on the ebiten side
I love Go! It's makes my Cnile brain happy.
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.
Will be expecting the Gola g Game Dev Turorial
its kinda insane how underused go is for games
Very cool!
Personally, I hate the Go Programming Language... but... it is Turing Complete, so I love seeing cool projects made in it. Good work!
I would really like an Ebitengine series. Never heard of it until this video.
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
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.
It doesn't have inheritance but you use composition to archive similar results.
You should check out LDtk for your level creation instead of tiled
Hello can you please make a video about making games in terms of structure and organization techniques or architecture like ECS and OOP
I briefly looked into game dev with Go, but didn't find good resources. Would be cool to see a tutorial from you.
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.
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.
yes, please :)
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.
I've been thinking about developing in golang, game dev tutorials would be really handy!! Erase the first con of golang game dev
subscribed
Definitely Ebitengine, that's what pretty much all released Go games are using, and the main developer is an absolute machine.
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.
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.
I love the colors of your game. Are you using a specific color scheme?
what do you think about the pixel game library in go compared to ebitengine?
lets gooo
Interested in how to get a Ebitengine project off the ground.
what about null pointer exceptions? isnt that a big problem when you are making games?
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.
Golang is actually really fast. There are a couple benchmarks on youtube already that compare it to C's performance for gamedev
procedural programming let's go
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.
please do a golang gamedev tutorial! i need it!
Is it possible to port golang/raylib project to Android or XBOX?
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 :)
Ebiten is cool but very limited and the development is reliant on basically one person. It can't support 3D in any way unfortunately.
@@kreed1415 I don't think it will ever support it. It aims for 2D only and that's ok
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.
I would love to join one !
Nice! btw, what vscode theme is this?
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
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
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.
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
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...
How about using go and godot?
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
I find the documentation for raylib with go so you end up jhaving to read a ton of c++ and mentally convert it
Raylib golang bindings pls!
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...
go game tutorial would be nice
I use monogame, but like the simple art style.
imagine this man meeting OdinLang
It's the first time heard this code language.
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)
www.mapeditor.org/
@@codingwithsphere Thanks a lot bro!
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.
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.
@@ScibbieGames I did not know about this thank you!
yes please game tutorial
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.
go is amazing
i am using godot and GOD i wish had go by default
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.
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).
pretty sure godot also has bindings for golang
great review! was C the first language you learned?
Thanks ! My first language was Java, then python, then c/c++
maybe you can create same game with c++ and compare them
How much time did you took to complete your game from beginning to now
I try to spend about 1-2 hours per day on the project. I would say maybe 20 hours total
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.
Is that catppuccin frappe?
Yes
Tutorials would be nice >~
raylib