How To Create your own game Engine Like Unreal Engine and Cryengine Engines

Hey Guys on a Totally Unrelated note …i know its ironic how come I’m asking on how to create an engine on the website of by far the BEST GAME engine’s Website…but i just wanted to ask if you guys know of any information of how to create your own Game Engine/SDK that is Similar to Unreal or Cryengine…i just finished high school and i have started learning C++ and the Java Languages…and I’ve have started reading Jason Gregory’s Game Engine Architecture book so before i head into a College isn’t there anyone that knows of any source where i can gain knowledge…so i can begin my own Engine while i Study…(not to say that Unreal isn’t enough but for my Goals it is crucial to have my own Engine hope you Understand)

My Career Goal…Computer Scientist/Game Designer (of Course)

Please do get Back To Me …Osiris…
Thanks…

Phoenix,

There will be many that don’t agree with what I have to say, and that is fine each to their own opinion of course, so here goes.

  1. For now? Stop with the Game Designer. That is a specialization before you even know the fundamentals. Computing/Being a Programmer, etc. Is no different than anything else. Learn the fundamentals, and learn them well. Pick up Donald Knuth’s 3 volume set “The Art of Computing”, read it, study it, code it, learn it, live it. Those 3 books can teach you so much more, about so many things, and just a very good grounding in the fundamentals of computing.

Learn some assembler… (Here is where many people will disagree), it’s essential to understand what the machine, actually can do, what is efficient, what is not, learn to think like the machine works. When you have written some assembler code, and those mov, in, out, cmp, instructions start making sense, you are well on the road, to learning any language you wish. Why? because those assembler instructions are the only things that the computer understands. The computer couldn’t execute an “if then else” statement to save it’s silicon. It can execute a cmp Ry, Rx followed by a Jc target. When you understand this, and it’s second nature. Then ALL languages are easy to learn. Why? Because all languages are the same, it’s the libraries, and the syntax that may change only, but to that computer, when the compiler and linkage editor are done with the source input, it all comes down to mov, cmp, Jc (move data, compare data, and jump on condition.) There is absolutely nothing else.

When you have this under your belt, and some performance/tuning work, then your ready to start cranking on your own engine. And heck, to help start getting some of the ideas and concepts of a game engine. Download the source code, from Github, of the Unreal Engine itself. Nothing like learning from the best!

Just my two cents, and it’s worth exactly what you have paid for it, NOTHING!

As a computer science graduate with a master’s degree, I disagree.
You don’t need to know any assembly, microprocessor programming, verilog etc. to do any OOP programming. In fact I’m sure you don’t know majority of the assembly instructions yet to know C++ functions that make use of that. If you are REALLY keen on doing everything yourself, start mining silicon, forge a breadboard, design a CPU, make your own computer, design and implement your own operating system, than make your own engine. Stop reinventing the wheel for no purpose. Don’t waste a newbie’s time.

Actually, if taking an extreme position of mining silicon, is what you think I was trying to imply, then there is little reason to continue discussing anything.

In truth I do know the instruction sets of many processors. The first being the 6502 chip, following by the IBM System 370 instruction set, followed by Intel chips, followed by various video chipsets, HD chipsets (Scsi, IDE, etc), some NIC chipsets. The entire point was to know the machine, how it actually works, how to start thinking the way the machine itself works.

Each to their own.

I think your both partially right. practicing assembly programming may not be the best use of your time, but understanding binary, bytes, and how the processor works, and how common commands work under the hood, is useful for optimizing things. learning how an integer and a float are stored in binary, and learning how to shift bits or use bit flags, can inspire creative ways to improve performance, but a good CS student should also learn a lot of higher level concepts, like algorithms for sorting, compression, collision detection, tree traversal, vector math, etc… but i think a computer science student should make a few simple game engines from scratch with SDL or OpenGL or flash, just for practice and learning. reinventing the wheel for educational purposes can be a valuable experience.

also, OOP won’t solve every problem, and it is often more efficient and flexible to separate data from code, so a computer scientist should study many paradigms, and mix them together when they are needed.

also, if he wants to call himself a game designer, there is nothing wrong with that. just because he is a programmer doesn’t mean he hasn’t also thought about balancing combat mechanics, or designing enemy encounters, or designing ways to teach mechanics to the player, or designing game modes. many indie studios have programmers who also design, or do art, and if you work on a small team, you have to wear a lot of hats.