Sign in to follow this  
Veljex

New to game development questions

Recommended Posts

Veljex    116

Hi everybody, first post on this site.

 

I'm new to game development however I have been developing for the past 4+ years, mostly VB and web based languages however last year I started to learn C++ and I'm rather confident with it. It's a long term aspiration of mine to become a game developer, even if it is just a hobby and doesn't become a full time job.

 

Over the past 2 months I've been looking at starting the development side using OpenGL and C++ and I've been following the tutorials on www.opengl-tutorial.org as suggested on this site. Part way into these I've been thinking, I know that everybody suggests working on a small project using an pre-built engine however I've not been too sure of this myself and I feel that they are an quick way to get started.

 

I have an idea (like everybody else) on a game that I'd like to work on and I'm thinking it would be a good learning opportunity to build a game from scratch and learn as I go. However there's a few questions that I have about getting started such as is it going to be impossible to learn to use OpenGL and C++ as a beginner to game development? Alternatively if you recommend a pre-built engine, which one and what are the publications limits behind them?

 

If anybody has taught themselves to use OpenGL and C++ from scratch would you be able to share some of your resources for the best way to learn?

 

Thanks for reading and I appreciate any help.

Share this post


Link to post
Share on other sites

    Go and check out GameSalad or RPGMaker for some basic stuff, else I think Unity sounds like a good, solid start. I have minimal Unity background, but Unity is what keeps popping up when I look around the internet atm. But there's tons of engines out there that you can utilize (just pick the one that sounds best for you, after some hours of research):

 

    http://www.moddb.com/engines/top

 

 

    I only have some general advice, really:

 

    The reason why people tell you to start small is mainly because you're 1 person. You need to start small, because that's how you actually manage to finish a project. You can't imagine the Pandora's Box of bugs, glitches and hours of frustration you'll unlock if you start with a project too big, and this is demonstrable one of the biggest reasons why people fail at game development. The clue here isn't really just to know programming. The big secret to beginning as a game developer is to actually make stuff and have a portfolio to show off to someone.

 

    Also, real professionals try not to judge a book by its cover, they look for the actual experience. You might have ludicrously bad textures in your game, but they may still be interested because it's a simple matter of hiring a visual designer to make better textures later. Or similar.

 

 

    Here's a video for you:

http://youtu.be/bgwG-VBKStU

 

 

    Notice how the guys in that video all say the same thing: -- Make mods, create something, anything. -- Get a portfolio, but don't start massive undertakings that typically require either years of experience, the muscle memory and twitch to type 2000 lines of code per session, and/or a big team that coordinates their individual efforts.

 

    Start small. Seriously. I'm not joking. Make a mod for Skyrim or Minecraft, get some sprite sheets made, sound, 3D models, anything. Maybe you rather want to build your own Tetris game, Super Mario, anything that you could do in a reasonable amount of time with minimal debugging. Utilize your strengths, not your weaknesses (unless you want to make them into strengths, as an investment).

 

    My own project now is to just get through the Game Programming tutorial series of TheCherno on Youtube, then start making something of my own in Java. I've already dabbled a little in Elder Scrolls modding, Fallout 3 and similar, but right now I'm learning Java and I'm having lots of fun just learning stuff - not only Java and Eclipse, but XHTML, Javascript, HTML5, making sprites in Paint.NET and just having fun with studying games on the side. This is my current stance atm, but it's not exactly something that anyone would want to hire me for. That's why my first major step after this one, is to build my website and some basic portfolio.

 

    But whatever you do: Start. Small. Seriously! wink.png

Edited by Malabyte

Share this post


Link to post
Share on other sites
Veljex    116

Thanks for the advice! Much appreciated. I've thought about making mods but i felt that was the same base as using an engine in that it wouldn't be learning to develop fully due to using a base and editing programs.

 

