Action RPG, C++ and a Noob. Needing help to learn, at least a direction.

Started by
15 comments, last by keilius 11 years, 5 months ago
The internet being the vast place it is I've tried lately googling things as simple as "Basic game made from C++" ... Let me start over, I'm highly tech savy, have a good grasp on creative design, and understanding Software. I've taken only two coding courses whilst I was in High School, one for VB and another for Java so I'm not unfamiliar with the concept of coding because I've also done a fair amount of moding games like The Sims (1, 2 and 3) as well as The Elder Scrolls series, also plenty of time breaking down my android device and recomiling ROMs, Rooting, ect. So my ultimate goal is to make a simple RPG I can play with, I'm not worried about level design at all as much as I wish to grasp the basics of actual coding design and the interaction between the GPU, CPU and the code at hand. I seek to make a game where a character loads to a flat 3D world, some basic ground texture, a texture tree-line border and a skybox (Think Orcania of Time, minus zoning and any objects, monsters or any models other than ground and character). Upon loading the character I wish to learn how to craft a menu system, form skills and even a simple UI for something like a Skill Bar, so now we're looking more like a single zone World of Warcraft without it being Online. My goal is just to learn and develop more concrete ideas basic on actualities of software design because outside of actual design my brain is constantly bustling with design concepts for worlds, creatures and races (Usually being formulated into a D&D scenario).

My main problem: I'm overwhelmed with where to start. I feel I can grasp coding pretty well just by my nature of learning though I learn by example and explaination most googled examples I see start with "Here's a brick of code which does this" without explaining each piece, why it's there and how it's formulated. Actual graphics resources shouldn't be too hard as I'm pretty good, or ... At least good enough to get simple models crafted (Again, I'd need guidence in thinks like skeleton structure and animations!) But, that's all far ahead. I'm not expect an over night learn, by no means. Though, I figure of all places, after going through various posts here you guys are helpful enough to hopefully set me on the right track and fit a good path to go down, I'm seeking more resource links which seem to fit alongside my theorum as I need practical application to be interested so while simple 'Hello World' apps can take me only so far, if it doesn't relate to my goal I lose interest. Though I do have enough drive and passion I seek to learn!

So If you guys would be so kind, help a (hopefully) new developer learn his first steps. :3
Advertisement
Hey, here's how I see it.

1. Choose a language.

You have a background with programming which is a good start. You can use any language you want. I personally recommand c++ since this is the language most used for games. It has many free compiler, libraries and lot's of help from people.

You could also use Java, C#, Python. Which one of these is the best? (None, you could search here, we have tons of topic on these. It's a matter of preference, target, portability, etc, etc).

2. Choose a compier

I personally like Visual C++ (Or Visual Studio). The Express version are free. You could also use other compiler but since I live in a very microsoft-ish world, I mainly use Visual Studio and couldn't recommand something else. Someone else could.

3. Decide the render system/Graphic engine.

You can choose to develop using DirectX or OpenGL from the ground. If you choose this path you will learn a lot on how the rendering is made, but you will find yourself loosing a lot of time playing with it instead of coding a game.

You could also choose to use a Graphic engine, which wraps DirectX or OpenGL (Or both) for you and expose you classes that will make your development faster and easier. Engine list . I personally like Ogre3D, which I think is not in that list, no idea why. It has many tutorial, help, manuals and a very active forum if you need help. Other people could recommend you another Engine too.

I'd go for a Graphic engine too. It's fun to code the core graphics stuff but if you want to finish a game, you better use one since other people have worked years on these engine which can probably do everything you want. And replicating these engines could take you years too.

4. Write up your steps.

What do you start with and focus on. It's important to stay focused and not throw yourself everywhere. Don't code a bit of input handling then do modeling and then texturing. You will find your project not going very fast and you will eventually quit.

Sugestion :

1. Create an empty project.
2. Load test models with or without/texture
3. Handle input
4. Handle camera movement if needed.
5. Make a more complex scene
6. Create good looking model with texture, add light to your scene too.
7. Etc...
1. By far C++, as I see the application of learning or at least understanding it's basics can help me in more than just gaming, or just a solely in game creation. Though I'm flexible in this aspect as I feel most Coding application can be applied to most languages I'm willing to go where the Engine takes me, so long the engine does what I need.

2. Easy enough, I'll just have to find one I like, thanks for the link! I downloaded a random one but it freaked out not having other distro packages available or something.

