Greetings;
First of all; The reason for me to ask this question is because according to the communities/ forums, that I go to, debate upon the part where if one is planning to make games on ready-made game engines and / or using C# instead of C++ for game development. The debate runs further on where the members enforce one to create their own game engines using C++. While that is all good and kind of make sense, in my previous thread which was relevant to the same sort of discussion one of the members stated "you can do that in unity."
Leads me to ask this obvious question(s) / requesting a suggestion:
Would you (if you chose to, ) start making small games ( possibly for phones and PC) while being an independent "game developer," using Unity?
If so; Would you recommend one to use it until he/she have a better foundation for traditional way of doing things for example: Work on their own game engine using C++, or stick to Unity?
Replies
However I do know a few programmers who have turned indie and made their own custom engines. It's usually been because the game they're making is specialized in scope in a particular way.
Because of this I feel that the best option is to think about making your game in a 3rd party engine first (unreal, Unity etc) and then, only if there's something really special you need, look at creating your own engine.
Making engine is a fulltime job. You get payed for it. You will have no time to make games if you go this "traditional way".
You can extend existing engines, but writing one from scratch == years, light years before you will make a game in it.
Go Unity or UE4 and learn how to extend those engines if you need, that's a traditional way. Not writing you own custom engine.
You'd have to have some very specific needs for that to make sense nowdays, really.
Unity is great, especially for starting out, I'd definitely recommend it. It's probably the fastest way to get started.
You may want to take a look at both Unity and UE and see which one fits your needs better though.
While most people might not have any need for a lot of the benefits provided by making an engine yourself, the amount of knowledge you gain by making an engine is quite valuable and will probably change the way you attempt any kind of future gamedev problems.
For beginners, I think a good path to take would be to start out writing higher level code by making a game in an engine like Unity (or doing non-gamedev projects), then slowly work your way to lower level code. In the past, people had to write their own engines out of necessity which meant a huge learning curve for learning game programming, but that isn't the case anymore.
Currently I am doing both actually; Practicing code in C++ and Java, while studying how C# works in Unity. The problem is, it has been a long time and I have yet to make myself known for what I really want to do in this industry, but based on my tight schedule, I cant really focus on much until / unless I am fully involved in game development. I get more coding time in my hand if I get involved.
Your suggestion is relevant and that is exactly what I thought, but I also thought a lot of coders hate those who cut corners, so I asked this question anyways.
All of /\ this.
We stopped writing new game engines from scratch every time we wanted to make a game TWENTY YEARS AGO. Anybody who is hung up on that either has something to prove to everybody who isn't interested anyway, or they're really stuck in a bygone era.
I wouldn't consider not writing your own engine as "cutting corners" although I've seen some arrogant programmers make ridiculous claims like that. At the end of the day, you should take steps to move towards your ideal job. If you want to develop or improve a game engine, then learning how one works is an important step of the process. Similarly, if writing gameplay code is your dream, then learn how to efficiently write gameplay code.
Re-inventing the wheel every time you work on a project won't get you closer to completion. If an engine like Unity does every thing you need it to and the cons of the engine can be dealt with, then there's no reason not to choose it over making your own tool unless you want to do a learning exercise.
Contributing to any open source project is a great learning experience because before you can add to it, you need to understand a lot about how the project works beforehand.
I'm not saying that everybody should write an engine from scratch, but if nobody tried writing a game engine in order to push themselves as a programmer, then it is quite likely that we wouldn't have awesome tools like Unity and Unreal Engine in the same level of quality that they are today. Also, if somebody does choose to write their own engine, it would be important to realize the actual scope of the project. Making a game engine is a lot of work, but it's not like every game engine has to have the same amount of features and polish that Unity or Unreal Engine has.
Insisting on building your own engine is a Ego thing, nothing more. Thats not the voice of reason.
Programming language does not matter, I write in game maker script and its more than enough to
get a game with lots of features running, and its like 1/3 of C#. Don't go with C++ if you don't have to. Nobody cares how you build
it, get something working at all, thats more than hard enough.
Point being that making an engine is a huge undertaking, especially if you are trying to go for the look that UE4 or Unity can achieve. Those projects also have tons of people (don't know the exact number of either) working on them as a full time job, there is no way a single person can do it in a reasonable amount of time.
If you want to make a game, especially one that is a solo man project, play to your strengths. I great quote I heard just yesterday about indie development: "Start where you are, use what you have, do what you can"
An engine is something that huge teams of people take on. For just one person to make an engine on their own is going to take years and probably isn't much worth the "I made it from scratch!" bragging rights.
Cavestory was written from scratch and it took him 5 years to make the engine and the game. Things are different now and you can probably do it even faster but if you really want to dive in and just design a game then use a pre-made engine or poke around at some other open source ones if you need too(UE4 is open-source fyi). UE4 and Unity provide you with a platform when you mostly just have to worry about iterating your design.