Developing my own game engine vs. using a commercial game engine

Started by
99 comments, last by GalacticCrew 4 years, 7 months ago

@turanszkij Was your C++ level a problem in the beginning?
This has me worried. There are many ways of writing strings in C++ and i always just copy some code example from internet to deal with strings. It is making me feel bad, but the program works at the end of the day.
I don't know how to multiply matrices either, so i call the functions provided by Microsoft. Should i feel bad for not being able to multiply two matrices by hand?
I mean, would they math-shame me on a job interview?

Advertisement
11 minutes ago, NikiTo said:

@turanszkij Was your C++ level a problem in the beginning?
This has me worried. There are many ways of writing strings in C++ and i always just copy some code example from internet to deal with strings. It is making me feel bad, but the program works at the end of the day.
I don't know how to multiply matrices either, so i call the functions provided by Microsoft. Should i feel bad for not being able to multiply two matrices by hand?
I mean, would they math-shame me on a job interview?

Let's put it this way instead: my lack of C++ knowledge in the beginning was a problem that I needed to overcome. Sure, my code was very bad at the beginning, but constantly improved, and refactored, rewritten. It still has some very ugly parts still on my todo list. I would be more worried to never start. :)

The things that you mention will come in time. If you can't multiply two matrices by hand, you probably just never needed to, and that's fine. When the time comes, you can learn it, it's really not difficult, just time-consuming. Of course, it always sucks when they ask something on a job interview that you have no experience with (I've been there). And don't feel bad that you have problems with strings in C++, those are their own beasts entirely with oh so many nuances.

@turanszkij
So far i never needed to multiply matrices by hand. I only needed to understand their meaning, why they are so useful in 3D. And about strings in C++, i never needed them for more than writing on the console. If i some day need to save space on disk, I sure would learn well about the different types of strings.
I always avoid to learn something i don't need to know. To be honest, i would need years to learn C++ entirely. And by that time they will publish few new versions of the language.
For the GPU architecture, and the DirectX API, I try to learn things well, because i consider it important. I mean, i understand Shadow Mapping pretty well, it is only matter of syntax to make it work in OpenGL or DirectX, once i understand how it works. But often i talk to people who expect me to know from memory 500 pages of syntax.
And to be honest, i know too little of the syntax. It sounds weird to put in a resume: "C++ level-total beginner DirectX12 level-advanced"

If you use an engine, you miss out on a lot of understanding that goes with it.

Ie, using an engine is different to using it.

GPU stuff is pretty hard for noobs, but not impossible.. I'm just using really basic features like RBGA & UV textures with alpha, and that's plenty for noobs.

 

FYI: I'm a noob!

 

 

I'm actually working on my own engine but it's not because I really want too.  I always fear that at some point during  the life of the project, an off the shelf game engine is going cause me to hit some wall. I would probably take the chance if I was working on something more generic, but since my needs are highly specialized I think just staring out with Unity or Unreal is going to be like trying to pound a square peg in a round hole.  It could possible work but I feel that the end game might suffer somewhat. I would be happy to be proven wrong, but it seems like I could waste a lot of effort and then find out I was right.

2 hours ago, NikiTo said:

You don't have ctrlZ in real painting. And many other tools. Real painting is like 1000 times harder than digital painting.

 

I'm no artist, but I learn a bit of painting just to know how the artist work.

Whenever I draw or paint something, when bad things happen, I think "sh*t, I need to undo. Oh wait, this a the real paper!". Quite often I have to throw away the paper and start it all over again.

http://9tawan.net/en/

6 minutes ago, Gnollrunner said:

I'm actually working on my own engine but it's not because I really want too.  I always fear that at some point during  the life of the project, an off the shelf game engine is going cause me to hit some wall. I would probably take the chance if I was working on something more generic, but since my needs are highly specialized I think just staring out with Unity or Unreal is going to be like trying to pound a square peg in a round hole.  It could possible work but I feel that the end game might suffer somewhat. I would be happy to be proven wrong, but it seems like I could waste a lot of effort and then find out I was right.

I think the same but because of my personal experience. When i first started with 3D, it was with the first Papervision3D for Flash. Those libraries took the same amount of time to understand them as if you try to code it yourself. I wanted to use them beyond the tutorials.

