Hobbyist Gamedev

Soldato
Joined
30 Dec 2010
Posts
14,760
Location
Over here
I wanted to make a thread for this so I didn't hijack another which was asking about hardware:

I wouldn't be put off, it's a great field to work in. There are horror stories from crap employers like EA that try and work people to death, but largely it's a fun, rewarding, and interesting place to work.

How much maths, and what kind of maths you need depends on what sort of programming you're doing. If you are interested in it, there's some great free stuff around, coursera has some good algorithm design units.

It's not something I see as a viable option for someone who is 30 this year and probably only just scraped through with a C at GCSE maths.
I'm not sure why I mentioned it as if I ever considered it a career option, I've only ever been interested in it from a bedroom coder perspective.

The biggest hurdle I find is 'analysis paralysis' I thought I was quite happy with C# and then you read "oh I wouldn't touch it because it's 'slow' and to make games you have to use C++"
I know that isn't strictly true for hobbyist/indies and many games have been made in higher level languages and Unity. I guess the problem I have is that I don't really feel like I'm learning something if I just read a tutorial on how to calculate 2d vectors say and just brute force it in and hope I achieve the results.
I've only ever been interested in 2d development but the reason I'm not as passionate about it as I should be is I don't have an idea of anything I'd actually like to make but I know it's recommended to make clones of simpler games first like Pong, Breakout etc.
The second is knowing that inevitably I'm going to get stuck on the maths side at some point. I know using something like Unity takes a lot of the headache away but then I'm trying to learn Unity, C# AND game programming at the same time.
I have checked out some coursera stuff but on one they started throwing around some formulas that looked totally alien to me which was the point where I thought maybe this is just a waste of time and I should focus on my other non math intensive subject which is webdev.
 
Soldato
Joined
20 Dec 2004
Posts
16,028
C# is fine for game development, if it's good enough for Cities Skylines, Ori and The Blind Forest etc, it's definitely good enough for you. For AAA console games, you'll use C++ because you need the low-level access to squeeze every last drop of performance out of the hardware.

Tbh, with game development, all that matters is the end result. Does it play well, is it fun. There are all sorts of patterns and best practices you should aspire to apply, but you will rarely get the chance to. Game developers write the *worst* code :)

I would start with a breakout clone. You'll make a controller, handle input, physics, collision detection, triggers, a simple UI, sound, few particle effects. You can then just tweak each bit, extend it, jazz up the graphics etc....best way to learn is by doing.

It can be a bit disheartening working on your own crap models/artwork, so don't be afraid to buy a few bits from the asset store so your prototypes don't look so rubbish.
 
Soldato
OP
Joined
30 Dec 2010
Posts
14,760
Location
Over here
Thanks for the advice. One other thing I forgot to mention was how disheartening not being able to do your own graphics is. That said, I have found some good stuff on open game art pages and working full time means I have a bit of cash to plunge into resources on the asset store etc but within moderation as I have no intention (nor the ability) to monetise anything I'll make.
I used to see it as 'cheating' using tools like Unity and this was part of the problem as realistically I'd probably not ever be able to make my own engine (esp not in C#) but I see it as a tool now for getting stuff done quicker.
 
Soldato
Joined
20 Dec 2004
Posts
16,028
OpenGameArt has some decent stuff yeah, certainly for prototyping. Some of the unity standard assets are pretty good, 5 ships with a decent first and 3rd person controller setup + meshes.

Unity certainly ain't cheating, games are so complex these days that almost no-one develops from scratch. The big studios have their own in-house engines (Anvil, UbiArt, Frostbite, Cryengine, etc etc). The fundamental modules are the same for all of them....scripting, physics, sound, animation, networking, graphics pipeline).

It's only worth writing your own from scratch if you want to be an engine programmer really. I'm working on gameplay and UI in my day job so I'm focusing on extending these skills, concentrating on AI atm in Unity on my free time stuff.
 
Associate
Joined
16 Aug 2010
Posts
1,373
Location
UK
I'm coming to the end of my academic position at university and thinking of going into gaming. I enjoy all the maths and physics that is in it. Opengl and matrices, yum :p.

I've been building my own engine in my free time. Been using opengl and sdl. Have some procedural terrain done from mathematical noise and a few other bits and bobs.