3. So many Engines. It's hard to wrap my head around which one would be best. I'm not looking for high graphics power (As the PC I'm currently running has trouble if I Render 3D models too hard) but I'm definitely looking for simplicity, most of this comes from me wanting to flesh out in my mind what my actual combat / skill system will be like. I'm mostly interested in working with actual distances, attack ranges, damage, Health, anything related to combat and skill progression more than making the world (As the world is Waaaaaay to vast for me to even want to try and tackle without a fun core concept of gameplay). When I think of Engines I have a hard time defining what's better at what, and what's capable of what. Of course my first steps were googling what some of my favorite games use as their engines and take those games as example, but also fear the limitations... For example I love almost anything Bioware, and a handful of Iconic ones (Dynasty Warriors, Fable, Elder Scrolls) Problem is, 90% of the time they of course have an in-house built engine...Which is fine, but I can't seem to find a good comparison of actual mechanics, the coding is not what worries me, the limitation of 3D space is what worries me. I'd had to start to learn one Engine only to find out (Not that this would happen) that by some chance it doesn't allow for a jump function, or doesn't allow actions to be performed while a model is not on a surface. Edit: After going over several engines, Time of Day seems to be questionable, if due time I'd like the engine of choice to be able to support dynamic Time of day... Not sure if it's possible on an engine which doesn't natively support it to code it or not. I figure time of day would simply be a dynamic set of code working in the background not something that exactly has to be pre-installed, but a lot of engine seem to boast 'Time of Day System!'

4. Understandable. As for right now my concept is simple, just a learning experience.
1. Understand basic world generation, how to actually call a landscape, ground and boundaries.
2. Understand basic movement, generating an on-screen character, POV and Camera work.
3. Formulate a more complex backend to this basic world, starting with a UI, code to perform a simple attack skill by a keystroke.
4. How to call an enemy model, give the enemy model health, define how to determine a collison between the two as to form a 'Hit'
5. Generate a character sheet UI, the ability to gain XP or gain some method of advancement (Still undetermined, thus why I wish to play).
6. Have the ability to try out skills in a 3D space, see reasonable limitation and simply explore the possibilities based on my current concepts of progression and imagined gameplay.

Scenes and story are far, far in the future. If I can get this basic framework above, I'll move from there of actually building environment for this starting area, eventually craft a menu, and who knows if I run with this long enough maybe actually some a something which could coherently be considered a game. xD The passion and drive is there, and I have plans to set aside time for it, give it some dedication, I just needa concrete base that seems reachable. Of course in the world of code the world is incredibly vast to me. Though the basic outline really helped! I didn't think of needing a compiler (I always assumed there was some way to do this from within the game engine, or that the code was written within the engine)
Check out Unity 4. Start prototyping with it using C# (which is at lot more pleasant to work with than C++, at least for getting things up and running quicker). You might find that when you're done prototyping, you can just swap in higher quality graphics (models extures\sounds) and bam. game.
I'd also recommend Unity going by your initial post on what your looking to do. There are plenty of Unity Demo's and tutorials out there to get you started. Check out youtube, and also you can check out tutorials at BurgZergArcade.com
It seems you underestimate the amount of work it takes to write your own 3d-engine from scratch...
I like Kickpuncher's suggestion. Unity is an amazing engine and all the hard stuff (rendering,animation,providing an editor,etc) has already been done for you, so you can just focus on creating the actual game. Unity supports C#(quite similar to Java), Java Script and Boo for scripting.
If learning how to code a game from scratch is more important to you than actually creating a finnished product, then you're going to want to get a good understanding of programming and master at least one programming language (I don't recommend C++, since it's quite difficult compared to languages like Java and Python). You're going to need to learn how to use classes,lists,import data from your hard drive,etc. Pick up a graphics frame work like SFML/SDL for C++, PyGame for Python or Slick for Java and try to write some simple games like Pong or Tetris before trying to create some more complex 2d games like an RPG.
Trying to write a 3d game without knowing how to code simple 2d games is like trying to fly an airplane when you can't even drive a car.

Edit: You really don't have to worry about things like engines not providing a "jump function"... There are very very few things you can't do with popular 3d engines like Unity or the Unreal Engine.

Some resources :
http://inventwithpython.com/chapters/ (Learning python by creating games)
https://www.youtube.com/playlist?list=ELp5mgUw5g9EY (2D Game Engine in Java)
https://www.youtube.com/playlist?list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN (Unity Video Tutorials)
If you want to start a study group and a studio IM me because Im at about the same level as you are
Unity does sound promising, I downloaded a handful of popular ones with intent to just play around and see which interface I like more. As interested as I am in actually learning how the programming behind an engine works, I can't say I'm too ecstatic about the idea of coding one myself, as again I want to get to gameplay more than worrying about if my model is going to show up correctly. Though I feel there's some core knowledge there which I'm lacking which I can't seem to find answers on which don't involve almost entire thesis documents on the subjects. I don't want this to be easy or simple, as I know it's not going to be, I'm trying to approach this almost like a college course wanting the foundational knowledge as well as the practical knowledge. I've tried my hardest to make a coherent design document which seems rather lacking (Aside from story/world content) I really want to know how the hardware pieces talk to one another for game enabled systems. I'm sure it's more complex than Processor - GPU - Monitor, I guess I'm seeking of how our code interacts with the GPU, the idea of it just 'Knowing' what I'm calling is crazy to me.

I really want to know how the hardware pieces talk to one another for game enabled systems. I'm sure it's more complex than Processor - GPU - Monitor,

You really don't need to worry about that (unless you're writing drivers or very low level systems, I guess). Knowing how RAM works is a lot more important (though not when developing with Unity). I'm not quite sure what "Core knowledge" you're referring to, but the Cooking with Unity video tutorial I posted in my previous reply should give you a nice start. If you wan't to learn more about programming in general, you may want to read a book or at least a web tutorial on a language of your choice.
I went the "C++ , make your own engine, Use OpenGL/DirectX" route.

I've learned a lot, espically while implimenting custom classes to handle topics like

Shaders
QuadTree- Terrain
Water
Clouds
Networking code
Input
Loading/rendering Models
Custom GUI classes

I'm sure an engine would give you all these things as well.

This topic is closed to new replies.

Advertisement