Developing something own could improve the chances you produce something more or less unique. Right now I want my app to have no outside proprietary code. I want to provide my own, slightly different and slightly original solution to all of the tasks.

Quote

Real painting is way more valuable than digital painting for being unique too. It has infinite resolution. Drawing line art digitally sux, because of the antialiasing that changes the drawing depending of the monitor and the scale. Colors of the digital painting changes with the different monitors too.

This is absolutely true in my opinion. Making great digital and "real" paintings are two different skills I think, but everything that stays in the world without power and cannot have bug fixes is real valuable. Try fix the balancing of a board game! In addition, paintings can change their meaning depending on the surrounding. Just imagine a large paininting at a wall next to a large window. The incoming light can change the look of the painting through the day.

1 hour ago, NikiTo said:

I don't know how to multiply matrices either, so i call the functions provided by Microsoft. Should i feel bad for not being able to multiply two matrices by hand?
I mean, would they math-shame me on a job interview?

Not at all, but you should know the theory about the stuff you are working with. When I worked on Skinned Animation for my game engine, so my 3D characters could use any animation I loaded from any FBX file, my characters looked morphed and disturbed in the beginning. I wrote down the formulaes I used for calculating the Joint Matrices (the matrices which tell my characters' skeleton how to move) on a sheet of paper and calculated several key frames by hand, I noticed that I forgot to transpose one matrix. I updated the code and all characters moved like charm. ?

1 hour ago, NikiTo said:

And to be honest, i know too little of the syntax.

If you know what you are doing, you can look the syntax up online. I worked with Windows Presentation Forms at my last company to create the user interface and there were a couple of events I always forgot the syntax. I could create really amazing functions, but I had to look up the events' parameter every. single. time!

55 minutes ago, Mike MGarcia said:

If you use an engine, you miss out on a lot of understanding that goes with it.

This reminds of one of the developers I talked to at Play NYC: He said he wanted to make his own game engine, but he's not goot at programming. So he used Unity.

56 minutes ago, Mike MGarcia said:

GPU stuff is pretty hard for noobs, but not impossible.. I'm just using really basic features like RBGA & UV textures with alpha, and that's plenty for noobs.

It's a great way to start! Once you have this, you can import OBJ models, which is quite simple. Then, you can go own using more complex file formats like 3DS or FBX. Or you can add additional effects like shadows or animation. Keep going!

14 minutes ago, Gnollrunner said:

I'm actually working on my own engine but it's not because I really want too.  I always fear that at some point during  the life of the project, an off the shelf game engine is going cause me to hit some wall.

I am member of a gamer maker club here in NYC and some people were complaining at the last meet up that they have to change a lot of code because of the latest changes in Unity. When creating your own game engine you are always in full control. The only thing I fear in Unity is that they change their business model. Imagine what happens, if they start wanting royalties or expensive subscriptions. So many small studios rely on Unity now....

5 minutes ago, NikiTo said:

Developing something own could improve the chances you produce something more or less unique. Right now I want my app to have no outside proprietary code. I want to provide my own, slightly different and slightly original solution to all of the tasks.

For my game engine I use three external things:

  • SharpDX, so I can code in C# with Direct X
  • Steamworks.NET, a C# wrapper for Valve's Steam API (Steam Achievements, Cloud, Multiplayer, ...)
  • Autodesk FBX SDK to import binary FBX model files

Everything else is done by me. I could replace the first two with my own code, but this would be an overkill at the moment.

Developing your own engine will gift you unique experience in design/profiling/bleeding edge techs. But it's about a lot of time. And if you want get job offer from A+ gamedev teams it's good for your portfolio. But you must guarantee good design techniques and other. Just from bottom it's about 1-3 years of full/half day coding for good result. Reading books, docs and papers.

And if you don't have time (years) for your own engine. Just get job offer from Google. And you don't need own engine for A+ gamedev teams. =)

Developing your own engine is "junior way" or "freak way". Or you is Jonathan Blow.

https://gist.github.com/gorlak/1a0747efe88c5e3998144c5787d090ec

https://github.com/HeliumProject

This topic is closed to new replies.

Advertisement