Jump to content
  • Advertisement
Sign in to follow this  
KuroKitten

Building my Own Engine. Where to start!

This topic is 3665 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

I'm currently in my second year of college, and I've been in and out of the programming scene ever since the 7th grade. I've always loved programming, and I'll go through bouts of being really obsessed with learning the next thing, and then just not programming for months on end. I recently decided that I would like to start a big project: The creation of a game. I'm unsure at this point exactly what the game will be - but I figure that if I put some effort toward it every day, by the end of the whole thing, I'll have learned an immense amount of knew programming knowledge, have something to add to my resume, and it'll give me motivation to program each and every day. My knowledge of programming is both random, and thin, to say the least. I have experience with Direct X, OpenGL, SDL, C and C++, Java, D, Python, PHP, Html, Various scripting languages, the OOP paradigm, some basics of good game design, etc. etc. All of which are just very surface level understandings (with the deepest being C and C++). What I would like to do, is to get a little bit of direction in which areas I should focus on, as well as the best place to get started. My initial thoughts were that it might be best to spend most of my time for the next year or so, working on my own Game Engine; however, I also know that this can be a very grueling task. Should I create my own engine, or just find a good open source one and just begin working on the game development aspect of things? And if I do create my own engine, where is the best place to get started? Also, if anyone has any suggestions of great books to read, or good sites to visit, I would greatly appreciate that as well. In essence, I'm a student who has always been into program, though I've never really stuck with any one area for long. I'm looking to deepen my knowledge of the discipline, as well as focus my work so that I can move beyond having surface knowledge of a huge array of things, into having a deep knowledge of the things that are most important for Game Design. Any advice or direction of any kind is more than welcome, and I really appreciate anyone who helps me out =) Thank you all in advance. --Kitt

Share this post


Link to post
Share on other sites
Advertisement
^^ What he said.

It's very hard (if not impossible) to build an engine if you don't know what kind of game you're going to be building on top of it.

It's much easier to try and build a game, and then find out what kind of engine you need in order to complete your game ;)

e.g. The way that your entity/component system interacts with your networking system will be drastically different if your game is an FPS compared to an RTS compared to a Racing Sim, etc...

Share this post


Link to post
Share on other sites
Mmm, I see. Those are excellent points, and make a lot of sense. So then, at least for now, it would be best to focus on designing the game, how it will work, etc. Get a good solid understanding of what I'm looking to do, and maybe even jot down some ideas of how I might go about doing it, and then once I've gotten a strong first draft of the game itself, then to begin embarking on the engine and actual programming of it.

I would, however, like to begin researching some topics more pertaining to the computer science end of things, and I have a few more questions pertaining to that:

1) Should I try and shy away from 3d programming for my first few games? Or are there good reasons to jump right into the 3d, and leave "skip" the 2d, as it were. My intuition tells me that starting with 2d and moving up to 3d is almost always the best way to go, but I'm unsure.

2) As far as graphics APIs go, which would you recommend? I really like the idea of Multi platform APIs, so I've tended toward SDL and OpenGL - but perhaps it would be more beneficial to begin learning something else?

3) What are some really strong books on the subject of OOP? I know that this is a MUST MUST MUST for game programming, and truly any programming beyond very simple or embedded applications, but what are the best sources for getting an "up to date" understand of good OOP practices and strategies, and how to use and implement them?

Again, I really appreciate the help. You guys are excellent =)

Share this post


Link to post
Share on other sites
1) I would HIGHLY recommend starting out with 2D before moving onto 3D. You'll get used to concepts like vector maths and the basics of your chosen API much quicker working with 2D. I jumped to 3D far quicker than I should have done and I've payed for it dearly.

2) If you like the sound of openGL and SDL, then go for openGL and SDL. You could argue for weeks about which is the "better" API, but they'll both do the same job in the end. My current engine uses OpenGL/SDL and I'm very happy not just with the results, but also what I've LEARNED from it. DirectX includes lots of tempting helper utilities for vector and matrix maths, which will help get a finished product done fast and efficiently, but you'll learn so much more being forced to implement these things yourself.

3) Again, this is one thing I missed out on and have payed my fines for. I jumped up at OpenGL books and 3D Game Engine Design books, and didn't pick up something as simple as an OOP book. I do have Sam's Teach Yourself C++ which touches on a few basic design practices, but nothing nearly an in-depth that I should have done. I can't comment on which OOP books are recommended, but if someone else replies with one I shall purchase a copy myself.

