Making an Engine...

Started by
12 comments, last by TheArmchairPhysicist 16 years, 10 months ago
I use c++ and im starting to get into making games.
For basic knowledge in c++ i suggest going through the tutorials at www.cplusplus.com(its just the one i used... theres plenty others out there). They helped me alot at first. If you are really determined you can pound through it in a day. You dont need to be able to memorize everything. Alot of it you will have to reference back to.
After i went through those i got into directx which opened the door to game programming for me. The tutorial that helped me the most was at www.directxtutorial.com.

I dont know very much advanced stuff, but i can show you where to start. Well, at least where i started.

Hope this helped
Advertisement
Thank for all the posts.

I suppose i wasn't clear, and i can see why i was misinterpreted ;)

I'm not going to take 6 years to develop the engine on its own.
I had read through a number of articles and posts where you guys (perhaps not specifically you guys) had said to create a number of games and combine the stuff that i use again and again ;)
I was planning to do this ;)
The engine was just what i wanted at the end.



Quote:get yourself good grades in higher mathematics (A or B grade)

Hoping to get that on my certificate in August, and Adv Maths next year also ;)

I'll have a look at all the languages you've suggested and see what i think i like ;)

(i've not read word for word your posts, cant be on the computer long enough, so i've just skimmed em and will read em in detail later :D )

Thanks very much ;)
A few ideas:

I am about to develop an engine...and I must say it's a less daunting task when you know a little background...like math, physics, and the game-development concepts necessary to begin. Also, you should know what you're up against. I can hopefully help you a little.

I will stress this- Make SURE you've got a SOLID background in math and physics... i'd reccomend that you look at the following list of subjects to get a grip on where you are:


CALCULUS:
-a basic understanding of the concepts of derivatives
-riemann sums
-finite differences

if you dont know calculus...DO NOT i repeat DO NOT get an entire textbook on calculus!!! you wont need much for game development!!!! surprisingly little, actually!!!! finite differences are easy, and you'll almost always use those.
read introductory material instead.


if you get interested: How to Ace The Rest of Calculus: http://howtoace.com
if you dont: mathforum.org/
go to their "library" and look for "calculus" and "numerical analysis"
skim through...come back to it if you need to remember something.


3-DIMENSIONAL GEOMETRY:
-vector geometry
-understanding of concepts like points, planes, lines in 3-d space
-depending on how advanced ur getting, you may not need multivariable calculus...most likely not, so don't freak out.
-i'd recommend:
beginner: 3d Msth primer for Game programming (http://gamemath.com/)
more advanced: How to Ace The Rest of Calculus: http://howtoace.com

PHYSICS:
-basic high-school physics background (velocity, gravity, force, momentum, etc...basic kinematics)- i'd recommend: Instant physics by Dr. Tony Rothman.
-projectile motion- i recommend an online tutorial
-rotational motion: i'd recommend: http://chrishecker.com/Rigid_Body_Dynamics
-basic understanding of vehicle physics: there's probably a tutorial out there.
-Basic Geometric optics


Next, learn a programming language!!! And make it easy on yourself...screw c++!! learn Java, or even Python, a high-level scripting language(directx and a lot of other things have python bindings, so you can make games with it). I'd recommend buying a book for this. First, buy a language-specific book like "Internet Programming with Python" by Guido van Rossum (no, it's not just for web stuff, it provides a very good outline of the language), or a beginning Java book (i dont know any). Then, buy a basic computer science book...i'd very strongly recommend "the Practice of Programming" by Brian Kernighan (who helped invent C) and Rob Pike. It uses C AND Java.

Then, get started on game development...here's a list of topics (DONT FREAK OUT!!! I DONT KNOW OF _ANY_ ENGINES THAT USE ALL OF THESE!!! im just putting these up so you can pick and choose from them)...

The Basics:
Binary Space Partitioning (BSP) Trees
Quadtrees
Basic concepts in image manipulation
handling/manipulating files like image files, 3d-model files, etc.

Graphics:
DirectX and/or OpenGl
handling and manipulating 3d-models
texture mapping
learn a shader programming language, like HLSL or Cg (google those!)

lighting models:
phong diffuse shading
phong specular shading
fresnel reflectance (for cubemapped water)

lighting methods:
vertex lighting
pixel shading
dynamic light-mapping
cube mapping

shadows:
shadow mapping
stencil shadow volumes
blurring shadows

other:
special effects
particles
bump mapping
normal mapping
animated/luminance textures
environmental effects
simple ways to draw and animate fire

really advanced stuff (Not for newbs!!! save this stuff for another time!!!!!!!..just putting this up so you can reuse this later if your project works out):
spherical harmonic prt
dynamic ambient occlusion
deffered shading
soft shadows
ati ruby demo: method for rendering hair
cheap subsurface scattering using poisson disc lightmap blurring


Physics:
handling vectors/matrices (you may want to download code for this, but be careful about liscencing)
collision detection
bounding boxes
projectile motion
rigid-body dynamics
particles
fluids (maybe, if your engine needs it or you want to be advanced and cool...definitely not for a beginner, but i put stuff on here so you know where it goes)


Terrain stuff:
skyboxes/skydomes (use skydomes!)
aerial perspective
atmospheric lighting (dont worry, alot of games dont use this)
matte backgrounds
2d imposters
heightmaps* and/or voxel-based terrain mapping (use heightmapping the 1st time)

AI:
recommended book: Programming Game AI by example, Matt Buckland.
Finite State Machines (FSMs)
Raycasting
Collision Prediction
Be creative on this part...i dont know much about ai but i know most games' ai sucks!!!


Scripting:
Pretty straightforeward. Set up and define a list of simple functions for placing entities on the map, cycling through animation frames, playing sound files, etc. Then, read text from a .txt file and call functions based on what's in the text. I'd recommend python's regular expression feature for that, if u decide to use python, which i STRONGLY recommend for ANY beginner!



So yeah...i guess that's what you'd need. Ill stick around to answer questions.













and i would tell you to hold off on making an engine except that i feel the same way...i would never want to develop games themselves using someone else's engine. It would be boring. And since you said you werent in a rush...

it's actually all pretty straightforward. Matter of fact, i, for one, am going to continue my progress right now.

This topic is closed to new replies.

Advertisement