So, I want to make a game engine...

Started by
8 comments, last by Code_Grammer 10 years, 4 months ago

Yosa, I hope that kind of title in the For Beginners forum didn't freak you out that much. But it is true, I want to make a game engine. Oh, no, not right away, mind you, but I do want to work my way up to that.

See, I'm still on phase 0 of my multi-phase engine building plan: learning programming languages. I do understand the basic logic of pretty much all programming languages, like loops, strings, variables, etc. but the only really programming language I know is Javascript. I need to know more.

I want to make a game engine for a game that could simply be put in the RTS genre, but I want to mix in some aspects of multiple other game genres. I AM going to learn C# ('cos I'm a Microsoft Fanboy), and Java ('cos I'm a Minecraft Fanboy too), but I'm not sure which would be best for an RTS game.

So my two questions to you, Readers, are: what programming language do you think is best for making RTS games, and what other programming languages would you advise me to learn?

I might post again about how to actually make a game when I've learned a couple languages. Until then (and after then because it'd be rude to withdraw just because I posted again), thank you all who reply!

Advertisement

Well, certainly setting the bar high. I am not one for anyone to say you shouldn't do that. If you have a goal then you can shoot for it. Thankfully there is also a bunch of open source engines out there that you might be able to get the code for that will help you along your path.

In many instances the engines are often specific to the game you are writing. This isn't a hard and fast rule. But to leverage something like FrostBite 3 to make an MMO would require a lot of changes to the way some of the networking stack is implemented. But that isn't to say that general engines, tweaking here and there can make any game you want. So it might be helpful to see some RTS samples. See how they work internally as a game to get an idea of what you will need to implement in an engine.

JavaScript is a good place to start for languages, it can lead nicely into Java, C# and then in to C++.

Engines, the best thing to help with this is interfaces and document models. But this I mean how will you write the game that to connects to the engine, how easy will the calls be to perform the draw things of that nature. Hide a lot of the plumbing behind good interfaces enables the game developers to concentrate more on the details of the game and not how they are going to get the thing working properly in the engine. So understanding the game engine architecture would help. Understand the basics of what is needed in an engine.

Graphics, Sound, Input, Network anything like that. Then dive into each of those deeper and deeper.

I hope this helps some. You have given yourself lofty goals if you are still learning the basics but stick to it and push yourself. It isn't impossible, but it will not be easy.

Thanks
Michael

Having a "taste" of different languages is indeed an excellent idea.

I'd personally stay away from Java. It's just too verbose and HTML5 can do many, perhaps even most things Java excels at. The library is quite verbose and system integration is, in my opinion, still lacking.

However, no matter what you do, you will never be able to build an engine (in the sense of multi-game shared platform) without writing a few games first, possibly from different genres. Your resulting design would just not interact well with the gameplay constructs or the data flow involved.

So, next step in your path to engine design is: write an engine (in terms of logic for a game).

Previously "Krohm"

In my opinion C++ is a good tool, JS is a good tool too! Basically every language can do everything, all you need is imagination. As mentoined above, it is good to start with smaller projects like clonning the old classics or small JRPG games just to get the feeling of how a game loop works. You can jump to higher projects as you get the feeling of the code. When you feel you can do it you should google for RTS design guides, this will pretty much help you. Start with 2D first, their coding is more friendly, then you can proceed into 3D. I hope I was useful.

Best of luck,
Teckpow

I would advise you to break your goal up a bit here - I understand the want to make a game engine.. Its not really about reinventing the wheel to have a wheel to use, its more about reinventing it to understand how it works.

My advice - try to make a 2d rendering engine first.. don't worry about the networking and sound and all that stuff - once you get that working then add sound support and make a couple 2d games using it - if you really want to get fancy you can add a toolkit for it that allows you to make maps or levels

Earlier given advice by the others is perfectly valid.

Personally, if the aim is to make a game I would take the "make games, not engines" approach. This doesn't mean you won't make the engine though. Just start off with getting something on the screen, as in, make a basic 3D render engine (or 2D if that's your aim). From there on out, focus on what you need for your game (collisions, physics, sound, etc) and build that. Build it with re-usabilty in mind. Pretty much what EarthBanana said. :)

In the end, you will have a couple of building blocks that make up good start and basis of your engine and on top of that, you have your game.

You will find flaws in your systems, things you will want to do differently next time, make (stupid) errors and everything else wrong. But that's something one will always have, even the best still make mistakes, but on a different scale, so never let that be a motivation killer.

Just keep in mind that getting the game engine is a long term goal and that you should learn from making it, whatever way you choose of making it. It's best to look at it as an iterative process.

Good luck! :)

I started off with Basic back in the day and then I moved onto Turing and then in high school I learned Pascal. Once I got to university I picked up C/C++ and then I found that learning other languages was pretty easy like HTML, JavaScript, PHP, ASP etc. So if you want to be a coding guru, I highly recommend learning C++, it seems like other languages are much easier to learn after you have a good grasp of how C++ works.

Learn C++, clone games starting from the simplest, use a pre-existing game engine (unreal, unity, torque), make a good number of your own games with the engine you're using, read up on the features that make up a game engine (graphics api, physics engine, audio, AI etc.) when you've become good in C++, game dev and know what makes an engine tick, start building the game engine (don't forget to use pre-existing libraries like ogre for render, physx for physics etc. except you are ready for serious work and supernaturally good in maths and c++, then you can make everything from scratch) and keep making it better (that's my advice and i'm a beginner like you that want's to make a c++ game engine so that's also my plan)

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Might I suggest looking in to SOLID principles. I'm currently in a team working on a game engine, and things got a whole lot better when we stuck to SOLID principles; obviously they're not the be all and end all however they're certainly great habits to get in to.

A "3d" engine is code that does a lot of 3d math. A language is simply the embodiment of a programming paradigm. C++, C#, and Java are object oriented languages, but it's perfectly feasible to write a game engine in visual basic or C. Languages aside, you need to have a good grasp on 3d mathematics. Unless you plan on writing your own 3d graphics library as well, you're pretty much using opengl or directx -- and we're not even talking shaders yet. Then there's the matter of assets to consider. Is it going to be single or multi-threaded? Take a look at this site: Game Institute

This topic is closed to new replies.

Advertisement