One book I WILL suggest though: 3D Math Primer for Graphics and Game development. Best £25 I ever spent.

And yes, make GAMES not engines. Once you finish a game, all those framework classes and rendering functions you've written will MAKE an engine.

Share this post


Link to post
Share on other sites
As many of them have said, "make games"; not engines. Unless you are craving for years of stress, frustration, and quite possible no progress, be my guest. :]

But if you want to start an engine, I'd do the following ( well... I am doing the following ):

1) Think about your engine. What will your have to offer that differs from many other engines? Will it focus on graphics, AI, GUI, easy to use, etc...

2) Choose your sources. Using other APIs and libraries to power your engine is no sin. They may even save you years of time. For instance, using DevIL for image loading rather than making your own for every image format

3) Choose the language. Do you want it in C++, D, etc...

4) Once the above are done, develop the small portions of your game engine slowly one at a time. For all of the components, the files will become longer and more complicated to read/go through.

5) Keep every function and variable in some sort of debugging format in case of errors, you can see what and where went wrong.

6) Keep logs on every aspect implemented and things left to be done.

Making a game engine is no easy task. Many work on them for years before it is even "usable".

But as for games, there is nothing wrong with 2D games. Many receive the impression that 2D must be "lower" generation programing and graphics, but a majority of the time, I like 3D graphics over the "real" 3D.

Hope I helped any. :]

Share this post


Link to post
Share on other sites
Quote:
Original post by sirGustav
You should write games not engines, ie start writing your game and write the "engine parts" when needed.


But what if KuroKitten loves doing engines more than videogames? At last he is free for doing what he wants.

Is like encouraging a guitar builder to not make guitars and forcing him to become a rock star. Or telling to an artisan of sword forging to not forge samuari swords, but then encouraging him to kill people with those swords!

He's chosen the path of the forger, not the one for just being an user. And make games could be as same as difficult as making game technology. Just he must find out where are his talents and knowing how applying them.

So I encourage KuroKitten to make engines, and it isn't impossible. But my advice is that you should study and understand the arquitecture of the existing games engines. Learn the concepts behind. A good starting is to look into the Wild Magic Library (http://www.geometrictools.com/) or Irrlicht.

Share this post


Link to post
Share on other sites
Quote:
But what if KuroKitten loves doing engines more than videogames? At last he is free for doing what he wants.

Is like encouraging a guitar builder to not make guitars and forcing him to become a rock star. Or telling to an artisan of sword forging to not forge samuari swords, but then encouraging him to kill people with those swords!

He's chosen the path of the forger, not the one for just being an user. And make games could be as same as difficult as making game technology. Just he must find out where are his talents and knowing how applying them.

So I encourage KuroKitten to make engines, and it isn't impossible. But my advice is that you should study and understand the arquitecture of the existing games engines. Learn the concepts behind. A good starting is to look into the Wild Magic Library (http://www.geometrictools.com/) or Irrlicht.
I don't think the point of the article (or that the previous posters are trying to make) is that the OP shouldn't set out to make an engine if that's what he finds truly interesting and motivating, but rather that it's not necessary to create an 'engine' as a pre-requisite to making an actual game (a misconception that many beginning game developers seem to labor under).

Share this post


Link to post
Share on other sites
Quote:
Original post by superoptimo
But what if KuroKitten loves doing engines more than videogames? At last he is free for doing what he wants.

He's chosen the path of the forger, not the one for just being an user. And make games could be as same as difficult as making game technology. .

Yes of course Kurokitten is free to do what he wants do but I don't see the interest to make only a game engine without specific goal.
Game programming is a very hard job, it's not like programming Small Office software tools like a word processor.
If you want to write a word processor it's an utility program so the user will be satisfied with your program utility.
The main goal of an utility software tool is to be functional.
If your word processor is not functional the final customer won't be satisfied.

A video game is totally different ; making a fully functional game with a good AI and good graphics is not sufficient.
You have to compete with the rest of the industry so you need to give a touch of originality to your project.
A game engine is only one part /one component of a software video game.
So I agree with previous people and I totally agree with the author of this post

Share this post


Link to post
Share on other sites
Hello, grab "Tricks of the Windows Game Programming Gurus" and then, "Tricks of the 3D Game programming Gurus" both by Andre' Lamothe.

Share this post


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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!