How come many of you prefer to make games from scratch rather than use an engine?

Started by
24 comments, last by YucelKaramanli 11 years, 4 months ago

Personally I do it to learn and get better at it. I also think it's really fun to commit to do something and then do what it takes to accomplish it.

Advertisement

I think one reason to write from scratch rather than an engine is also the flexibility of doing things EXACTLY how you want. It just comes at the cost of massively increased effort and difficulty which is fun in its own right for some.

I believe, there are as many valid reasons to not use an engine as there are to use one.

  • Learning to use an engine takes time. Sometimes it's faster to do it yourself, especially for small projects and if you don't plan on doing another similar project.
  • NIH syndrome and it's not always bad.
  • Prevent vendor lock-in. What if the engine developer decides to stop supporting the engine? What if license terms do change? What can you do when there is a bug in the engine, will it get fixed or do you have to work around it?
  • Cost, sometimes doing it from scratch is cheaper than licensing an engine. Sure there are free engines available but sometimes they don't offer what you need or have strange licenses (especially the "free" versions of commercial engines) or even unclear licensing conditions.
  • If you do it yourself you can learn how it's done. If you're using an engine, you learn how to use an engine. (Often the first one is more fun, but also less productive.)

One more thing, maybe it get's a bit offtopic (just couldn't stop). I believe doing it yourself gives your product much more value. Not necessarily value in the sense that you will get rich. But you yourself will value it much more. Even if this only means that you will be more confident it might pay of. Maybe it makes you decide to sell your games for a few dollar/euro/... more. And to tell truth I would prefer to sell a few hundred games for 20 or 30 bucks than be one in a million developers that sell their crappy app for 99cent. Even if the 99cent developer get's more money out of his game. I can't imagine have worked on a game for month and the have people pay less than a few dollar for it. It must feel horrible to produce something that is of so little value to the customer.

Note: I've never published a game and don't work anymore in the field, it's just my personal opinion. And I feel this even more stronger ever since I work on commercial software. You basically have a good (not perfect) product that is of use too the customer and he's paying a good price for it. If it wasn't worth it price there wouldn't be any customers...

The great thing is that even though they aren't very many customers the company is having a quite string relationship with them. Of course they exspect that, since they are paying each year to receive maintenance.

But can you imagine a 99cent app developer having a strong connection to his clients. (With strong I don't mean a facebook page and a forum or similar things.)

Sure even if you sell your game for 60 dollar you won't have the same kind of connection to your customers as a software house that is selling licenses for a couple of thousand. But you can offer much more than someone that is putting it out for 99 cent.

This is all from a developer point of view. If you're an artist it's probably not as important because your work will show on the screen and can be valued.

But to connect everything, using an engine can sometimes feel a bit like seeing an artist using poser (that strange 3d software with predone characters or something, don't exaclty know). Even if he/she might get something beautiful on the screen (most of the time poser users don't) as soon as you hear it's done in poser you think "oh well... can't have been much work".

Same thing with the unreal engine, everybody knows what the engine can do. And everytime I see the logo when a game starts, I ask myself "What did the developers do?".

It feels a bit like Java, when I hear someone say he's written application X in Java. Well did he actually develop something? Or is he only the one that is collecting pieces from the standard library, like those paint by numbers picture. (Yes, I do hate Java.)

Question - What is SFML - First time seeing the acronym ?

I like coding myself, and I got into game programming because I got frustrated with others game engine where the AI (Artificial Intellegence) seemd to not provide me as a player with a way of winning.

By not using an Engine, I can ensure that my games are designed to "Play" the game with you as if I were sitting across the table from you. By incorporating a "Learning System Routine", I can even simulate you playing yourself, How is that for Stratedgy ?

Your Brain contains the Best Program Ever Written : Manage Your Data Wisely !!

Currently i try to use libraries if the task requires very specific code, for example platform specific things (loading files, windowing, input...) and lets say parsing a file format. Maybe even a math library with SIMD code for different platforms because that is platform specific too.

o3o

Here :P

SFML is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc.

SFML is quite nice I must say, and very easy to deveop with.

Check out my new blog: Morphexe

As Morphex mentioned, SFML is another library for getting a window for graphics onscreen, with input events, sound, and other features.

SFML, the name of the library, stands for "Simple [and] Fast Multimedia Layer". It's designed in C++, so it has a more OOP-ish design than other libraries like SDL (Simple Directmedia Layer), but that is not a plus (nor a negative), simply a fact about its nature. Honestly, for lower level libraries, too much OOP-ishness sometimes gets in my way.

SDL and SFML are both great, but my preference leans slightly to SFML. I've used them both for several years each. Neither is necessarily superior to the other, except in minor ways.

[quote name='superman3275' timestamp='1356849108' post='5015664']
Learning how to program using a Game Engine doesn't seem very good to me (Unless you're an artist). Many programmers I've seen who learned to code with an engine write painfully slow and pointless code. I learned how to use C++, and waited a year before jumping into Graphics.
[/quote]

