GameEngine

Why is it hard from scratch?
Has anyone on /g ever made one for hobby?

Attached: john_carmack.jpg (3000x2000, 439K)

Other urls found in this thread:

github.com/ocornut/imgui
handmadehero.org
twitter.com/id_aa_carmack/status/507788963981959168
twitter.com/SFWRedditImages

Technical issues aside theres a lot of specialized domain knowledge you need for each component

Game engines are just bloated frameworks

what actually is / does an engine do on a more a more technical level. is it basically just a bunch of classes and parameteres or something more?

I'm working on one, I already have a camera and 3d model importer and I'm learning about basic phong lighting now. It's really fun and you learn a lot of things from it.

Its so complex, no one who lurked /g last year don't know any way to start implementing it.

this
trying to find information on networking specific to games is pretty difficult.

>physics for physics engine
>audio engine(learn api)
>collisions
>computer graphics including optics
>programming
>graphics api
>rendering optimization
>multithreading
>networking
So I give up?

How much time since you started first?
Keeping with college, for me it's been 1 year and I can draw cubes and nothing more.

The gist of it is that it provides an environment or context in which the programmer can implement gameplay, aka rules for doing something.

For example the engine will provide a space, represented by a grid (maybe a 2d array) or relative coordinates, in which an object is positioned. And what the object will do when the user gives input, ex. When pressing W move the object up in the grid. Then add rules for when sounds will play, and what will happen when the user's object makes contact with a wall (it will collide and stop, the most basic "physics" interaction). Rendering is a system connected to the rules/logic that takes the data, like the grid and object's position therein, and represents it graphically to a user. It can be as simple as drawing a grid using - and | in a command line or it can be represented using 2d sprites or even 3d models. Game networking is similar in that it takes the data and relays it to another computer where the changes in data are represented among the computers, or in the case of centralized "dedicated" servers the data goes to a server that only runs the rules, with no rendering, and uses some rules of it's own to validate the data before distributing back to everyone.

So an engine is rules + data + representation in a nutshell. And networking is a way to share the data between computers.

I'm also in college, I started experimenting with OpenGL and SDL in my free time around october but only really started in november. It took me about 3 weeks to implement a proper .dae importer. And about a month to implement the camera system, I first tried to make my own 3d math library but this took too long so I imported one. I'm currently learning about different lighting models but I think the hardest part has yet to come for me (physics and collision) which will probably take more than a year to implement but it's a hobby of mine so I don't have to worry about time.

...

ok, i didnt consider rendering and what not as well. damn thats actually a lot of studf undr the hood you dont think about at first. so if developing an engine is so difficult why do companies bother instead of using something like unreal or cry?

That place is for already built game engines. This is technicality of implementing game engines. Not the same thing.
And may be you tone down a bit. This is not your Jow Forums.org/pol

I picked glfw. Good luck friend

If you see unreal games or unity games, they all have same look and feel. Although your average Danny will not be able to tell but they all renders the same, have same physics, audio system, lighting. Off course ignoring the tweaking they provide.
Think of Dream Works, Rockstars,Souls games, they look and feel different(Rockstar uses bullet engine, dark souls uses havok).
But one of the most important thing is these companies started way before unreal became public use. Unreal had lots of limitation. It still might have but we can't see. Industry veterans know the limitations.

As for dissidents employees who leave company to make hit, they mostly pick unity or unreal and make a hit. Like Pubg, rocket league, day z, h1z1, and other survival games(sick of them)

>why do companies bother instead of using something like unreal or cry?
Because of licensing fees. Also if a studio has their own engine they have more understanding and control over the game.

Different needs and licensing. From what DICE has said Frostbite is very specialized and relatively bare bones in terms of tools so the developers get more technical with it, but also pull more performance out of it. Unreal focuses on having a relatively easy development tool kit (SDK) so indie studios and beginners can use it to make games. Unity is like Unreal in that regard. But they're also pretty feature complete and theres no room to customize the engine, like animation or sound system, without tearing it apart which made be hard for someone who never worked on it.

Unless you really need a specific function, like say GPU accelerated physics or some crazy animation system like GTA's euphoria then you probably won't need to make your own engine.

They look the same or similar because cutting edge graphics techniques are shared and well known, so the principles are mostly the same, the implementation and performance is just different depending on well the engineer optimized it. You can find many papers online about rendering techniques, they're just out there, or you can pay for membership to one of those game development conferences and get all of the presentations and white papers and shit. I have a bunch on AI, one in particular I liked was FFXV's automated planning solver which is really a legitimate field of AI. FFXV's AI got blasted for being retarded lol, a lot of work for nothing. Rockstar's engine, capcom MTF also probably have the same rendering functions but may have been disabled or left out for artistic flare

>Lets pretend that engines like Unity and UE4 require you to be into engine development rather than already having prebuilt functionality for 99.9% of what you would need for a game
yikeroni

You don't need to know much about anything to build a game. Frankly, the biggest difference between an AAA game and a totally indie game is the latter won't have a subtantial art team to create 3D assets and animations.

>SDL
you should learn about imgui github.com/ocornut/imgui
you can build buttons, windows, fps counter and so on really easily so you don't spend time with sdl and you can do more opengl.

Game engine is to a game as a motor is to a car.

if my grandma had wheels she would be a bike

It is only hard if you try to make a good game engine

