Inspired by Handemade Hero, I am launching Games With Go

I will be teaching programming to beginners on stream by creating a series of small games and game related projects. I will be using the Go programming language. This will be similar to handmade hero but with smaller projects rather than one huge project, and a slower pace. It is more geared for complete beginners and kids. The early streams will likely be too basic for many people here but if you have friends or family who would be interested, let them know.

Begins January 2018

http://gameswithgo.org/
You have my follow! I'm excited to see how this goes. Go has quickly become my programming language of choice these days.
> I will be teaching programming to beginners on stream by creating a series of small games and game related projects. I will be using the Go programming language.

I know it's too late for you to change it now, but why did you choose a crippled language like Go instead of a more standard teaching language like Racket / Scheme?
Racket was in the running actually, which I know sounds weird because it is so different, so was F#. Ultimately I don't think it matters much, but Go's soaring popularity is one reason, the ability to work with pointer types and value types very easily for instance. Transitioning from Go to C would not be quite so strange as transitioning from Racket to C. The primitive types and how they relate to hardware is more naturally taught in Go (yes I know there is typed Racket too).

No reason we can't do a few projects in other languages though, to teach what else is out there - generics, meta programming, etc. Maybe some racket, some Rust, some Nim.

Perhaps you and or others could do guest streams. If you know of some neat projects that could teach some of the cooler racket features that would be fun.

Edited by Jack Mott on
I'm glad to see someone using Go to make some games and I look forward to seeing what the streams will be like. I used the SDL2 bindings here: https://github.com/veandco/go-sdl2, to make a few simple 2D and 3D games with OpenGL and it was a really nice experience.

Since Go is a perfectly capable, simple and performant enough (at least for the games most people would make) language I'm glad to see you chose it :)

Like Handmade Hero, do you plan on archiving each stream on YouTube?

Edited by Sintex on
Does Go support dynamic linking now?
Is the Go compiler still fast, or has the compiler performance degraded in the newer versions?
Can you use SIMD intrinsics in GO?

Also - has anyone tried "Better C" dialect of D?

Edited by pragmatic_hero on
I don't know a lot about the Go compiler since I mostly just stick to building regular old projects, but for a long time now the Go compiler has had a few build modes that you can set.

For example `-buildmode=shared`, `-buildmode=c-shared`, `-buildmode=c-archive` etc.

I don't know if those are what you are talking about or not so I could just be misunderstanding.
I know that on Windows the only build mode that worked was `-buildmode=c-archive`, but it looks like in Go 1.10, which will be out early next year, `-buildmode=c-shared` should also be available on Windows.

It would be nice if `-buildmode=shared` and the plugin work they did for Linux was available too, but the fact that `-buildmode=c-shared` will be available from Go 1.10 at least is nice.

The Go compiler performance has been getting better with each release. I don't know what the performance is in Go 1.10, but from what I understand getting the performance back to the speed it was at in earlier versions is a big goal for the Go team. I haven't seen any performance hits in my own work at least, and various charts you can find in blog posts etc. show it's slowly getting better and better.

There isn't an easy way to use SIMD out of the box, but you can if you want to write your own functions that take advantage of SIMD in Go's assembly language, or you could just use a package that someone else has written to take advantage of it.
Yeah being able to do SDL with low pain was something I verified before deciding to do this.

As for SIMD, it seems as with most languages that are not C or C++ the answer is 'kinda'. Nim has a pretty good experience for SIMD since the C bindings are easy and zero cost, and you can metaprogram since nice stuff:

https://github.com/jackmott/nim_simd

Rust had some good works in progress for pleasant SIMD support so that will probably end up in a good place. Microsoft has a nice plan for simd intrinsics in .net as well. Maybe some day!

I do plan to do a SIMD perlin noise lesson at some point, if Go can't do it in a reasonable fashion there will just be a couple day of C!


Dynamic linking is possible since Go 1.5

Edited by Jack Mott on
just happened to stumble on this:

http://realmofracket.com/games.html


You can get it and the book that inspired it (Land of Lisp) for $8 right now on humble bundle:

https://www.humblebundle.com/books/be-a-coder-books

Edited by Jack Mott on