Jump to content

  • Log In with Google      Sign In   
  • Create Account

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


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
16 replies to this topic

#1 psyhcopig   Members   -  Reputation: 132

Like
0Likes
Like

Posted 10 December 2012 - 10:18 PM

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

Sponsor:

#2 deathwearer   Members   -  Reputation: 367

Like
6Likes
Like

Posted 10 December 2012 - 10:40 PM

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...

Edited by deathwearer, 10 December 2012 - 10:43 PM.


#3 psyhcopig   Members   -  Reputation: 132

Like
3Likes
Like

Posted 11 December 2012 - 12:04 AM

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)

Edited by psyhcopig, 11 December 2012 - 01:30 AM.


#4 Kickpuncher   Members   -  Reputation: 369

Like
4Likes
Like

Posted 11 December 2012 - 07:46 AM

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.

#5 LordRhys   Members   -  Reputation: 367

Like
3Likes
Like

Posted 11 December 2012 - 08:50 AM

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

#6 CptBubbles   Members   -  Reputation: 121

Like
4Likes
Like

Posted 11 December 2012 - 08:54 AM

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)

Edited by CptBubbles, 11 December 2012 - 09:17 AM.


#7 spiralseven   Members   -  Reputation: 132

Like
0Likes
Like

Posted 11 December 2012 - 12:34 PM

If you want to start a study group and a studio IM me because Im at about the same level as you are

#8 psyhcopig   Members   -  Reputation: 132

Like
0Likes
Like

Posted 11 December 2012 - 12:58 PM

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.

#9 CptBubbles   Members   -  Reputation: 121

Like
0Likes
Like

Posted 11 December 2012 - 03:47 PM

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.

#10 wizardpc   Members   -  Reputation: 282

Like
0Likes
Like

Posted 11 December 2012 - 03:52 PM

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.

#11 SharkBaitHooHaHa   Members   -  Reputation: 271

Like
0Likes
Like

Posted 11 December 2012 - 11:10 PM

https://www.youtube....t=ELp5mgUw5g9EY (2D Game Engine in Java)


Woah woah woah....sorry haha I was just reading this thread and felt the need to post. I want to warn you about this video tutorial series. I had been following for a while and had a nagging feeling tugging at my side for the longest time and it was just recently confirmed. I've been programming Java for quite some time now, and just recently finished my second college course in it. I can say that this guy definitely does know his Java, but if you're going to watch this tutorial, be wary. His code is obviously inspired by Notch's code from Minicraft, which there's nothing wrong with that, HOWEVER, he does not really demonstrate an understanding of what he's doing with that code. For the graphics, Notch colors his sprites in the code by using some bitwise operations, and when it comes to explaining those, he tends to just dance around the question and make it seem like he actually answered it. Be very careful if you're going to be following that tutorial. The results of the tutorial are pretty snazzy I'll admit, but for the majority of it, you're just going to be copying his code without understanding it too much which is going to be troublesome.

I don't know if anyone else has any thoughts on this, but this was my general experience with that series. Makes me sad because the videos are very well done and I really wanted to like that series.

I also agree completely with Kickpuncher, Unity is a swell environment and I wish I'd have more time to work with it(too many school projects recently). My C++ and C# are trivial compared to my Java knowledge, but I can differentiate them and I can say that C# does indeed feel more at home for me to read/type.

Sorry if I couldn't contribute too much in the way of an answer, I'm in the process of learning C++ so I can implement OpenGL with it myself :] and then I plan to port my knowledge to Java and LWJGL, so I wish you luck on that!
-Adrian

#12 psyhcopig   Members   -  Reputation: 132

Like
0Likes
Like

Posted 12 December 2012 - 01:26 AM

The movie videos I watch I'm starting to fall for Unity, it feel really simplistic but I suppose everyone needs to start somewhere. Besides, Unity feels so... Well designed, some of the other programs just seem to feel clunky, same feeling I get when I compared Gimp to Photoshop, for me Photoshop wins out every time. No worries, I have a disdain for Java personally so by no means will I be going that route. It's pretty safe to say at the moment my chosen engine is Unity, once I get the hang of just what's all involved from a pre-built engine I'm sure I'll venture to craft my own, for now Unity definitely seems like it will suit my needs.

