All Projects → Pi-Man → PiE

Pi-Man / PiE

Licence: MIT license
A simple lightweight Game Engine built on SDL2 GLEW and (soon) OpenAL (currently using Port Audio instead). Written in C++

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to PiE

Qfusion
Source code for cross-platform OpenGL gaming engine
Stars: ✭ 255 (+1316.67%)
Mutual labels:  game-engine-3d
Arxlibertatis
Cross-platform port of Arx Fatalis, a first-person role-playing game
Stars: ✭ 602 (+3244.44%)
Mutual labels:  game-engine-3d
Babylon.js
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.
Stars: ✭ 15,479 (+85894.44%)
Mutual labels:  game-engine-3d
Zooshi
Multi-platform game where you feed well dressed animals with sushi
Stars: ✭ 281 (+1461.11%)
Mutual labels:  game-engine-3d
Funwithwebgl2
Fun with WebGL 2.0 Youtube Tutorial Series
Stars: ✭ 488 (+2611.11%)
Mutual labels:  game-engine-3d
Neothyne
Engine and game
Stars: ✭ 57 (+216.67%)
Mutual labels:  game-engine-3d
Honeycomb-Game-Engine
3D Game Engine written in C++ using OpenGL.
Stars: ✭ 31 (+72.22%)
Mutual labels:  game-engine-3d
ioq3
The ioquake3 community effort to continue supporting/developing id's Quake III Arena
Stars: ✭ 2,067 (+11383.33%)
Mutual labels:  game-engine-3d
3dworld
3D Procedural Game Engine Using OpenGL
Stars: ✭ 527 (+2827.78%)
Mutual labels:  game-engine-3d
Ballistica
The BombSquad Game Engine
Stars: ✭ 180 (+900%)
Mutual labels:  game-engine-3d
Terasology
Terasology - open source voxel world
Stars: ✭ 3,247 (+17938.89%)
Mutual labels:  game-engine-3d
Xray Oxygen
🌀 Oxygen Engine 2.0. [Preview] Discord: https://discord.gg/P3aMf66
Stars: ✭ 481 (+2572.22%)
Mutual labels:  game-engine-3d
Jme Clj
A Clojure 3D Game Engine Wrapper, Powered By jMonkeyEngine
Stars: ✭ 83 (+361.11%)
Mutual labels:  game-engine-3d
Tinyengine
Tiny OpenGL Wrapper / 3D Engine in C++
Stars: ✭ 251 (+1294.44%)
Mutual labels:  game-engine-3d
Etlegacy
ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Stars: ✭ 212 (+1077.78%)
Mutual labels:  game-engine-3d
inanity
Cross-platform C++ game engine.
Stars: ✭ 28 (+55.56%)
Mutual labels:  game-engine-3d
Permafrost Engine
An OpenGL RTS game engine written in C
Stars: ✭ 851 (+4627.78%)
Mutual labels:  game-engine-3d
GroundEngine
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++
Stars: ✭ 61 (+238.89%)
Mutual labels:  game-engine-3d
Nebula
Nebula is an open-source and free-to-use modern C++ game engine.
Stars: ✭ 224 (+1144.44%)
Mutual labels:  game-engine-3d
Lumberyard
Amazon Lumberyard is a free AAA game engine deeply integrated with AWS and Twitch – with full source.
Stars: ✭ 1,785 (+9816.67%)
Mutual labels:  game-engine-3d

PiE

A simple lightweight Game Engine built on SDL2 GLEW and (soon) OpenAL (currently using Port Audio instead)

Written in C++

Features

