Author Topic: Game Design Megathread  (Read 554677 times)

the way i look at it, making an engine is good if you are a developer that plans on creating a lot of games with fairly similar technical mechanisms behind them and need to have control over the workings and in-depth understanding of how they work.

open-source engines let you do this and provide a base platform, but a) they aren't your work and you won't automatically have deep understanding of how they work, b)  you may have to cough up if you plan on monetising your games, c) you have to deal with other people's bugs instead of just your own (recall a to intensify rage), and many more

obviously the upside is that base platform and the fact that there's already a lot of work into it. it can be more optimised and more skillfully crafted than something you're capable of. if you're focused on the game, don't get ahead of yourself; consider which is better. but you'll likely be more interested in cutting out as much work as possible.

however, for many developers, having an engine is defo beneficial to them and their future endeavours in game development. if people didn't make new engines, there wouldn't uh... be new engines lol

there's absolutely no general way to say "do" or "don't" here. it's all context and you need to know for yourself what is necessary and convenient for you in the long term.
« Last Edit: August 31, 2014, 06:24:04 PM by otto-san »

Somehow I missed the last 3 pages of discussion, but I'd still like to add my thoughts.
The reason why I'm (slowly) making an engine for what will surely turn into a relatively simple physics based game is that it's actually easier for me. I haven't done much real coding outside of blockland, but I know for a fact there's nothing more frustrating than trying to do something that the engine can't/won't do. Maybe torque ruined that for me. Regardless, I like to understand things fully while I build them, for two main reasons: troubleshooting and getting better at code. Building my own engine is easier because I'm factoring all of the time I'll save coding other things, with everything I've already learned.

It sounds pretty cliche now that I've read all that back, but it's true. Also building an engine is inherently more difficult than just making a game in an existing engine (because that's the point of using already made engines), you get more rep from employers/peers

nonedit:
there's absolutely no general way to say "do" or "don't" here. it's all context and you need to know for yourself what is necessary and convenient for you in the long term.
this too

also if you're making an engine specifically for a game you're probably going about it the wrong way

it's kinda universally better (coding practice-wise and application-wise) if you design it broadly so you can use it for any game that fits

also if you're making an engine specifically for a game you're probably going about it the wrong way

it's kinda universally better (coding practice-wise and application-wise) if you design it broadly so you can use it for any game that fits
I am. But I intend to add features to the engine as I progress through games

ya ther's nuffin wrong with adding things to the engine because you know you'll need them for what you have in mind

you just have to design the mechanics right so they aren't dumb and locked-in

Thanks for the thoughts, but for the record, I use the word 'engine' very loosely to encompass frameworks like love2d and craftyjs, and APIs such as SDL, GLEW, and so on.

With that in mind, I'll make an educated disagreement, because think about it: if you do decide to create an engine for yourself using something relatively low level like the aforementioned (or even lower if you're a masochist), unless you've written down every idea you have beforehand and know exactly how everything is going to work without making any significant changes down the line, how do you know that this engine is going to satisfy your needs? It sounds easy on paper, but it's incredibly difficult to predict your future habits and organization style. You could simply change parts in your engine to fit the current game. Yes, this works, but then you're not focusing on creating the game. This is where the problem lies.

I feel as though I failed to stress this, because this is a very important thing to realize: a small toolkit or a couple of scripts one would use to avoid rewriting code is far different from a full-blown engine. I'm talking about just spending days, weeks, maybe months on your own rendering system, realistic physics, networking, a level editor, and so on, vomiting in a bunch of garbage your future games may not even need, while possibly even missing some important bits your game will need.

I'll also say that, again, the general population of game development won't nearly respect you as much for making your own engine, than if you spent the time working on that engine making games. Imagine if every post in this thread about an engine was instead a gif or screenshot about a different game? Wouldn't that make you much more exited for the creativity and progress coming out of the thread?