The Prime question now is: If anyone has any RPG Specific Guides / Tutorials or Videos for Unity that you recommend, feel free to reply. Or heck, if you have any links you recommend as a whole, It's not uncommon for me to have a billion tabs open and go through things one by one, the more the merrier. Posted Image

I do seem to be having a hard time finding a comfortable IDE. Playing around with Visual Studio.. I dunno, I just don't like it's stylization. However in the videos linked above (https://www.youtube.com/playlist?list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN) MonoDeveloper looked nice, and I think I might go with CodeBlocks, I just need visual simplicity.

Edited by psyhcopig, 12 December 2012 - 02:42 AM.


#13 Riphath   Members   -  Reputation: 151

Like
2Likes
Like

Posted 12 December 2012 - 03:50 AM

I know Burgzergarcade has a series of tutorials on unity about making an RPG. His channel also has a short playlist of videos on C#, and I'm sure he'll be uploading more of those soon. I wouldn't recommend starting with an RPG, though. An RPG is a really big undertaking. You should try and finish several smaller projects, and then some medium sized ones first, so you can get an appreciation for just how much work an RPG would take. You can of course follow along with the tutorials about making a hack'n'slash, but make your own little games as you learn new stuff till you get the hang of it.
As for an IDE, if you go with unity, it comes with MonoDevelop. Code::Blocks is usually just for c++ and isn't part of unity, however. You could try and learn both c++ and c# at the same time if you want, so long as you can keep them separate. Learning c++ will teach you a lot about what's going on underneath the higher level stuff, while c# with unity will get you a finished game easier and faster. But it's hard to keep languages apart when you're first learning. It can be done, however it might not be the best idea. That's up for you to decide.

#14 Kickpuncher   Members   -  Reputation: 369

Like
0Likes
Like

Posted 12 December 2012 - 07:25 AM

http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial

pretty badass place for rpg elements.

I love unity. I used to waste a lot of time with engine development from scratch. after spending days writing model loaders and renderers (nevermind animation) I decided to focus more on game development... it's a lot more fun. Definitely find unity WAY more productive.

#15 Kickpuncher   Members   -  Reputation: 369

Like
0Likes
Like

Posted 12 December 2012 - 08:08 AM

I know Burgzergarcade has a series of tutorials on unity about making an RPG. His channel also has a short playlist of videos on C#, and I'm sure he'll be uploading more of those soon. I wouldn't recommend starting with an RPG, though. An RPG is a really big undertaking. You should try and finish several smaller projects, and then some medium sized ones first, so you can get an appreciation for just how much work an RPG would take. You can of course follow along with the tutorials about making a hack'n'slash, but make your own little games as you learn new stuff till you get the hang of it.
As for an IDE, if you go with unity, it comes with MonoDevelop. Code::Blocks is usually just for c++ and isn't part of unity, however. You could try and learn both c++ and c# at the same time if you want, so long as you can keep them separate. Learning c++ will teach you a lot about what's going on underneath the higher level stuff, while c# with unity will get you a finished game easier and faster. But it's hard to keep languages apart when you're first learning. It can be done, however it might not be the best idea. That's up for you to decide.


i clearly did not read this before posting. apologies.

#16 psyhcopig   Members   -  Reputation: 132

Like
0Likes
Like

Posted 12 December 2012 - 01:00 PM

No worries, I understand the complexities of an RPG, at least at ground level. At one point in High School I was all about RPGToolKit and it debacle of bad code, never made a completed work much less a fully fledged worthwhile stat system, but I definitely under the work needed. Starting with Cooking with Unity, his Space Invaders one is really informative (Although he RREEEAAALLY needs to work on Editing of his videos / ... Coming prepared) The links thus far are great! The Hack and Slash tut is just up the alley of what I'm wanting, especially combined with some effects from BurgZergArcade. :D This is going to be great.

#17 keilius   Members   -  Reputation: 101

Like
0Likes
Like

Posted 12 December 2012 - 03:08 PM

This is exactly the information I've been looking for as I had the exact same question as psyhcopig! Thanks!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS