Game Engine or not?

Started by
102 comments, last by JosephParrilla 12 years, 11 months ago

[color="#1c2837"][color="#1c2837"]This is one of the most bizarre responses I have ever gotten lol. Is this a serious answer? Do you all actually think like this ? I would honestly hate using something and not knowing what the hell it was truly doing.


After spending many years playing around with low level details and not getting anything actually done, yeah. Knowing the gist of how things work is good enough for pretty much everything. I don't particularly care about the mechanics of buffering and decoding video if I just want to play one. I want an API that reduces all that headache to 1-2 lines of code so I can go back to making the game.
[color="#1c2837"]

[color="#1c2837"][color="#1c2837"]So you would recommend that a new programmer whos never made games before to use the highest level engine possible to make a game, and not at all concern themselves with anything that they dont need to in order to finish the game?
[/quote]

I recommend that a new programmer not make games. Learn to program first.

If your short term goal is to make a game, use the most/best APIs/tools to accomplish that goal.

If your short term goal is to learn to program, then some portion of that will involve mucking about in low level stuff to get used to debugging things there and get a better understanding about buffers, bit fiddling, pointers, implementing your own algorithms/data structures and the such. But all of that code should be throw away. It should be focused on gaining knowledge and experience, and once done a programmer should pretty much avoid doing any of it again.
Advertisement
Essentially, use the right tools for the job

[quote name='Telastyn' timestamp='1305298901' post='4810242']
[quote name='joeparrilla' timestamp='1305296733' post='4810227']

So is the typical idea that someone should start out with something lower level like sdl and opengl, and once they know whats happening and they just need to be productive, move onto an engine?


No. Knowing what is happening is overrated.
[/quote][/quote]


[color="#1C2837"]
[color="#1C2837"]This is one of the most bizarre responses I have ever gotten lol. Is this a serious answer? Do you all actually think like this ? I would honestly hate using something and not knowing what the hell it was truly doing.
[color="#1C2837"]
[color="#1C2837"][color="#1C2837"]So you would recommend that a new programmer whos never made games before to use the highest level engine possible to make a game, and not at all concern themselves with anything that they dont need to in order to finish the game?
[/quote]

Can you explain how your microwave works? And if you can, does it make you any better at using it? How about the internal combustion engine? Forced air heating?

Something I struggled with for a long time(and still do to some extent) is that 'why' is more important than 'how'.
Can you explain how your microwave works? And if you can, does it make you any better at using it? How about the internal combustion engine? Forced air heating?[/quote]

As a programmer, it is your job to know how it works. I am not a microwave technician or car mechanic but if I was and came to fix your microwave or car wouldn't you want me to know how it works? That way if it is a problem out of the ordinary I would have a much better chance to fix it. Would you drive a car fixed by someone why it needs fixed, but not how? You would quickly find yourself becoming an unemployed programmer/mechanic/engineer if you only knew why but not how. Nobody would hire you. Try using that analogy you gave in an interview and see how it goes, I suspect not very far.



Can you explain how your microwave works? And if you can, does it make you any better at using it? How about the internal combustion engine? Forced air heating?

Something I struggled with for a long time(and still do to some extent) is that 'why' is more important than 'how'.

Not really the best examples, because I know how all three work, and I have had to fix all of them. Without knowing how they work I could have never fixed them.

But I guess the same might be said libraries, if it works and does what you need it to, you don't really have to understand HOW it works. When it doesn't work or you need more, then you need to start working on the how.

A lot of it depends on your goal. Are you trying to learn or just trying to make a game?

If you want to learn, then going low level is what ya want to do. You want to learn the hows and whys of doing things. If you just want to make a game you can often ignore much of the lower level stuff and use libraries that can help you. XNA and others do much of the work and let you worry more about game play and the likes then about translations and buffers.


Well Im a computer science major.. so naturally I just have a desire to know whats happening. After programming in assembly and C, I have a great appreciation for knowing whats happening underneath the abstraction. I dont plan to work in the game industry, I just want to do it independently and as a hobby. I just see so much talk about libraries like XNA and all that lately, I was under the impression that nobody does things with libraries like SDL and OpenGL anymore. I mean sure I want to make games, but I want to do it in a way that I learn whats happening and truly understand whats going on. Im not just concerned about "getting it done", I want to truly be knowledgeable and very good at it,


Never, ever stop learning.
- Me

Can you explain how your microwave works? And if you can, does it make you any better at using it? How about the internal combustion engine? Forced air heating?


As a programmer, it is your job to know how it works. I am not a microwave technician or car mechanic but if I was and came to fix your microwave or car wouldn't you want me to know how it works? That way if it is a problem out of the ordinary I would have a much better chance to fix it. Would you drive a car fixed by someone why it needs fixed, but not how? You would quickly find yourself becoming an unemployed programmer/mechanic/engineer if you only knew why but not how. Nobody would hire you. Try using that analogy you gave in an interview and see how it goes, I suspect not very far.
[/quote]