While thinking about this final game, I've realised that there is so much implementation that needs doing to it that I've been able to mentally break it down so I think i could make each individual aspect as a small project. I understand about the scale of it and appreciate that it will take ages (and i don't relly intent it to be released, would just be a bonus) so i'm hopefully going to just make a few small environments to learn and hopefully use that to make a game.I have a few friends who are looking to get into game development as well, or at least modelling etc, but to get others into it I'll have to make a start before others will be willing to help.

 

 

Also with regards to 2D games. From theory of them I would guess that they are different to 3D games as they work on images moving instead of 3D modes meaning that all of the environment aspects aren't fully required.

Share this post


Link to post
Share on other sites
EarthBanana    1794

A lot of large scale games use pre-built engines..

 

Unity

http://unity3d.com/gallery/made-with-unity/game-list

 

Cry Engine

http://www.crytek.com/games

 

Unreal

http://www.unrealengine.com/showcase/udk/

 

and here is a list of commercial game engines many of which will have AAA titles made using them

http://en.wikipedia.org/wiki/List_of_game_engines

Share this post


Link to post
Share on other sites
3Ddreamer    3826

Hi,

 

It is safe to say that the larger the game development project then the greater the odds that they use a game engine.  Likewise, the larger the game development and/or the game engine development, then the greater the demand for a team to finish it well.  

 

On the other hand, since you expect to stay at hobby status indefinitely, go ahead and have fun in exploring high and low level coding in the way that you expressed. smile.png

Diving into class libraries would be an efficient way of organizing your games and avoiding some of the "spaghetti" coding which tends to cause heart-attacks in debugging. I also would recommend OpenGL Version 3.1, but just my opinion.  For sure, you don't want to go any lower than OpenGL 2.1, as far as I can see.

 

Clinton

Edited by 3Ddreamer

Share this post


Link to post
Share on other sites
Satharis    2444

Thanks for the advice! Much appreciated. I've thought about making mods but i felt that was the same base as using an engine in that it wouldn't be learning to develop fully due to using a base and editing programs.


Although this is a specific subject: mods, and of course you are right, making a mod is not the same as making a game from scratch, I should point out there is some danger in your way of thinking.

To be honest what it comes down to is: don't do extra work for the sake of work, its a mistake all beginners make and I made myself, everyone does it. But what I really mean is, if you can make a game that you picture, with an engine, then use the engine.

It's often a new developer pitfall that they feel they need to create everything from scratch, to be able to prove they know every bit of the game development process, but let me put that in perspective.

If you're a carpenter, would you build a house from scratch as a novice? Of course not, you wouldn't pull out trees and saw them and build an entire frame and make a roof out of wood and everything, it would take you forever and probably end up terrible! So don't do it with a game either.

Do you know why I choose not to use an engine usually? The reason is: and I'm pretty sure that this is true with most people that choose to not use a full on game engine. Is that it is -faster-. Now you may scoff at that idea at first but the reality is that once you begin to learn the process of game dev, even from working on small games, you'll figure out one thing: that big engines are just that, BIG. These engines are powerhouses and made to do things vastly different from what you want to do, in fact they try to be good at everything. That's one consideration, it may take much -longer- to take an engine like unity and make it do what you want then it would be to take something like SFML and make it do what you want.

Another part of it is learning, people can pretend all they want but learning a new engine is like learning a new language, it takes time and practice and has many nuances and best practices to learn, there is a big difference between someone that has used unity for a year and someone that is a good coder and has never touched it. Is that a bad thing? No, in fact learning that engine means you have it available as a tool in the future, but it is certainly a point to be made.

So what I'm really trying to say when it comes down to it is that you should start at the simplest level you can to finish a game, my advice is to either start with a windowing library like SFML/SDL if you're using C++, or something like Pygame if you're using python, it doesn't really matter, game libraries are a plenty in most mainstream languages.

Of course you can use an engine as well, thats a seperate path, learning to use an engine is usually less about learning to code and more about learning how the engine works by working with it, and -that- is why people often suggest an engine. An engine lets you both get something up and running quickly and also you begin to understand the architecture behind how it works, so when you roll your own code out you have ideas and methodologies to work off of.

Anyway, ending my little rant, I would just say that you should make your goal to be to finish each project and not worry about performance or tool or not being "impressive" enough, learn bits and bobs when you feel it will be beneficial.

Share this post


Link to post
Share on other sites
SimonForsman    7642

Just another query. Do any large scale games such as Skyrim use pre-built engines? Or are they mostly built from scratch?

 

Skyrim was built using the Creation Engine (Which was made by Bethesda for Skyrim(allthough they will likely use it for future titles as well), some earlier bethesda games however (Oblivion and Fallout 3 for example) used the Gamebryo engine (www.gamebryo.com)

Edited by SimonForsman

Share this post


Link to post
Share on other sites
kop0113    2453

The Creation Engine is an evolution of the Gamebryo Engine (in that if you grep through it, there still are references to Gamebryo functions / strings).

Likewise Gamebryo was an evolution of NetImmerse (which Morrowind used). I really like the idea of augmenting engines with newer stuff since I find it a shame when proprietary engines (products) drop support and the next game would have to be written using a whole new engine (kinda loses the charms of the original games).

 

A large company like this can afford to evolve their own unique engines because they have the man power. For a single man or small team, unless the end goal *is* an engine, you probably are not able to invest the 1000s of manhours required to make a featureful engine and a fun game at the same time.

 

That said, if your game doesn't need "much of an engine", then it might be worth knocking up your own rather than learning a large engine such as UDK, CryEngine or Unity (IMO overkill for 2D and there are simpler and better alternatives that specialize in 2D).

Edited by Karsten_

Share this post


Link to post
Share on other sites
Veljex    116

Thank you everybody, this is all a lot of help. Just looking at the OpenGL tutorials it does look a lot complicated and I'm thinking more and more that it is just re-inventing the wheel. I may leave that till later and learn more towards general game development. 

 

A lot of large scale games use pre-built engines..

 

Unity

http://unity3d.com/gallery/made-with-unity/game-list

 

Cry Engine

http://www.crytek.com/games

 

Unreal

http://www.unrealengine.com/showcase/udk/

 

and here is a list of commercial game engines many of which will have AAA titles made using them

http://en.wikipedia.org/wiki/List_of_game_engines

 

Does anybody have a large amount of experience with any of these engines? I know it's a long shot but I personally grew up playing naval based games and would like to work towards something of this level. Something that's worrying me about using an engine is having one that would be able to support features such as waves without effecting the performance.

Share this post


Link to post
Share on other sites

Does anybody have a large amount of experience with any of these engines?

 

Well I don't, but I'd like to point out that Youtube, for the last couple of years, has exploded in a ton of tutorials for anything you can possibly imagine. Watching some tutorials might answer some additional questions:

CryEngine 3

Unity

Unreal (UDK)

 

I don't know about you, but I've learned tons from watching youtube tutorials alone and I also find these very useful when trying to figure out if something is interesting or not. It's a tool in the toolbox for when you want to find information. Going to someone's playlist and looking at the overall array of videos that they've got, can also be a way of shortening down the time you spend watching their stuff (since you don't need to watch every single tutorial video just to get an idea).

Hope it helps.

Edited by Malabyte

Share this post


Link to post
Share on other sites
Veljex    116

Okay I've had a look around and I've downloaded Unity so I think I'm going to start learning in this and see if it is what I'm looking for. If there's anything that you think may help please let me know. I'm always looking for a better way to learn =)

 