I've dabbled in Unreal but to be honest, I'm the type of person that likes to build everything from scratch, to know it inside out and also understand more of the behind the scenes working.
 
Last edited:
Soldato
OP
Joined
30 Dec 2010
Posts
14,760
Location
Over here
I'm coming to the end of my academic position at university and thinking of going into gaming. I enjoy all the maths and physics that is in it. Opengl and matrices, yum :p.

I've been building my own engine in my free time. Been using opengl and sdl. Have some procedural terrain done from mathematical noise and a few other bits and bobs.

I've dabbled in Unreal but to be honest, I'm the type of person that likes to build everything from scratch, to know it inside out and also understand more of the behind the scenes working.

I totally get that but I think not reinventing the wheel is more relevant in gamedev due to the complexity of it.
I think you have to be totally 100% passionate about gamedev to do it as a profession, I'm not that passionate about anything :p
I guess a lot of indie devs are more than happy using Unreal/Unity because from their point of view they want to get their products on the market asap so they can try and make money.
It also depends on what you want, I'd imagine that if you are a code monkey at a big studio you will have very little creative input in the projects, but being an indie you obviously have a far bigger influence in it all, the downside being you could spend years on something only for it to never even get noticed among the tides of other stuff out there.
 
Associate
Joined
16 Aug 2010
Posts
1,373
Location
UK
Yes I agree with you. Not everyone has the luxury to sit there writing and learning everything possible.

I think what makes me passionate about it is the technical side. As I said, the maths, physics and programming that goes into it. My background is in maths and physics. I'm passionate about science but I want to translate that over to games. Solving problems and making things happen through algorithms etc.

I'm thinking when I finish in July I might just spend all my time designing and writing my own stuff, possibly with a friend who is coming to the end of his post grad (has a game on indie db already). See what we can come up with. Maybe own company, who knows.

I can't be bothered with job interviews to be honest and working in academia has put me off it :p. This avoids them ha!
 
Last edited:
Man of Honour
Joined
13 Oct 2006
Posts
92,049
I got a C in GCSE maths - back in the day I wrote a game engine of similar complexity (a little more basic but functionally very similar) to Quake 2/3 on DX7 largely from "scratch" (mind it did help having the Q2 source to lean on) - if your reasonably smart there is enough stuff on google to figure out most of the challenges in regards to game development unless you try to do something really cutting edge.

I'd get into C++ sooner rather than later though as you will wish you had in the long run (even though I despise the language as it feels like reinventing the wheel over and over) for a lot of games performance won't be the bottleneck and you can always interface with simple C/C++ DLLs for areas that really need performance if you can't get work around it in whatever language your using - some of my earlier efforts were created in VB3 using C DLLs for some areas where its poor performance actually hurt.
 
Soldato
Joined
20 Dec 2004
Posts
16,028
I totally get that but I think not reinventing the wheel is more relevant in gamedev due to the complexity of it.
I think you have to be totally 100% passionate about gamedev to do it as a profession, I'm not that passionate about anything :p
I guess a lot of indie devs are more than happy using Unreal/Unity because from their point of view they want to get their products on the market asap so they can try and make money.
It also depends on what you want, I'd imagine that if you are a code monkey at a big studio you will have very little creative input in the projects, but being an indie you obviously have a far bigger influence in it all, the downside being you could spend years on something only for it to never even get noticed among the tides of other stuff out there.

Tbh, I burned out doing enterprise software dev, before switching to games. I now have a much healthier work/life balance, enjoy the work, the people, and care about what I'm making. The money isn't very good though.....but some things are more important.

I'm a code-monkey at a big studio, the particular project I'm on must be 50+ people, which might surprise some people. Artists aren't so keen on taking advice from coders ;) But the designers are pretty open to suggestions and feedback. Of course I have me free time for tinkering with designs and things that I feel like (got my Oculus coming tomorrow :))

I would think very hard about starting an indie studio....it's very very tough out there and the majority of it is marketing. If you've got no overheads (living with parents or something) then you have the luxury of time and some money then go for it though. My tip would be, if you want to make money as an indie, make and sell assets on the Unity and Unreal asset stores, way *way* easier to make money that way.
 