Exactly.. Im a programmer. This is my life... why the hell would I just want to brush off the details? Im interested in this stuff, and seeing that it will be my career, I feel like I should really be an expert on it. saying that how stuff works doesn't matter just seems like a total cop out to me... Sure I dont know exactly how a microwave works, but Im not a microwave technician. I am a programmer though..
Never, ever stop learning.
- Me

[quote name='joeparrilla' timestamp='1305296733' post='4810227']
So is the typical idea that someone should start out with something lower level like sdl and opengl, and once they know whats happening and they just need to be productive, move onto an engine?

No. Knowing what is happening is overrated.
[/quote]

Imagine this. What about an artist who just wants to paint, but he doesn't know anything about painting, techniques, perspective, colors, etc. Then he starts to grab some others artists drawings and start to copy them without even complaining HOW they did it. Will he ever archive his goal?.

Knowing the basics is not reinventing the wheel but if you know how and why a wheel was invented, you'll expand your horizon.

You wrote that because you already know what's happening in the low level.

[quote name='Telastyn' timestamp='1305298901' post='4810242']
[quote name='joeparrilla' timestamp='1305296733' post='4810227']
So is the typical idea that someone should start out with something lower level like sdl and opengl, and once they know whats happening and they just need to be productive, move onto an engine?

No. Knowing what is happening is overrated.
[/quote]

Imagine this. What about an artist who just wants to paint, but he doesn't know anything about painting, techniques, perspective, colors, etc. Then he starts to grab some others artists drawings and start to copy them without even complaining HOW they did it. Will he ever archive his goal?.

Knowing the basics is not reinventing the wheel but if you know how and why a wheel was invented, you'll expand your horizon.

You wrote that because you already know what's happening in the low level.
[/quote]

Im glad that you and others are saying this. For second I thought just maybe I was crazy for having a desire to know how everything is working. I mean I guess I can understand if youre just a person who wants to make a game but isnt really concerned with being a true programmer you can sort of ignore a lot of things. But I cant imagine any programmer, especially the ones I know, who would brush off the low level details and not care to know whats going on. Most of the programmers I know are really into what they do, and are perfectionists... they want to understand the ins and outs of their craft.
Never, ever stop learning.
- Me

[color="#1C2837"]So your saying that these sort of engines and programs exist because doing it on your own from scratch takes too long... if thats the case why isnt every developer using these tools? I mean, if your goal is simply to make a cool game and possibly get others to play it, and you dont really care about whats going on in the code, where is the incentive to sweat through learning opengl and sdl when you could drag and drop some stuff and script and basically make a game equivalent to someone who wrote a million lines of C++ code to achieve the same thing? I just watched a video on youtube for unity3d, and in the second tutorial in a series, this guy has a full on jungle environment that looks awesome, something that would take alot of work coding from scratch.


There's a number of reasons I can think of, and most of them are biased toward my belief that we should be using middleware for most games:

- Because the business side often equates "owning our tech" with "owning our game". They think that for some reason if they don't build the whole thing from scratch, they are beholden to some other company. Save a few special cases, this is not actually the case. But I've had alot of trouble convincing "the suits" that paying $250k for an engine license is more valuable than putting that money (and then some) toward building an engine from scratch, debugging it, testing it, writing the tools, delaying development until it's finished... and in the end, most off-the-shelf engines have better tools anyway.

- Because programmers like to reinvent the wheel. They're often the type that say "well, I didn't create that wheel so I don't really know how it works. Therefore I don't trust it and I will create a new wheel that does the same thing... only my way". I thought this way myself for many years. Then I learned that what I really want to do is understand why the wheel works so I can make a better vehicle to use it. "Knowing what is happening is overrated" is a patently ridiculous response for a programmer, but "Knowing what is happening" is different than "Writing it myself". I find it equally ridiculous to go in and write the tech for a standard third-person shooter nowadays: between Unity, Unreal, Source, Torque, etc there is a solution at every price point.

- Because some programmers are fearful for their future employment. I hope nobody gets defensive about this answer: not every programmer is this way. But some are. They're afraid that if development and scripting is so easy a designer can do it, that programmers become obsolete. This is also ridiculous: if designers/artists can do the standard stuff, then programmers are free to do the groundbreaking, awesome stuff. Instead they spend so much time rewriting the same damn pathfinding algorithm or rendering pipeline that they don't have time to really experiment.

- Because sometimes a game is so unique, it would be harder to write it with existing tools than to just roll your own. This is rare (I actually wish it were more common), but in my opinion it is the only valid reason to not use middleware. Katamari Damacy, for example, needed to be able to do complex LoD and streaming not based on distance but instead based on the size of the character. It needed to be optimized to display hundreds of low-fi models instead of a few hi-fi ones. The physics required a dynamically re-shaping ball. It was a game that they were better off writing their own engine for, or at least heavily modifying pre-existing tech.

In short, if you want a first-person shooter in a jungle environment, and you write it from scratch, I would argue that you're not using the right tools. Middleware shouldn't be looked at as a way to replace programmers. It should be a way to empower them to innovate: a way to take away the drudgery of writing their 20th octree optimization and instead focus on coming up with new technologies that will make future games better.

Check out my new game Smash and Dash at:

http://www.smashanddashgame.com/

This topic is closed to new replies.

Advertisement