Skip to content

MihaiBabiac/Framework

 
 

Repository files navigation

This Framework is intended to be a cross-platform starting point for 2D games running on Android and Windows. Everything is written in C++ and some Bash for building scripts.

Cross-platform features:

- Custom bash scripts transparent to source tree (folders are only used for better)
- Math library
	- 2D, 3D and 4D vectors
	- 3x3 matrices
		- multiplication
		- normal matrix calculation
	- 4x4 matrices
		- multiplication
		- rotation (over X,Y,Z or random axis), translation and scaling
		- frustrum, orthographic and perspective
		- inverse and transpose
		- object and camera look-at
	- Axis aligned bound boxes (AABB for both 1D and 2D)
	- Plane
	- Frustrum
		- reconstruction from view-projection matrix
		- intersection with point
		- intersection with sphere
	- Sphere-sphere intersection
	- 2D triangle determinant
	- Line-line intersection
	- Tangent/bitangent calculation (for normal/bump/parallax mapping)
- Time service
- OpenGL 2.0 graphics service
	- Shader loading and management
	- Generic buffer object (VBO/IBO possibly PBO for OpenGL 3.0)
	- 2D Texture loading
		- support multiple filtering types (Point,Bilinear and Trilinear)
		- load from RAW data, file or build-blank
		- wraping mode
	- Sprite rendering system
		- Multi-layer sprite batcher (batch merging for each layer)
		- Basic sprites
		- Animated sprites
			- Rectangular grip for frames
			- Inherits AnimationPlayer
		- Tiled background with parallax effect
		- Multiple shading options implemented in fragment shader:
			- alpha blending, alpha testing and none (does not take care of alpha)
			- per vertex color
		- Debug polygon and circle rendering
	- Texture mapped font rendering
		- load from raw font texture (16x16 cells, one per character)
		- monospaced font option
		- proportional font construction from monospaced font
		- font size and color
		- multiple centering options
	- Particle system
		- emitters (spawner)
			- circle emitter
		- effectors 
			- acceleration (gravity)
			- linear interpolation between 2 colors
		- very flexbile and relatively easy to use
	- Camera system
		- 2D camera
			- position
			- direction
			- zoom
			- object following (fixed camera or spring system option)
		- 3D generic camera
			- look at
		- 3D free camera
	- Simple caching for textures, shaders and buffer object to reduce OGL calls
- Image loading from file (automatic switch to right format)
	- PNG (pnglib)
	- Targa
- Physics service
	- AABB fast test
	- Convex polygon collision using Separating Axis Theorem (SAT)
	- Circle collision
	- Circle-Convex polygon collision (SAT)
	- Basic physics (linear velocity, linear acceleration, angular velocity and friction system)
- General purpose animation player (AnimationPlayer)
	- Forward, backward, loop
	- Interpolation between frames (usefull for MD2 model animation)
- Random number generation (int and double)
- Debug 
	- Console/logcat printing
	- Screen printing
	- Assert on OpenGL fault

Android specific features:

- Transparent resource system (automatic switch from assets to SD files)
- Multi-touch input (event-based with simple mutex)
	- Pinch to zoom and rotate
	- Virtual joystick
- Back key overwriting
- OpenSLES sound service
	- Playlists
	- WAV loading and playback
	- Basic SFX

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 87.8%
  • C++ 12.1%
  • Shell 0.1%