handmadehero.org

>Why is it hard from scratch?
Watch «handmadehero»

good for practice and general understanding, but if you are part of a small team or on your own,
just get something premade, it will save you A LOT of time and money
get someting easily customizable so that you can only use parts that you need

making game engines was a lot easier before, but now, for anything resembling modern game
you have to have modern engine, meaning either having a team developing in-house engine or just
using someting ready to go

i tried making my own, but honestly its just not worth the time and energy

This is probably stupid, but If I wanted to make an Open-Source implementaion of Street Fighter Third Strike, how would I do that

never thought i'd see myself on Jow Forums but this is pretty great
not really sure how to prove it besides uploading a picture from my phone

Attached: BwwHXuKCYAAYCYo.jpg (600x800, 45K)

twitter.com/id_aa_carmack/status/507788963981959168

Nowadays it's not that hard, you just need a lot of determination.
Take a look at Toy engine and Candle engine. Each of them was written by only a single developer, while both support advanced features such as PBR and advanced lighting techniques.

Either get the source code or reverse engineer it.
Reverse engineering is a magnitude of work larger to engineer it though, so good luck.

Most of reverse engineering is just research.
If you have any access to any internal documentation then it'll help.

What do they even code Arcade games in? I heard 4rd Strike was coded in C or something

Its understandbly hard though. Imagine trying to implement all the components from a game engine from scratch. All the components of components and components of those components. You see where I am going? Its not that writing a game engine is difficult, its that the scope of a game engine is rather large for a single individual to do. You can't just draw a box in a screen, you have to implement a system that can parse all kinds of objects, then add a camera, lighting, meshes, materials, shaders, cells, anims, rigging, etc. Thats just for the graphics and I simplified it. Game engines are full of these modules. Sure, not all game engines write these from scratch, they'll use frameworks to build a base from. Its still an enormous effort. Imagine trying to design, engineer and build a 6 cyclinder ICE will learn a lot but you will never meet your expectations.

She’s already the town bicycle

Godot is way better than Ren'py!

Attached: 15371120796710.jpg (1360x740, 123K)

I wrote a sorta raytracing 3d engine for HTML canvases. More like *just an algorithm* but it could render stuff in realtime at terrible resolution.

Fun exercise but totally useless.

I wrote a few. Not too hard if you know what you're doing. Impossible if you don't.

>hard
depends on what you are doing. For retro games, you can get by with the pc speaker and a pixel buffer. Logic is simple.

I made the game engine for my own game, I'm the solo programmer but I wouldn't call it a hobby

It's not hard because it's such a monolithic amount of code, it's hard because to make a truly effective game engine you have to actually understand the requirements of a game, what makes a good engine and what makes a bad engine, and you'll never know without alot of experience in game development
Just doing something like writing an OpenGL renderer only takes a few months

it was mostly assembly until the 90s then it was probably C

Hard? No, but it's fucking time consuming. The amount of shit you have to learn on it's own is already time consuming, then you have to implement it properly.

By the time your engine is "finished" (if you ever finish it), it's already 5 gens behind the "next gen".

You're better off using a game engine like Godot (if you insist on it being free and open source) or an engine like Unity. Your time is better spent developing the actual game mechanics than the nitty gritty implementation details. Chances are, your game is perfectly suitable for the aforementioned engines.

I would argue that developing your own game engine is analogous to developing your own web browser.

Unless you are developing a really simple game, you're going to be overwhelmed by the amount of work.

a simple web browser is easy to make
so is a simple game engine

software renderers are fun
offer more control than gpu

>Unless you are developing a really simple game, you're going to be overwhelmed by the amount of work.
You basically just said the same thing that I said.

a game engine runs the game
you can make a complex 2D game on a simple game engine

>By the time your engine is "finished" (if you ever finish it), it's already 5 gens behind the "next gen".
Doesn't apply anymore, game tech is stagnant enough that a game engine made 10 years ago is still relevant today

No, maybe Terry has, but starting from scratch requires more power than God.

Not even God has the capability to create a gameEngine from scratch.

It’s a lot of work for very little visible payoff. Most people who try to make game engines actually want to make games, they just get caught up by low-level technical autism/obsession.

Attached: F6315760-E081-4D5E-9B16-D0BC3C4BD570.gif (499x373, 286K)

Then there is even less reason to write your own engine from scratch and just focus on your game.

I've done it

You can't. The visuals are copyrighted

You could go the OpenMW route and make an engine that "somehow works" with that game and whenever you boot up the engine, it just asks for the game files

Attached: Morrowind.jpg (1366x768, 221K)

No you haven't.

Didn't stop the OpenRA and OpenDune people or the OpenTTD

That's the idea

Carmack succeeded because he was so good at rasterization that his games were outlandishly better looking (including frame rate) than the competition that nobody payed much attention to anything else.
Tons of aspects of his engines were at least moderately deficient even for the time, including AI and physics.

He was still amazing for what he did, but it's not as though he was fucking magical or something.

you can boilerplate your own game engine with tutorials on youtube and they are pretty descent. from there you just plan what features to add based on your game logic planning. big bloated prebuilt game engines have most common features pre installed, along with the latest rendering techniques so less time has to be spent on optimization. this is why AAA publishers love them. they never innovate so they never have to make up new code and they can pump out sequels upon sequels which are essentially reskins