Sign in to follow this  

Want to build an engine

This topic is 2644 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Let me start off by saying that I have programming experience, so I'm not a complete beginner. Ultimately my goal is to build a cross platform engine for mobile devices. But I am new to Game Dev, so I have a few questions.

1. C++ is huge. While learning it, I've realized there are many ways to do similar things. Being a game developer (that wants to write an engine) should I be learning a specific subset of C++? Since efficiency is important, should I avoid learning (or rather using) the higher level features of C++ ?

2. Are there any good resources (looking for books) that target game/engine design that are platform agnostic? I'm developing on a Mac while most resources are targeted at Windows users (specifically DirectX), and when I find Mac resources, they are mostly all Obj-c which doesn't sound like the right choice for cross-platform games.

3. Aside from languages and APIs, how can I learn about good game design? A lot of tutorials seem to be a collection of functions and globals all dumped into one file. Maybe I'm looking in the wrong places?

Basically I am looking for the correct subset of resources that will allow me to learn all of these things. I am more specifically looking for books rather than tutorials, although those are nice too. Which books and resources did you guys find really helpful?

Any help is appreciated.

Share this post


Link to post
Share on other sites
Quote:
Original post by sam191
0. Want to build an engine
Let me start off by saying that I have programming experience, so I'm not a complete beginner. Ultimately my goal is to build a cross platform engine for mobile devices. But I am new to Game Dev, so I have a few questions.

3. Aside from languages and APIs, how can I learn about good game design?

0. Yeah, but that's just it. If you want to make an engine, make some games first. Then you'll know what's needed in an engine.
3. "Game design"? There's lots of stuff out there about game design. This is a programming forum - you could try the FAQ of the Game Design forum, or go to my website (lots of info about game design there).

Share this post


Link to post
Share on other sites
I'm sorry, I didn't know that the "For Beginners" meant "Programming" for beginners. I thought since I am just beginning game dev, this would be the best place to post first. Next time I'll make sure and post in the right section.

Thanks for the info and the site.

Share this post


Link to post
Share on other sites
Quote:
Ultimately my goal is to build a cross platform engine for mobile devices. But I am new to Game Dev...


Slow down, now. As Tom mentioned, an engine is something to write once you get a grasp on the big picture. I remember my old graphics programming professor telling me "This is the time for you to write stupid little apps and games that suck". [smile]

Quote:
Being a game developer (that wants to write an engine) should I be learning a specific subset of C++? Since efficiency is important, should I avoid learning (or rather using) the higher level features of C++ ?


No, and no. C++ is ridiculously generic, so there are no features geared toward game development. Also, please try to stay away from the mindset that higher level code is something that bogs you down. Implement some things with low level code if you must, but be sure that you need to do so, and to wrap that sucker up for reuse later. Higher level code makes your life easier. Besides, C++ has had a good reputation when it comes to performance. Although there are certain technical habits to avoid, it's normally best to worry about the nitty-gritty details that affect your speed AFTER you have working code!

Productivity has been winning out over performance for a growing number of people. You may get stuck with C++ in the big leagues, but if you want to focus on getting a game (engine) out quickly, don't be afraid to use a higher level language. In fact, I think it should be mandatory to use a data-driven model and a scripting language like Lua.

Finally, do not let game development throw you off the path for learning C++. As you said, C++ is huge. I've been using it for 5 years, and I am starting to realize how little I actually know about it. I do not think game development is something to learn C++ through. Learn your language of choice by coding in it in a myriad of situations, and seeing it for what it is as a programmer. Game development is another discipline in itself.

Quote:
Are there any good resources (looking for books) that target game/engine design that are platform agnostic?


Ugh, I wish things like that were truly platform agnostic. All I can say to this is that when writing games, you will need a graphics API, and you will be spending a lot of time learning one. If multiple platform support is a goal, go OpenGL. As for your language, I couldn't tell you for sure yet. I may use one of several languages depending on the project.

Quote:
Aside from languages and APIs, how can I learn about good game design


