Skip to main content
GameDev.net gamedev.net
🔒 Locked

Where do I begin WITHOUT an engine?

Started by dtg108 Dec 2, 2013 at 11:59 PM 14 replies 40.1k views
Original Post
dtg108
dtg108

So, I'm back after many frustrations with Unity, and I'm having problems. I've realized that just diving in and screwing around in Unity is doing NOTHING for me learning wise, so I want to go the route of not using a game engine. Why? I don't want the constraints. The problem is, I have no knowledge of anything programming or game design-wise (even terminology) so I need some help. Where do I even begin? What kind of libraries or programs will I need? What language should I start with?

My Project info: My Dev Journal: http://www.gamedev.net/blog/1571-the-life-of-a-unity-developer/
I update this more: http://forum.unity3d.com/threads/158344-Not-Dead-Enough-a-zombie-apocalypse-simulator-now-in-production!
EddieV223
EddieV223

There are some good books on this subject. I believe the best ones are the following in order of my favorites.

  1. Game Coding Complete 4th Edition http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574/ref=sr_1_4?ie=UTF8&qid=1385770254&sr=8-4&keywords=game+engine
  2. Game Engine Design and Implementation http://www.amazon.com/Game-Engine-Design-And-Implementation/dp/0763784516/ref=sr_1_2?ie=UTF8&qid=1385770254&sr=8-2&keywords=game+engine
  3. Game Engine Architecture (not much code examples) http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/ref=sr_1_1?ie=UTF8&qid=1385770254&sr=8-1&keywords=game+engine
Nicholas Kong
Nicholas Kong

If you are really into the behind the scenes stuff of game programming, you will first need to learn how to program and really love and understand programming. Once you understand general programming, then later you can learn how GUI and Graphics work in relation with your programming language.

Personally I only use Java for game development. I had to learn all the basics of Java before learning graphics too.

If you choose Java, you will need to download the Eclipse IDE and the JRE. All the libraries are built-into Eclipse so you won't need to worry about importing any libraries.

You would start making small simple console programs. Keeping pushing yourself to learn more. Always one up your programs!

Personally, I learned programming through the Internet and it is super helpful. Reading and programming is really the only things required.

Program and learn something new everyday and eventually you will have enough knowledge and be able to assemble these pieces of information to build a simple game.

Nicholas Kong
Nicholas Kong

That is a bit overkill if the OP says he/she has no background experience in programming.

Servant of the Lord
Servant of the Lord

Choose a language - Java, Javascript, C++11, Python, C#, or another.

Plan to stick with the language long term - 3 years or more, and much longer to 'master' it.

Start by learning the basics of the language, not by trying to make a game with the language.

Then make simple 2D games with the language that take 2-3 months each, expanding your knowledge of the language.

Ask questions, experiment, and stick with it - there will be plenty of obstacles, confusion, and annoyances that stall your progress - bugs that take you a week or more to solve, problems with tools, weird illegible error messages. But you'll get past those. Ask questions on the forums, but only after first trying yourself, then googling, then trying some more.

The particular language you start with doesn't matter as much as you might think, as long as it's one of the main commonly-used languages. It's much more important to choose and stick with a language for several years (even when the internet tells you language X is dying, and language Y is the great new thing - ignore that, you aren't being left behind or missing out). Once you learn one language (several years), you can pick up the basics of other languages in a matter of days, weeks, or months (but mastering it takes longer), so later switching won't be a problem. You'll eventually learn multiple languages, and even use multiple languages in a single project if the project is large enough to require it.

But switching languages in the middle of learning your first one disrupts your learning, keeping you from really going 'deep' in programming, only learning the surface-syntax of each language. Once you get through the syntax and a few language-specific features, 80% of programming languages have ideas and concepts and knowledge in common with each other. The languages focus on different key areas, or focus on key problem-domains as a specialized language for certain types of tasks, but most languages share a huge amount in common with other languages.