Feature Planned Basic Implementation Added Done Notes
GameObjects 🟩 🟩 🟩 🟩
Components 🟩 🟩 🟩 🟩
RenderObjects 🟩 🟩 🟩 🟩
RenderContexts 🟩 🟩 🟩 🟥 per RenderObject
Transforms 🟩 🟩 🟩 🟩 supporting parent Transforms
Abstract Vector/Matrix types 🟩 🟩 🟩 🟩 N dimensional using any numeric type
Custom render pipeline 🟩 🟩 🟩 🟥
Wavefront OBJ loader 🟩 🟩 🟩 🟥 with .mtl support
JSON parser/printer 🟩 🟩 🟩 🟩
Fixed Update loop 🟩 🟩 🟩 🟩
Render Loop (separate thread) 🟩 🟩 🟩 🟥
Render Loop (same thread) 🟩 🟩 🟩 🟩
Low Level Audio 🟩 🟩 🟥 🟥 Using Port Audio
High Level Audio 🟩 🟥 🟥 🟥 Using OpenAL
Custom Shaders 🟩 🟩 🟩 🟩
Shader Uniforms 🟩 🟩 🟩 🟥 int, float, double, vec2-4, vec2-4i, vec2-4d, mat4, mat4d
Point Lights 🟩 🟩 🟩 🟩
Directional Lights 🟩 🟩 🟩 🟩 Up to 4 point lights and 4 directional lights per render object (no limit for scene)
2D Perlin Noise generator 🟩 🟩 🟩 🟩
Height Map mesh generation 🟩 🟩 🟩 🟩
Render Hooks 🟩 🟥 🟥 🟥
Render Interpolation 🟩 🟩 🟩 🟥
Custom VertexAttributes 🟩 🟥 🟥 🟥
GUI components 🟩 🟥 🟥 🟥
Custom Coordinate System 🟩 🟥 🟥 🟥
Data Save/Load System 🟩 🟥 🟥 🟥 Can currently be done with JSON
Keybinding System 🟩 🟥 🟥 🟥
STL Model Loader 🟩 🟥 🟥 🟥
4D Render Support 🟩 🟩 🟥 🟥

Hello Window

#include <PiE.h>

int main(int argc, char** args) {
	//-------create context and initialize engine---------
	PiE::EngineContext ctx;

	PiE::initEngine(ctx);

	SDL_SetWindowTitle(ctx.mainWindow, "Hello Square");
	//----------set up main camera and shader-------------
	Camera5DoF camera{ ctx.mainWindow };

	ctx.mainCamera = &camera;

	Shader shader;

	shader.buildShader("vertexshader.txt", "colorFragmentShader.txt");

	ctx.mainShader = &shader;
	//------------add in render objects---------------
	RenderObject RO;
	RO.VAO = VertexArrayObject();
	RO.VAO.addQuad({ // simple rect from 1,1 to -1,-1
		-1.0f, -1.0f, 0.0f,
		+1.0f, -1.0f, 0.0f,
		+1.0f, +1.0f, 0.0f,
		-1.0f, +1.0f, 0.0f,
	});

	PiE::addMesh(ctx, RO);
	//-------------------run main loop--------------------
	camera.move(0, 0, -1);
	PiE::startMainGameLoop(ctx, true);

	return 0;
}

this will render a single quad the width of the window

Using in VS

1)copy all folders but the "DLLs" folder to the VS project folder

2)copy all the dlls from the "DLLs" folder into the VS project folder

3)optionally copy any assets you would like to use into the VS project folder or sub folders

4)add the include folders from each of the dependency folders to the include directories setting. MAKE SURE YOU HAVE THE CONFIGURATION(S) YOU WANT TO USE SELECTED

5)add the dependency folders to the library directories setting

6)add the .lib files to the linker input additional dependencies setting

PiE.lib (PiEd.lib for debug configuration)
SDL2.lib
SDL2main.lib
SDL2_image.lib
glew32.lib
opengl32.lib
portaudio_x64.lib

7)set the linker subsystem to Console (this is required by SDL)

note: if you still are unable to build a project, make sure your build settings are correct and that you set the settings for the correct build configuration

Using VS Template Project

1)swap branch to Template Project and clone

2)find the .sln file and open

Building in VS

1)open PiE.sln with VS

2)right click the PiE project (as opposed to one of the example projects) and click build or rebuild

3)look for the .lib in the x64 folder

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].