Advertisement

Quake 1-like game - own engine or existing solutions?

Started by August 02, 2018 02:32 PM
6 comments, last by DividedByZero 6 years, 3 months ago

Hello,

my life experience with programming started about 10 years ago. From Pascal through C/C+, finishing at C#. Currently I am programming in C#/.NET for 3 years (my work). Although I do .NET, my love is aimed at games. I started about 15 years ago with funny "The Games Factory". I made couple of mini games in Pascal, Javascript, C# (XNA/Monogame) - there was one 3D game.

I am writing because I love old games' climate and I want to create something like Quake 1 for my own (mathematical/physical/3D) experience. I am torn, because the biggest learning is when we built something from the scratch. Then - I ask for help: I don't know what to use to make it happen. Firstly I thought about creating own engine in C# + Monogame (I rather want to stay in C#), but I talked to many people and they say "use Unity". The thing that scares me is a fact, that Unity has so many existing solutions (physic, 3D behavior, collissions) which makes my perception uncertain.

What do you prefer? Making own engine and have a "full control" of what is happening in game or let ready solutions live in projects?

2 hours ago, ArturKon said:

I don't know what to use to make it happen.

The Game Design forum is not for discussions about programming. Moving to an appropriate forum.

-- Tom Sloper -- sloperama.com

Advertisement

Just write a game using low-level GPU, like OpenGL. You'll get 3D math stuff just as well, but you can make a game that's playable, rather than spend eternity with a game engine that's not done, and getting nowhere.

 

I was asking myself the same question about a year ago.  I have always been interested in game development and graphics.

A couple of years ago i wrote a software renderer in Java. It was pretty straight forward to figure out how to render 3D cubes in perspective and move them arround. I had done some 2D lighting effects earlier and i made a version of that for 3D lighting. The really hard part for me was to put textures on the cubes. That made me really have to read up on the theory behind textures, how to do uv mapping, using linear interpolation, rendering surfaces according to distance from camera etc..

The product of this effort was a really slow software renderer that used my own 3D format. Totally useless for any real applications.. But it was fun to write and i learned a lot by doing it. 

This made me want to write my own game engine for my next hobby game project. I have been working at it on and off for over a year and it is fun, i learn a lot in the process. But is it the best or fastest way to produce a game? No definately not! If i had a deadline i would have used an existing engine.

I am building on top of SDL, OpenGL, GLSL, GLM and Assimp. That have felt as a good foundation that still lets you decide a lot for yourself how you are going to create your UI, game loop, systems, shaders etc..

I have thought about using OpenCL and OpenAL as well but i have not got that far yet..

In a year of hobby development i have:

* Menu system that can create and style menues from config.

* Basic graphics settings like resolution, framerate, vsync, fps counter and texture detail. 

* Basic keybinding of controls for keyboard, gamepad and mouse.

* A scene object that can manage differen game objects and their components.

* Can render a scene with 3D models using regular or instance rendering.

* My own GLSL shaders that can render meshes with ambient, diffuse, specular and bumpmapping using up to 3 different textures and multiple lightsources.

* Basic collision detection  and colission handling system.

* System to handle user input.

It is fun and rewarding but not that fast, so it depends if you want to learn to make an engine or if you want to create a game. If learning about making engines is more important to you write your own! If finishing the game is more important use something like Unity!

GLHF!

To be honest, I totally forgot about OpenGL. Anyway - it is for graphics, doesn't include any engine parts, but I think I would like to create basic physics like movement, collision and simple gravity on my own. I've mentioned that I would like to stay with C#, and I found OpenGL "ports" like OpenTK or SharpGL. Are there any limitations for those 2 libs according to fresh OpenGL versions?

Time is not important, so Unity is not a "must have". I just compared it to own engine implementation :) and I think it is not for my learning.

 

"I've mentioned that I would like to stay with C#, and I found OpenGL "ports" like OpenTK or SharpGL. Are there any limitations for those 2 libs according to fresh OpenGL versions?"

I have not tried them. But there seem to be other options as well:

https://www.khronos.org/opengl/wiki/Language_bindings#C.23

And if you dont like any of the bindings and are familiar with C++ you could always write your OpenGL specific code in c++ and call it from C#.

https://stackoverflow.com/questions/9407616/how-to-call-c-code-from-c-sharp

Advertisement

Like @MatsN, I find writing engines to be a fun challenge. So it depends on what you want to get out of it.

For me, I prefer making my game engine over the game itself.

Will I ever release the engine or any games? Probably not. Who knows?

Like I said though, depends on what you want to do.

I must admit, I glaze over when I fire up Unity or Unreal. Not because they are hard (yes they do have a huge learning curve) but they just bore the crap out of me.

This topic is closed to new replies.

Advertisement