Associate
Joined
16 Aug 2010
Posts
1,373
Location
UK
Have you had a play with Blender, Noxia (this follows on from mid_gen's last point)? Excellent tool for its cost (free).

I'm in love with it. I don't use it for games really (I did dabble with it for Arma and Cities:Skylines), more making data from calculations look nice (e.g fluid simulations look like water, instead of a boring isosurface in scientific software) or scientific animations to explain ideas.

May be worth learning. Plenty of tutorials on YouTube etc.
 
Soldato
OP
Joined
30 Dec 2010
Posts
14,760
Location
Over here
Yes I agree with you. Not everyone has the luxury to sit there writing and learning everything possible.

I think what makes me passionate about it is the technical side. As I said, the maths, physics and programming that goes into it. My background is in maths and physics. I'm passionate about science but I want to translate that over to games. Solving problems and making things happen through algorithms etc.

I'm thinking when I finish in July I might just spend all my time designing and writing my own stuff, possibly with a friend who is coming to the end of his post grad (has a game on indie db already). See what we can come up with. Maybe own company, who knows.

I can't be bothered with job interviews to be honest and working in academia has put me off it :p. This avoids them ha!

Have you not considered the Engineering field? I know it has many offshoots but there must be a lot of options for someone with your skills.

I got a C in GCSE maths - back in the day I wrote a game engine of similar complexity (a little more basic but functionally very similar) to Quake 2/3 on DX7 largely from "scratch" (mind it did help having the Q2 source to lean on) - if your reasonably smart there is enough stuff on google to figure out most of the challenges in regards to game development unless you try to do something really cutting edge.

I'd get into C++ sooner rather than later though as you will wish you had in the long run (even though I despise the language as it feels like reinventing the wheel over and over) for a lot of games performance won't be the bottleneck and you can always interface with simple C/C++ DLLs for areas that really need performance if you can't get work around it in whatever language your using - some of my earlier efforts were created in VB3 using C DLLs for some areas where its poor performance actually hurt.

That's impressive, I was trying to run before I could walk though as when I was trying to learn C++ when I was 16 (Visual C++ 6.0) I started reading ahead on DirectX etc before I even understood the basics of C++.
I don't think that someone tinkering as a hobby with no interest in pursuing a professional route has much to gain from C++ and will in all likelihood be put off by the lack of results for all their efforts, where as C# can get you started making a relatively nice looking GUI etc with all the built in tools.
I got to a stage where I could make a window in C++using the windows.h but to be honest I didn't really understand the code I just memorised it all.

Tbh, I burned out doing enterprise software dev, before switching to games. I now have a much healthier work/life balance, enjoy the work, the people, and care about what I'm making. The money isn't very good though.....but some things are more important.

I'm a code-monkey at a big studio, the particular project I'm on must be 50+ people, which might surprise some people. Artists aren't so keen on taking advice from coders ;) But the designers are pretty open to suggestions and feedback. Of course I have me free time for tinkering with designs and things that I feel like (got my Oculus coming tomorrow :))

I would think very hard about starting an indie studio....it's very very tough out there and the majority of it is marketing. If you've got no overheads (living with parents or something) then you have the luxury of time and some money then go for it though. My tip would be, if you want to make money as an indie, make and sell assets on the Unity and Unreal asset stores, way *way* easier to make money that way.

I have no intentions of that, I'm not unrealistic so I know it will never be anything more than a hobby. I think too many people think they are going to make the next Minecraft from their bedrooms.
I have little to no artistic skills so modelling or making textures etc isn't going to happen sadly.

Have you had a play with Blender, Noxia (this follows on from mid_gen's last point)? Excellent tool for its cost (free).

I'm in love with it. I don't use it for games really (I did dabble with it for Arma and Cities:Skylines), more making data from calculations look nice (e.g fluid simulations look like water, instead of a boring isosurface in scientific software) or scientific animations to explain ideas.

May be worth learning. Plenty of tutorials on YouTube etc.

Blender is part of my toolkit which I have no idea how to use :) In all honesty I don't know what it's for other than 3d modelling but 3D is even more unrealistic to me than the 2d stuff!

I'm stuck in a rut, I should spend all my time focusing on the web dev stuff but it's hard as I really want to get to the Javascript stuff but I find HTML and CSS very dull to learn. Not enough hours in the day to learn both web and game dev and I realistically only have a chance to make one of those a somewhat late career.
 
Last edited:
Associate
Joined
16 Aug 2010
Posts
1,373
Location
UK
Have you not considered the Engineering field? I know it has many offshoots but there must be a lot of options for someone with your skills.

This is where I am now, engineering department, after I finished my postgraduate research some time ago.

No I don't really want to stay in engineering. Rather be solving game problems, than engineering.

This is an old video below, of what I was working on. Better camera now, and I have shadows too (done in the gpu fragment shader). Next step is water possibly (probably somewhat outdated, but http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html). It's all a bit basic right now, but more time when I finish my job in July.

https://www.youtube.com/watch?v=TWW_f8j8-mI

I've got an idea using compute shaders/CUDA (calculations on GPU instead of CPU) for some physics calculations.

You can sculpt, make textures, bake normals and so in in Blender. Lots of uses.

I'd go with what feels right for you in terms of what brings you the most happiness and satisfaction. Otherwise you'll just keep thinking "maybe I should have done this".
 
Last edited:
Soldato
Joined
23 May 2011
Posts
10,303
I think I'm very much in the same position as you. I want to start but I'm not sure where to start and have no idea if I'm smart enough to actually be decent at it. I don't necessarily plan on making games as a living, at least not until I know exactly what it entails and whether I have the ability to do well at it. I'm also a terrible artist, but looking at some tutorials on YouTube (search for Pixel art tutorials or pixel tileset tutorials) and it doesn't look like it would be too bad with a fair bit of practice. If I were ever to go full indie I think the main concern for me would be the music, but we'll come to that if I ever get there :p.
 
Soldato
OP
Joined
30 Dec 2010
Posts
14,760
Location
Over here
I just read this: http://www.gamedev.net/topic/667615-why-high-level-languages-are-slow/

Someone started putting all these formulas in one post and when I read stuff like that which I know I'll never understand then I lose all hope and wonder why I'm even bothering!

All told, assuming the data in question is a simple integral type, a naive sorted-insert-and-iterate implementation is 3n+2 memory accesses for lists versus [2+1/(2 log n)]n+1 accesses for vectors, and an optimal one is 2n+2 accesses for lists and 1.5n+log n +1 accesses for vectors - vector is inherently faster for this test regardless of any cache-related concerns. Cache coherency issues will only magnify this difference - however increased object size will mitigate it.

Seriously I have no idea what they're on about and I'll never get good enought at math at this stage to figure it out.
 
Associate
Joined
16 Aug 2010
Posts
1,373
Location
UK
It's just the "time complexity". There's different ways of doing things, e.g. you can sort a list of things in many ways, find in many ways. Some are faster than others as they require less data to go through. So require less memory accesses to get the data.

There's also ways to lay out data in memory. It's good to lay related pieces of data near to one another, so you don't have to go through a large chunk of memory to get the next piece, whilst the processor is sitting there, waiting, doing nothing as it can't!

I wouldn't really worry about such things though at this stage. Generally higher higher level languages try to automate these things for you so you can spend more time on actually getting results. Optimising etc. is a whole book worthy topic in its own right.

Learn how to do things first, then good techniques, optimising and so on comes later through practice.
 
Soldato
Joined
20 Dec 2004
Posts
16,028
As above, I wouldn't worry about this stuff when you're starting out. They are just talking about the complexity/cost of algorithms.

What they are talking about is http://en.wikipedia.org/wiki/Big_O_notation. It's just a way for describing the complexity of an operation. Where he says

a naive sorted-insert-and-iterate implementation is 3n+2 memory accesses for lists versus [2+1/(2 log n)]n+1 accesses for vectors

'n' is the number of items in the list. Let's say it's 20. A 'sorted-insert-and-iterate' is just a type of operation (you can probably figure it out :)).