This is a good point. These engines like unity etc. really do so much for you, it doesn't show you anything about how the pieces fit together to make the end product. If you become skilled at programming you can utilize libraries to help you out but from there on you are "in control". It is the difference between a chisel and a CNC router.

Stay gold, Pony Boy.

I see engines as being of two types: hobby engines that were designed to be more like game-making 'kits', a stand-alone product whose developer's sole intention is to maximize profits by creating something that appeals to a greater audience of people that just want to make games (non-coders) without knowing anything... and on the other hand there are the high-end triple-A title engines like id Tech, Unreal Engine, etc.. which were not designed to be stand-alone game-making 'kits', but are the underlying software of "serious games".

The high-end commercial engines are typically not afraid to expose the developer to the complexity of its internals, whereas the hobby game making kit engines are designed with the sole purpose of making the tech itself transparent, whether it be by providing tools or an API, or simple scripting language.

The reason I pointed out "serious games" is because these game development companies strive to milk the hardware for every possible drop of performance they can, to push polycounts and shader operations to the max - because mainstream games are always trying to top themselves in terms of measurable quantities - like frames per second and polygons per scene. Nowadays they are just trying to make everything look realistic without making it feel good - because screenshots in a magazine or on the screen only convey that aspect in the advertising. Now they promote video games using videos of pre-rendered animations and (sometimes) zero in-game footage, which frustrates me the most. I want to see what *I'm going to see* when I play the game, not some dreamed up cinematic clip.

I was into making mods for Quake before the hobby game engines were a reality - there was one game kit I got my hands on when I was 11 called the GCS - or 'Game Creation System' by Pie In the Sky software (I'm sure they no longer exist).. It was a system for making wolfenstein 3D-esque DOS games, without programming (so awesome, as a kid).

The reality is that every piece of 3rd-party material you use to make something, be it a code function, a library, or a whole engine, is just a piece of *your* project that isn't really something *you* made. That means that *you* don't (generally) have the freedom to fine-tune it as you see-fit, nor do you have the ability to customize aspects of it that are outside your scope of understanding and/or ability. Some will recompile libraries to add in specific functionality, and even to optimize specific functions, but most ignore the possibility of these options all-together and take libraries as-is.

When you learn how to do things yourself, from the inside out, you get the power, control, and freedom to make as much of your project how you want it to be. Whether that be for aesthetic, functionality, design, or performance.. When you just use someone else's code, it will simplify and accelerate development, but it's a piece of *your* project that was created by someone else of possibly less-than-desirable skill and ability.

A lot of the times I don't want to be limited to the 'summed-up' options a library's offered functionality may entail, nor do I want to be concerned with my software being under the licensing requirements of some 3rd party code I could opt to use. I'd rather write my own code, that's suited specifically for my project's needs, so that I can maximize performance and resource consumption - CPU and memory/disk use.

It wasn't long ago I was using the Tiny C compiler for a project - and desiring to compile C code in which MSVCRT.DLL wasn't a dependency... some of you may enjoy that. I know it's possible - but it ended up being too much of a hassle for what I was trying to do. Microsoft's standard C library implementation will have to do, otherwise I may as well be writing my code in win32 assembly.

All-in-all, it's a trade-off between your project's desired delivery time, and your ability to control everything about your project, so that it can be exactly how you want or need, so that it can truly be *your* project. Most people with no experience whatsoever will choose the fast-delivery-time route, because it involves minor learning curves and immediate results.. I want it now so I need it now. I'm sure that just about every good programmer on the planet that's worth his salt didn't get started out by making a high-end game engine, or even a game-engine, they started with Hello World.

I only ever write 2D games. If I ever write a 3D game, I will use a (free or permissively licensed) engine in a heartbeat.

For 2D, however, engines, or more appropriately "game frameworks" in 2D world, aren't really worth it to me with one exception which i will discuss below. A 2D game framework on top of DirectX or OpenGL is just not that hard a thing to write yourself and doing so is very rewarding. Further, 3rd party game frameworks tend to be bloated due to the constraint placed upon them that they must try to handle the requirements of any 2d game imaginable. When you roll-your-own 2D game and have the whole thing sitting on top of just a graphics, audio and input abstraction layer, you can make the "game framework" portion of your game extremely lightweight (e.g. I don't need classes for parallax scrolling to write a tetris-style puzzle game) and when you start a new game you can take that code and extend it as needed or not extend it at all.

The exception I mentioned above is when there is a requirement for crossplatform-ness as in the case of developing for mobile devices and supporting both iOS and Android without rewriting your entire codebase. In this case -- especially when iOS is involved -- I do recommend using a 2D game framework. Writing your own cross-platform layer and getting it right is not an easy thing. But here, too, for me at least, the fact that I end up using a full game engine in this case rather than a lower-level hardware abstraction layer is really just an artifact of what is available for free (i.e. cocos2d-x) rather than what I would actually choose all things being equal.

This topic is closed to new replies.

Advertisement