Once you choose what language you will start with, after some basic research, I suggest learning by buying two books (used or new, or borrow from the library), written within the past 3 years (so it's not outdated knowledge), both books focusing fully on your language (not on "Game programming", or "Architecture", or "Engineering", or "Design" - just focused on the language itself). One book should be a heavy text-book that you work through chapter by chapter. The other should be a more 'fun' book that you can flip through on the couch. Supplement those two books with online articles and tutorials, and by asking and asking questions on these forums.

You won't find the perfect book, so don't worry too much. Just make sure it's written after 2010 and focused on learning the core basics of your language, not on trying to make games. Suggestions on books, once you choose your language, are definitely worth asking for - but if someone learned programming 20 years ago, be careful that they aren't suggesting the "really good" book that they learned from from way back then.

SeanMiddleditch
SeanMiddleditch
Why? I don't want the constraints. The problem is, I have no knowledge of anything programming or game design-wise (even terminology) so I need some help.

If you don't like the constraints of the engine you probably won't like the constraints implied by "nothing" (which is practically all you'll have for a very long time after starting your own code with your current level of experience).

My advice is to stick it out with Unity. Even if you want to do your own engine, you'll have a much better understand of what an engine can do or what your game needs after prototyping it in Unity. There are good tutorials and the like for Unity which will be a better use of time right now than trying to learn how to write an engine for an unspecified game.

Sean Middleditch – Game Systems Engineer – Join my team!
EarthBanana
EarthBanana
Why? I don't want the constraints. The problem is, I have no knowledge of anything programming or game design-wise (even terminology) so I need some help.

If you don't like the constraints of the engine you probably won't like the constraints implied by "nothing" (which is practically all you'll have for a very long time after starting your own code with your current level of experience).

My advice is to stick it out with Unity. Even if you want to do your own engine, you'll have a much better understand of what an engine can do or what your game needs after prototyping it in Unity. There are good tutorials and the like for Unity which will be a better use of time right now than trying to learn how to write an engine for an unspecified game.

you know - the problem with unity and such as they make things almost too easy... I think people who are looking to get in to game programming should stay away from these game engines until they make some games without them.. However, if the OP just wants to pump out a game as fast as possible then yeah, unity is the way to go

Its just that, once you make some basic 2d games or even 3d games using some less high level API (at least one without the fancy gui) like SDL or something (or even opengl or Direct3D for rendering ) you can appreciate what these GUI engine/toolkits like unity can do for you..

And in doing that - it forces you to actually learn how to program.. I don't think there is anything wrong with someone trying to get a sprite displayed on screen as one of their first programs... I don't really agree that people must learn to make games on the black console before they can make graphical games..

In summary - I would say check out sdl http://www.libsdl.org/ and make it your goal to get a moving sprite on the screen - Learn whatever you need to learn to make that happen

DejaimeNeto
DejaimeNeto

If you are having trouble with learning through Unity, an easy to use engine, I don't think you should go up and choose the harder path of programming without an engine.

Just to clarify, as OP said himself he doesn't know well the terminology, read a good definition here@wikipedia. Programming without an engine is really hard and cumbersome. It limits your language choices and takes months just to get started. Really not a good idea.

Believe me, you should use an engine, even if a simple one, while you're learning the basics.

If you are having difficulties, make it easier, not harder.

I'll just leave these links and names here (engines, frameworks and a language), in case you change your mind:

  • LOVE2D.org (Lua | my favorite for small projects)
  • PyGame.org (Phyton)
  • Haxe.org (It's an actual language, very promising)
  • Allegro.cc (C++)
  • SFML.org (C++)
  • ClanLib.org SDK (C++)
  • OpenGL and DirectX, Probably what most would define as programming without an engine, hardest way to get started with gamedev imho.

Ordered from the easiest to the hardest (save one or two).

These are the ones that popped in my mind, unlike Unity these are all free to use.

If you want to create simple game prototypes, go ahead and use GameMaker or Construct2 or Stencyl, any of these game making tools. Unity is overkill for simple prototyping of 2D games at a mobile game level of complexity.

ferrous
ferrous

My opinion of when to forego an engine and do it yourself: If you are more interested in programming than in making a game. As doing it yourself, you're really going to be spending a lot of time programming, and very little time making a game. Which is totally fine, especially if you love programming.

If however, you have some burning desire to make a game or implement a game idea, you are probably better off using an existing engine, or you could end up bogged down in implementation details that don't really have anything to do with the game.

tharealjohn
tharealjohn

"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

jmillerdev.com Follow me @jmillerdev
ferrous
ferrous

"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

Heh, more like, "Teach a man to fish by giving him a fishing pole & a hook, or Teach a man to fish by teaching him to make his own fishing pole, and make his own hook".

Both will eventually get the guy fishing, one takes longer, but at the end of it, he will have gained more knowledge that could be useful. On the other hand, if the guy just wanted to go fishing, that knowledge gained won't be that useful. Or he gets tripped up in making the fishing pole and gives up on fishing, that's also not so great.

Like I said, it depends on the person. Asking someone who thinks of themselves more as a game designer or gameplay programmer who just wants to make their game, to make a game engine seems to miss the point. On the other hand, the guy who wants to be an engine programmer, or wants to have their hand in everything, and isn't in a rush to get their game idea prototyped or playable, then having them make their own game engine is a fine and dandy idea.

Norman Barrows
Norman Barrows

DTG108 >>

I've realized that just diving in and screwing around in Unity is doing NOTHING for me learning wise, so I want to go the route of not using a game engine. Why? I don't want the constraints. The problem is, I have no knowledge of anything programming or game design-wise (even terminology) so I need some help. Where do I even begin? What kind of libraries or programs will I need? What language should I start with?

Servant >>

Choose a language - Java, Javascript, C++11, Python, C#, or another.

Plan to stick with the language long term - 3 years or more, and much longer to 'master' it.

Start by learning the basics of the language, not by trying to make a game with the language.

Then make simple 2D games with the language that take 2-3 months each, expanding your knowledge of the language.

I'd recommend 1-2 weeks (part/most time) for the 1st game - which might work out to a couple months here and there on the side...

keep the 1st one super simple so you can get the basics down - like seeing your first game loop up and running.

Norm Barrows Rockland Software Productions "Building PC games since 1989"</
Tutorial Doctor
Tutorial Doctor

While I was dealing with my own frustrations with Unity I came across Maratis 3D. Been using it ever since. If you know how to use Blender, you should check it out.

If you need help getting started I can help. Maratis uses LUA which is easy to use, and the API is very simple and easy to understand.

They call me the Tutorial Doctor.
Extremophile
Extremophile

Super Meat Boy, Angry Bird, Braid, none of these games used a game engine. They used libraries. I think it's the best compromise, you learn a lot more and aren't stuck with closed source and licenses.

lask1
lask1

That is a bit overkill if the OP says he/she has no background experience in programming.

But are all still really great links for anyone getting into game programming!

JD_Rushing
JD_Rushing

There is a lot of good advice here but...what are you trying to make?

This may help your route. If your plans are small simple games, an easy to use engine is probably for you. The more complex and intense a game is, the more effort you will have to use in learning HOW stuff works so you can manipulate it. In that aspect, you may find that some of these engines just wouldn't work for you.

I started learning opengl using nehe.gamedev.net

It was a great learning experience. But, as someone pointed out, be careful about outdated material. I realized a lot of the code I learned would have to be migrated to VBO's and shaders.

I would recommend you learning a language (c++, java, c#) on the side even if you use an engine. It could definitely come in handy later on.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.