For a list, the complexity is (3x20)+2=62. For a vector, it's [2+1/(2 log 20)]20+1 = 48.

It's a way of quantifying the relative cost of algorithmic operations. But really, you don't need to care about all those formulas, unless you want to teach algorithm analysis, or get properly stuck into performance tuning. Even then, the best game performance tuning comes from knowing ugly hacks and quirks of the hardware/compiler....

With tools like Unity you can basically ignore all this off putting stuff. Run through the Unity example projects, and just make stuff, break stuff, make some more.
 
Man of Honour
Joined
13 Oct 2006
Posts
92,049
That's impressive, I was trying to run before I could walk though as when I was trying to learn C++ when I was 16 (Visual C++ 6.0) I started reading ahead on DirectX etc before I even understood the basics of C++.
I don't think that someone tinkering as a hobby with no interest in pursuing a professional route has much to gain from C++ and will in all likelihood be put off by the lack of results for all their efforts, where as C# can get you started making a relatively nice looking GUI etc with all the built in tools.
I got to a stage where I could make a window in C++using the windows.h but to be honest I didn't really understand the code I just memorised it all.

Was a lot easier than it sounds when you've got other game source code to use as a reference rather than coming up with every single thing from scratch mind (no direct copy and paste involved though) and things like image/mesh loading, physics, sound, etc. I just used external API libraries rather than implementing those features from scratch.