Thanks for all the help guys!

Share this post


Link to post
Share on other sites
3Ddreamer    3826

I know it's a long shot but I personally grew up playing naval based games and would like to work towards something of this level. Something that's worrying me about using an engine is having one that would be able to support features such as waves without effecting the performance.

 

Some of my time is spent in making 3D ocean going vessels of all sizes, which I have imported into a couple simulations.  People are pleased that the Indie and Pro versions of Unity 3D have excellent performance with any one of several ocean simulators which you may plug into the Unity engine.  In my opinion, the Triton SDK provides a good balance of quality and performance when used with Unity 3D.

http://www.youtube.com/watch?v=zyQQYPYJ3Jg

 

The default water for the no cost (free) version of Unity will be an adequate place holder until you gain enough experience with Unity to justify an upgrade to Indy or Pro.

 

Perhaps you may want to look seriously into this sooner rather than later.  Follow the link under the video for this water system:

http://www.youtube.com/watch?v=NyFUJLIVa-A

 

The Triton SDK is very flexible and would give you the opportunity to learn the way that creating water should be done in a game or simulation.  In the meantime, there are some third party water libraries for Unity that are no cost or very affordable.  

 

In your coding, you must put the water into memory management and thread allocation to get superior performance.  Since dynamic water is somewhat demanding on computer performance, you will need memory management and processing allocation in order to have the realism that everyone wants.  The C++ libraries are very capable in these areas.  Use the coding languages recommended by Unity and your ocean simulation of choice, rather than recompiling.  (Once you become experienced, then recompiling will be a viable option.) A comprehensive SDK like Triton would be essential.  There are other fantastic water simulators out there, too, so have a look at them, such as a fantastic Russian Ocean Simulation SDK (There are 3 of them from Russia, but I mean the highest quality ones), but the name eludes me at the moment.

 

I recommend that you establish major areas in his order:

 

1) Terrain

2) Import a simple user controlled object and code it to be manipulated by the end user (you at this point).  This is a test.

3) Sky

4) Ocean

5) Import a complex object such as a ship which you like, configure it in Unity 3D, and add any coding along your long term game development functionality.

 

Start simple in these areas.   Learn game development by Version Control system.  Examples are Alpha, Beta, and Version numbers [ Alpha 0.1 thru Alpha 9.9 (higher or lower by need), Beta 0.1 thru Beta 9.9 (or whatever needed), and Version 1.0 thru Version 1.1 thru Version 9.9 ]  You may use your own system of numbering at this stage, but a couple hours into research online about Source Control will result in many hours of increased productivity and happier development.  Keep copies of every version stage of your game development!

 

Make one simple game and finish it. Create a second simple, but improved game and finish it. Develop a third more complex game and complete it.   Working in stages helps the evolution of coding.  Kill the very inferior coding after a lot of hard attempt at a feature of the game with no success.   If it works, then do a better job at coding next round of development. End any game development which becomes so muddled that you get lost or can not debug it any further and start another one.  Keep any useable coding as a springboard to dive into deeper game development.  Your coding will improve on the next game.

 

 

One last piece of advice:  Look for publications on developing a game using Unity 3D on Amazon or other sites, as well as get recommendations from Unity 3D developers on good instruction manuals for coding in that engine.

 

Work hard and enjoy!  biggrin.png

 

 

Clinton

Edited by 3Ddreamer

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this