Designing a game involves understanding how to make the components of a game mesh together coherently, and how to give your target audience a fun experience with the game world. For now, ask yourself questions like "Do people want to play this?" or "Is this fun/fair?" . Be brutally critical of yourself after you put a design on paper, and be ready to look at it from the eyes of a potential player. Head to the Game Design forum to get feedback on ideas you doubt. (But don't flood them with a forty thousand word post!)

Above all, practice. Grab a piece of paper and a pencil and record your visions, then try and design something. Write a document or draw crap on a napkin... Designs need not involve computers at all.

Quote:
Which books and resources did you guys find really helpful?


Tutorials, logs of my past stupidities and people smarter than me. The people in this forum, computer science professors and failures helped me understand things more quickly than if I read about them myself.

Personally, I think you'll be just fine with [google], but I suppose it depends a lot on your learning style.

Good luck!

Share this post


Link to post
Share on other sites
Quote:
Original post by sam191
3. Aside from languages and APIs, how can I learn about good game design? A lot of tutorials seem to be a collection of functions and globals all dumped into one file. Maybe I'm looking in the wrong places?


I'm assuming you mean "game code design" or "architecture".

I'll just address this point. Good programming practices should be learned about in general regardless of the specific problem domain. This is not a game dev specific problem.

Clean Code by Robert Martin is a good place to start with code-level respect to good design. If your bricks are poorly made and cement improperly mixed it's difficult to build a good foundation.

Code Complete by Steve Mcconnell is a book which tackles the software development practice, it's a great follow-up as it starts to broaden your horizons.

Then possibly following that up with The Pragmatic Programmer by Andrew Hunt and David Thomas which is a book tackling the professional and practical aspects of programming as a career.

You may notice not one of these suggestions is "game programming". There are tons of other excellent books as well, maybe some others have suggestions for architecture specific books.

Share this post


Link to post
Share on other sites
Thanks for the great replies!

@zyrolasting

I am in no way bogged down by high level programming concepts. As a matte of fact, before this I was doing lots of Python, Ruby, Lisp and even Haskell :D I am aware of the power and elegance of using high levels of abstraction go simplify code. But for some reason I though it would be a problem on mobile devices with limited power.

Thanks for the advice though! I have equipped myself with accelerated C++ and Focus on SDL and am ready to start.

@M2tM

I will definitely check out those resources! I always had the notion that games followed a different programming structure. I guess it's safe to say that good code design and structure is not specific to the application you're writing.

Now time to get started.

Share this post


Link to post
Share on other sites
Quote:
Original post by sam191
Since efficiency is important, should I avoid learning (or rather using) the higher level features of C++ ?

Hehe, well. Then you'd basically just be using C, since the C++ language is based on extensions on C, making it high-level. ;)
But, yes I think C is a great language to start with. If you scratch that engine idea for a while.
Quote:
Original post by sam191
3. Aside from languages and APIs, how can I learn about good game design? A lot of tutorials seem to be a collection of functions and globals all dumped into one file. Maybe I'm looking in the wrong places?

As stated earlier, game design and engine architecture are different from one another, and I doubt you can learn better than by doing. Now, as you already have programming experience, you should probably do some small games.

Quote:
Original post by sam191
Basically I am looking for the correct subset of resources that will allow me to learn all of these things. I am more specifically looking for books rather than tutorials, although those are nice too. Which books and resources did you guys find really helpful?

I find tutorials helpful and reference necessary. In my case, and many of those
I've studied with, It's the examples and messing-around bit that does the trick.

But I suggest you code a couple of different games first for the PC.
Then for various of your target devices, and then finally, you could look into cross compiling one of those games.
When that succeeds, you'd be well of thinking about a clever way to ease development later on, as in constructing an engine.

Hope this helps! Good luck on your game development journey!

Share this post


Link to post
Share on other sites
Quote:
Original post by sam191
Thanks for the great replies!

@zyrolasting

I am in no way bogged down by high level programming concepts. As a matte of fact, before this I was doing lots of Python, Ruby, Lisp and even Haskell :D I am aware of the power and elegance of using high levels of abstraction go simplify code. But for some reason I though it would be a problem on mobile devices with limited power.

Thanks for the advice though! I have equipped myself with accelerated C++ and Focus on SDL and am ready to start.

@M2tM

I will definitely check out those resources! I always had the notion that games followed a different programming structure. I guess it's safe to say that good code design and structure is not specific to the application you're writing.

Now time to get started.


Good stuff! I highlighted the most important thing you said in bold. :)

If you're learning C++ still, work through an introductory book, but then revisit the core language after a few months or a year with:

The C++ Programming Language by Bjarne Stroustrup, it will help take your language specific knowledge from intermediate to advanced, or advanced to expert (along with a lot of practice).

Share this post


Link to post
Share on other sites
Sign in to follow this