Where to start when making my game?
Oh quick side note: I should mentioned I am planning on making the game using C++
Some people say use a pre made engine and others say for 2D games I should build my own engine from the ground up. I want to know your guys opinions, is it best to create my own engine or use someone else's for my game?
Unless you eigther:
1) want to create an engine or
2) want to learn how to create an engine or
3) want to vastly improve your low-level coding skills or
4) have some very specific need that cannot at all be handled by any existing engine
you should never make a custom engine. If you want to make a game, take advantage of whats on the market. Unity, Unreal are both very good, for starters.
I'm currently writing my own engine since 5 years, and it took me 3 years to get to a point where I had an editor that was useable, compared to Unity. At the point I'm at now, its actually getting really productive working on the actual game, but I still spend a huge amount of time developing the engine/editor, that could be spent on the game (except for me its reasons 1-3 so its fine). I'd not recommend it otherwise.
EDIT: Also, if you actually do decide to code yourself, you should not make an engine, but a game, unless 1/2 apply to you. An engine as an external unit/application is a huge task, as I've shown, coding a game from scratch is more work than using an existing engine but is certainly doable - much harder if you put work into creating a reusable engine as well.
So so seeing that you'd want to use C++, there's a good ton of libraries as well to help you out - SFML/SDL on the one side to take away some low-level stuff like IO, window creation, ... and more advanced libraries like Ogre3D, Irrlicht etc... which take away most basics of rendering & basic application structuring.
Generally, you do not want to build your own engine just because it is a lot of (unnecessary) work for a 2D work. It is much better to work on the game with an existing engine like Unity or Unreal because you will get more work done and it is far more reliable to use.
2D, or 3D, I recommend using a game engine.
For 3D, you could use Unreal Engine. As you mentioned C++, you can code parts of your game using C++ in Unreal Engine.
For 2D, there are a wealth of game engine options, but I would recommend GDevelop, since again, you can program part of your game in C++ if you wish.
You could, if you want to learn more about coding rather than a specific game engine, implement your game in C++ and use some of the many available libraries to create the game. Some such helpful libraries could be SFML (simple fast media layer), allegro (gamedev lib) or SDL (graphics), OGRE (3D graphics), openGL (graphics) and I assume you already use boost? It would help to know more about what kind of you game you intend to do to point you in a good direction.
You might be able to tell from the above reply, but I also do not recommend starting out by coding your own game engine.
....I assume you already use boost?
Like I said I'm just starting out, I have taken a few C++ coding classes but want to try and learn more.
I vaguely knew of boost. Are their any other primary libraries that are almost must for coding any 2D game?
Sorry if these are really basic questions but I really want to learn this and to start this whole process off right.
....I assume you already use boost?
Like I said I'm just starting out, I have taken a few C++ coding classes but want to try and learn more.
I vaguely knew of boost. Are their any other primary libraries that are almost must for coding any 2D game?
Sorry if these are really basic questions but I really want to learn this and to start this whole process off right.
It's not required to know boost, or even C++ at all, to make games. However, I suggest that being familiar with the C++ standard library and boost will be hugely benefitial to your future coding, game development or otherwise. So, no, those libraries are not required, but I really highly recommend learning them.
... but I really want to learn this and to start this whole process off right.Except there is no single "right" for everybody.
Your background and experience so far is unique, your goals are unique, and your interests are unique. Those things alone already make you will walk a unique path from where you are to where you want to go. As a rough guide:
- Use the programming language you are most familiar with
- If you want to produce finished games, use an engine. These things do a lot of the low-level ground work for you.
- If you care less about finishing a game, but more about learning to program, you can step in lower. Pick an engine/library that does less things, so you need to do more low-level ground work yourself. It's very educational, but slows you down a lot on reaching the finished game state.
- Start small. That means much smaller than you think now. Probably even smaller than the smallest thing you can think of. Point is, programming is slow, especially when you are still learning the language. It's easy to overdo it, spend weeks and get nowhere. While it's an experience you must get through to get a sense of what you can manage and what is too big, it's not fun when you in the middle of it.
- A list of games to start with: https://www.gamedev.net/resources/_/technical/game-programming/your-first-step-to-game-development-starts-here-r2976
You will notice that your favorite game that you really want to make is not in the list. That is intentional. The intention is to get your feet wet, up to your knees, so to say. However, all games have a common structure, and largely the same kind of problems. So by making some games of this list, you get a lot of experience how these things work.
- Finally, don't prepare forever, just start. Today is a good day to program Pong or Tetris, I'd say.