And I won't deny it: a game engine can be a fun little thing to work on as a hobby, and very much as a learning experience.  But I personally believe that, what you learn from making a game engine, you'll learn eventually as you make more games, and that the knowledge you obtain isn't any more useful than just trivia. The most you'll usually need to know in technical terms is how to make a game loop, and a good bit of knowledge on design patterns in game development. There's also stuff like memory management and efficiency, but if you aren't brain dead and/or loving handicapped (e.g. loading an image on every update, having 500,000 dynamic objects on-screen) low-level issues like this shouldn't be a problem, as most engines(/APIs/frameworks) handle this for you, or at least allow you to easily handle it on your own.

Continuing from my last point, in game design, the last thing you should be worrying about is the underlying technology behind your game. Depending on your needs, a good goal to aim for is 60 frames per second and cross-platform compatibility. At this point, it's fast and efficient enough, and the gameplay experience won't have changed for the end user who just wants a fun game, regardless of what you've used. You also need to think about the actual mechanics of the game, how to make it fair and balanced, difficult but not colossally impossible, visually appealing, depending on your graphical style, and juice. Creating an engine almost always distracts from this.

On the subject of employment, I feel like this topic is somewhat irrelevant, but it's apparently not as obvious as it seems that game companies will value games more than game engines, because they can tell you understand how to create engaging interactive experiences, but a basic understanding of a game loop won't impress anyone. Games like Dust: An Elysian Tail, Freedom Planet, and Distance (racing game from refract) are what get people hired. The engines and tech behind these has to be massive (even in Distance's use case, Unity) but just showing off the tech itself instead of what you can really do with it, you won't get very far. On the flip side, if you're being hired because of your work on engines and/or game architecture, you simply aren't a game developer, and your end goal isn't to create games. There are some special cases, but I won't go into detail.

I'll end this post off on this, and by now, I hope I will have made myself clear. Keep in mind that this is in the perspective of game development, and nothing more. The goal here is to create games. The engines(/APIs/frameworks) available allow you to do this and have given every tool you need to express your creativity in any language or environment you please. When the goal here is to create games, making an engine is, in my opinion, simply a complete waste of time. If there's some sort of quirk in the current engine(/API/framework), or some licensing issue, or just something under the hood that simply does not allow to use it, move to another, there are plenty available. Plus, the more tools you learn to use, the more tools you'll know how to learn and pick up quickly. Search and explore, because there are hella options out there.

With this in mind, I really, really recommend you watch this video, because it's incredibly insightful, informative, and eye-opening in some ways, and I gained a lot of my personal principles from this video and other similar resources.

With this in mind, I really, really recommend you watch this video, because it's incredibly insightful, informative, and eye-opening in some ways, and I gained a lot of my personal principles from this video and other similar resources.
been watching this, rly nise video

gives me a lot of things to think about and answers a few questions i've had about my own approach to creating anything


can we go back to discussing games and the making of them instead of posting scathing walls of text please

can someone recommend me an audio library
one that i can use with no stupid licenses. meaning i can use it in my things even if they are paid or not. doesnt need to be open source.

i tried to go low level but so far nothing works in my favor. cant find myself the sdk for dsound. i thought i had it but it doesnt want to work.

can we go back to discussing games and the making of them instead of posting scathing walls of text please
The last post on the subject was made 2-3 days ago, so you're welcome to do so. It was still relevant to the thread topic regardless.

can someone recommend me an audio library
one that i can use with no stupid licenses. meaning i can use it in my things even if they are paid or not. doesnt need to be open source.
i tried to go low level but so far nothing works in my favor. cant find myself the sdk for dsound. i thought i had it but it doesnt want to work.
like OpenAL?

like OpenAL?
yes. nevermind though. i made it work on the last minute. i dont know what i did but i rewrote some of my code. im still going somewhat low level. reading the wave file data manually and putting it in. works like a charm.

im mixing it with directx. im going to use direct3d for rendering and directinput or xinput for controls. should be fun.

hyper-realistic sentient ball society simulator:

https://www.youtube.com/watch?v=cR6MAcXz7x0
You managed to get a ball named Brian Smith, wow.
Also is there something wrong with your projection? The balls near the top look stretched upwards.

You managed to get a ball named Brian Smith, wow.
Also is there something wrong with your projection? The balls near the top look stretched upwards.
They're oblong spheres.