i have a question. I want to make a role playing game in c++ with visual studio, and i was thinking i would make the game text based first and then add graphics to it, something like (Zelda) and stuff. Would it be a lot more difficult if i do it this way, or should i start coding the game engine and making it graphical as i go along? And maybe you could recommend how to do this better? I want everything made from scratch. Maybe you could recommend some methods on how to make this small project of mine? Thanks in advance!
RPG game c++ visual studio making process
May I ask the reason why you would want to make everything from scratch? The reason is very important to make good suggestions!
It sounds like you want to learn programming by doing everything, while not having much experience at programming/art to begin with. What you want to do actually has a name: Not invented here syndrome. Let's put aside the typical sarcastical comments about how you'd need to make silicone from sand, create your own chipset and architecture and own programming language, operating system, etc.
We are, depending on the quality of game you want to achieve, talking about several months, years, even decades or centuries in man-hours of work for a 3D game.
The artistic side, the story telling and all that stuff also takes time. It's not just the programming!
A simple mobile game, which uses premade libraries, frameworks and so on, takes a small team several months to create in full-time. I assume you know how little content most of the mobile games actually offer. Take away the premade libraries and frameworks and you already reached at least a year, most likely several, of work.
A game like TLoZ Breath of the Wild involves dozens of developers working over several years, leading to dozens of years of man-hours of work. [It should actually be in the regions of several centuries, but i don't know how many people worked for how long, so.... yeah.]
For solo-devs you can generally say: The scale of a Zelda game is out of scope. EDIT: Assuming art is also part of the doing yourself stuff ( @Rutin sorry, should've stated that more clearly )
One example of a veteran programmer creating everything from scratch would be Handmade Hero (putting aside controversy about his programming style). 478 videos of on average 1.1 hours length amount to approximately 66 days of 8-hour work to get to the current state, and it's far far far from finished.
In case you really do not want to use anything:
Since you are only left with the
- C++ standard library,
- the Operating System's API (multiple, if you want portability)
- and maybe a graphics API (OpenGL, DirectX, Vulkan, ...)
I would suggest to start with a text-based RPG, on a single platform (maybe unix based, since those can at least easily be ported between different unix distributions later on).
Text-based means that the game happens inside a console window using ASCII art, leaving the rendering to the OS, instead of writing one with the graphics API. One of the best known examples might be Rogue [from 1980]. There's a whole branch of game development named after this game on reddit.
In case you want to learn game programming:
Either grab
- seperate libraries for different tasks (rendering, input, sound, animation, ...): hard
- a framework (SDL2, SFML, ...): less hard
- an engine (Unity, UE4, Godot, ...): medium
Even if you use an engine like UE4, and software like Maya for 3D modelling, making a game the size of Ocarine of Time as a solo dev still takes a very long time. You have to compose music, model every mesh, texture every model, animate players and NPC's, write a story, ....
As well as creating the game logic of course. (Which I asssume is what you are actually interested in learning)
4 hours ago, Uldis Valainis said:I want everything made from scratch. Maybe you could recommend some methods on how to make this small project of mine? Thanks in advance!
What do you mean by from scratch? You mean at the DirectX or OpenGL level? Thats a pretty daunting task if you don't have a lot of experience. Hell... it's daunting if you do have a lot of experience too. I know I'm working on an engine and I have 35 years of programming under my belt. If you really want to go forward like that, I think your first notion might be the way to go and make it text base to start with.
4 hours ago, Uldis Valainis said:I want to make a role playing game in c++ with visual studio, and i was thinking i would make the game text based first and then add graphics to it, something like (Zelda) and stuff.
I think OP mean something like NES Zelda...
Well he does want to start with text based game. This won't require OpenGL or DirectX, and it is actually doable with almost nothing rather than just a compiler. I doubt game like zelda can be created entirely text-based though. If I recall correctly, Zelda is action rpg which I don't think it can be done entirely with text commands.
If you're going to use C++, I would suggest looking into SDL or SFML and going from there. Just don't think about "engines", only think about making the game itself. I'm also assuming you're talking about a 2D Zelda?
1 hour ago, Iltis said:For solo-devs you can generally say: The scale of a Zelda game is out of scope.
This is actually not correct. I would say that someone starting out would not be able to make a Zelda clone using C++, but a seasoned developer could make one solo for sure. The amount of time would depend on the programmer's skill and ability, plus their already established code base. Of course we're talking strictly programming here, not visual or audio assets as that programmer would need to have a wide range of skill sets.
1 hour ago, mr_tawan said:I think OP mean something like NES Zelda...
Well he does want to start with text based game. This won't require OpenGL or DirectX, and it is actually doable with almost nothing rather than just a compiler. I doubt game like zelda can be created entirely text-based though. If I recall correctly, Zelda is action rpg which I don't think it can be done entirely with text commands.
Yes, you are correct, sorry for not clarifying I have some knowledge on text based rpg games, with shops, travel weapons and enemies all that good stuff, but i have absolutely no clue about graphical things, so i thought to ask here for advice before reading all of the internet on stuff i dont quite understand. The game would basicly be NES zelda with pokemon style fights, as i said previously i have made text based rpg games with sound effects and music (Im a little bit of a musician) but the graphics part is what worries me. I understand that its a long project i wanted to make a really small alpha that seems to do the main tasks and then expand though out the year. Im an IT student and have enough free time to work on a project a few hrs a day.
1 minute ago, Uldis Valainis said:Yes, you are correct, sorry for not clarifying I have some knowledge on text based rpg games, with shops, travel weapons and enemies all that good stuff, but i have absolutely no clue about graphical things, so i thought to ask here for advice before reading all of the internet on stuff i dont quite understand. The game would basicly be NES zelda with pokemon style fights, as i said previously i have made text based rpg games with sound effects and music (Im a little bit of a musician) but the graphics part is what worries me. I understand that its a long project i wanted to make a really small alpha that seems to do the main tasks and then expand though out the year. Im an IT student and have enough free time to work on a project a few hrs a day.
Don't be worried because it's very doable with the right skills and amount of time. I would suggest using SDL or SFML for this because you'll be able to visually see results a lot faster starting out than learning something like DirectX or OpenGL at this stage. You can also consider just dumping C++ and going right into C# with Unity as this is more beginner friendly. You'll be able to transition fairly easy if you have a fair amount of C++ experience, just keep in mind about the differences in "references".
Regarding your graphical skills, this is something you'll have to work with. It's very common to find programmers that cannot create graphics or compose music and sound effects. You have a few options, learn to make graphics, use programmer art, buy or find free assets online, or find a partner to work with. I understand the graphical struggle which is why I went and learned modeling, texturing, and animation.. I've been programming for almost two decades, but I did some music work before just not a lot of graphics and I was always lacking in the visual department for my hobby games so I devoted a few years in learning the craft.
Everything will take time so keep that in mind. The amount of time will depend on you.
You'll do fine! We're here to help you if you have any questions. If you need 2D pixel art tutorials let me know.
2 minutes ago, Rutin said:Don't be worried because it's very doable with the right skills and amount of time. I would suggest using SDL or SFML for this because you'll be able to visually see results a lot faster starting out than learning something like DirectX or OpenGL at this stage. You can also consider just dumping C++ and going right into C# with Unity as this is more beginner friendly. You'll be able to transition fairly easy if you have a fair amount of C++ experience, just keep in mind about the differences in "references".
Regarding your graphical skills, this is something you'll have to work with. It's very common to find programmers that cannot create graphics or compose music and sound effects. You have a few options, learn to make graphics, use programmer art, buy or find free assets online, or find a partner to work with. I understand the graphical struggle which is why I went and learned modeling, texturing, and animation.. I've been programming for almost two decades, but I did some music work before just not a lot of graphics and I was always lacking in the visual department for my hobby games so I devoted a few years in learning the craft.
Everything will take time so keep that in mind. The amount of time will depend on you.
You'll do fine! We're here to help you if you have any questions. If you need 2D pixel art tutorials let me know.
Thanks for the advice! This helps a lot!
It really depends on how you point out different goals. Make a tight plan and try to be on time with it, and do it feature by feature. No matter whether you decide to go 3D or 2D, no matter how complex game mechanics are going to be, etc. You WILL need a plan that is finished (and ideally not delayed without any good reason).
Some time ago I was working on RPG (pretty much as solo developer!), it went quite well - we put together a solid tech demo for 3D RPG (it took us few months), with reflective water, shadows, grass, collisions (so you could walk around), nice models ... I'd say quite good for that time. You could walk around that world. And that was pretty much it - there was no solid development plan or anything. And that is the point where it failed - without any plan into future there was nothing we could hold on, eventually the team dissolved and project has died.
One important notice, that project - although never finished - taught me a LOT of things. Not just how to do certain mechanics, but also how to manage a small team (and hot not to do so). Also at the time, I was in the college - not even on university (so I didn't have any real world work experience) - we were just few guys that wanted to make a game, made it into the tech demo at the time. My advice is, even if the project looks larger and you aim mainly for learning something - it still may be worth it, even if you won't finish it.
it's always much easier to start, than to finish a project :).
However they say, some people who start a project might not be able to finish a project, but people who don't start one will never finish one. --- not an exact quote and I can't recall who said this :P.
Back to the topic. I think you should start with a very small, one room with a sprite walking around, then add some monster in, etc.... That should give you some idea on how you could proceed.
Good luck!