What is a game engine rreally?
premade library of tools at your disposal?
A game engine is a collection of tools and hooks. A complete "Game Engine" consists of any number of systems, some are required, others are optional. It entirely depends on the needs of the project. Some dont need physics, some dont need 3D, for example.
Game Engine Components are:
- Rendering Engine
- Asset Loader & Entity Manager
(Assets like, Models, Textures, Materials, etc)
- Scene Manager / "Map/Level" Loader
- Entity Animation Manager
- Artificial Intelligence & Pathfinding
- Particle Engine
- Physics Simulation Engine
- Audio Engine
- Input Manager
- GUI System
- Scripting Engine
- Garbage Collector (if one isn't present)
- Network Component (aka NetCode)
And tools would be created to work with the engine:
- Scene/Map/Level Editor
- Model Viewer
- Script IDE
- Build Pipelines
- Sound Shader compiler
- Material compiler
- Model compiler / Asset exporters
As you can see, a "Game Engine" is a large series of components. This is why you have entire army's of people swarming around one as a tech house, like Rockstar San Diego and the RAGE Engine, or one man armies like John Carmack with Id Tech and Tim Sweeny with Unreal Engine. (note: these people have a bunch of programmers underneath them, but they are chief architect and bare an unorthodox amount of work of the engine onto themselves)
does it restrict my customization ability and animation ability?
- for example, I want to make a new fighting system, with its own unique animations, as well as custom characters and custom environment, basically the entire game is custom, the environment, the characters, the movement, textures.
Would this be possible with a pre made game engine?
Is a word, yes. In short? yeah, and It's a great deal of work.
In long? It depends on the engine! Some use scripting languages that interface with the engines API that lets you get right down and dirty into the guts of the system, doing basically anything you want with it without the need to even touch the underlying code. Engines like UDK do this with UnrealScript. Specifically with UDK there is extremely little reason to go into the code, because the scripting has unparalleled power.
Others require you modify the code base to do anything useful with it.
The new fighting "system" would require usurping the existing character controllers, as well as modifying their animation bank, and letting the engine know of the new states ("I am punching now! Use animation "punch1" when I do this! Check for collisions with Entities with my fist. Do something if so. Now I am not punching, go back to "fists raised idle")
The rest is all asset creation and has no baring on the code at all. Except implementing each new one, you might need to update something somewhere for that to register, make the engine "aware" of it.
Is a game engine needed? if the premade one doesnt help? Do I need one to make a game from scratch in general?
is it called a game engine? because it helps render all the environment and characters during gameplay and tell the objects and characters what to do or is that part of programming the game and not the engine??
Yeah, (im generalizing here but) thats all game programming. A Game Engine is typically created during development if one hasnt been chosen. You will still NEED most (if not all) of the components listed above. Otherwise your going to be developing for 10 years rewriting all the same code for the same thing over and over and over and over again and HOPING itll all play nice.
Pretty much every game project ever that started from scratch, by the end of the project, they have made themselves a Game Engine that powers it.
Even something like Super Meat Boy, thats a custom engine programmed by Tommy.
There's really no two ways about it, to make a game, your gonna want an "engine" whether you choose on Off-The-Shelf style, or craft one from the ground up.
Even PONG kind of runs off of an engine haha
Could I make a game without premade game engine or engine in general and just code everything? or would making a game from scratch actually mean, making the engine to go along with it?
Pretty much exactly what I just answered above
My idea of game engine is just a tool of common materials used in games to put into your game and not the basic life or core of the game, where, if you didnt have it, the game could not play or look 3D, Thats the job of the compiler correct?
The compiler is responsible for transforming your code into an executable for your OS to run. And thats it. The Rendering Engine component is responsible for sending instructions through a DX/OGL/Software instruction API, that sends the information to your display card (video card, whatever), and in turn you NVidia powerhouse then takes over to display what it was told onto your screen. Your GamePlay component is completely separate from everything, and its responsibility is to run through a single big loop that
- Checks out the previous state
- listens for input from user
- makes updates based on logic and input
- modifies the frame contents
- sends the frame contents to your rendering engine
You can craft your gameplay to be whatever you want it to be. The difference in presentation between an RTS and a First Person Shooter is a matter of where the main camera is positioned and pointed.
Again, a Game Engine is a collection of tools and Components. Your Gameplay Component is going to send information to ALL of those components for them to do their job (play sound, find next footstep position, change scene, whatever you want)
Could I use a pre made game engine and still get the results I want?? or should I make everything from scratch? (given that I need to make an engine in order to have my game work)
Being as this is your very first rodeo, it probably wouldn't be wise to just go "craft a game engine". At the point of creating this thread you werent even totally sure what a Game Engine was, how do you expect yourself to build one? Go grab a few and dissect them. There are a lot of free game engines to grab, and a lot of them are open source now for you to poke around in. Break them apart, work with them a bit, see how they tick. Find what you like, and figure out how you would implement that into your own engine (and possibly improve upon it).