Seriously I have no idea what they're on about and I'll never get good enought at math at this stage to figure it out.

Ignore it, deal with the maths problems as and when you come to them - I have no idea on half of the proper terminology, etc. but once your dealing with a specific problem the relevant stuff tends to start falling into place - obviously its not always optimal i.e. someone with a degree in the subject could identify something as X type of problem that can be solved with Y type of approach/algorithm right off the bat but a lot of game dev stuff is basically trigonometry and vector maths.

It's a way of quantifying the relative cost of algorithmic operations. But really, you don't need to care about all those formulas, unless you want to teach algorithm analysis, or get properly stuck into performance tuning. Even then, the best game performance tuning comes from knowing ugly hacks and quirks of the hardware/compiler....

From my experience people who are insanely good (some exceptions aside) at those kind of maths/equational optimisations rarely are good game designers and vice versa people who are good game designers are rarely the best at hyper optimised mathematical conditions (i.e. abstraction and optimisation of global square root usage in a game) - though game designers are generally good at using the best approaches for performance i.e. avoiding things that can really bog your code down and knowing work arounds and hacks as you mentioned.
 
Last edited:
Soldato
OP
Joined
30 Dec 2010
Posts
14,760
Location
Over here
I was that naive that when the Quake 2 source code was available I thought I could just download it, press compile and run Quake 2!
I'm using a book called Head First C# to learn with as I prefer books to video tutorials, I think I may try doing some stuff in XNA as well because that will force me to do a lot of stuff manually and my current laptop is so poor it can't even run Unity very well.
I just refuse to buy anything better until I can tell I'm serious about it because I've gone through this cycle all too many times.

You are right about the maths problems too, I have found some good resources that explain these things very well (and with a game focus) and when I get to a stage where I'm comfortable with more programming aspects I can incorporate them into little demos to teach myself better.
I started the book from the beginning but I was already quite familiar with a number of basic concepts like loops etc, it was more a syntax learning exercise.
The hardest part can be finding worthwhile resources, I have plenty of books but I usually buy ones above my level. I have one called learning C# with XNA which is written by a guy who did a Coursera course as well (A.T Chamillard).
I wish I was working with this language as it wouldn't be so hard to get back into it if I couldn't do anything for a few days (as often happens).
 
Last edited:
Soldato
Joined
16 Feb 2004
Posts
4,811
Location
London
I think I may try doing some stuff in XNA as well because that will force me to do a lot of stuff manually and my current laptop is so poor it can't even run Unity very well.

give monogame a go, it's up to v3.3 and has a bunch of improvements over xna.
 
Associate
Joined
22 Nov 2007
Posts
1,662
Location
Staffordshire
I've been wanting to do something like this for a while now and found Unity at the beginning of the week. The only programming knowledge I've really got is VB and Java from when I was at uni and that was 8-10 years ago, so wasn't sure if I would pick it up.

I'm actually surprised how easy Unity and C# is. I've been running through the tutorials on their website, changing things as I go along to see what would happen if I done it a certain way, and it's pretty straight forward if you go through the code step by step.
 
Back
Top Bottom