Playfield Engine Design Overview
Porting Layer
Did you know that Playfield Engine
runs seamlessly on Windows, macOS, Linux, iPhone,
iPad, Android, Web browsers, — and even game consoles?
The extern/StratoHAL
directory contains its platform abstraction layer,
which cleanly handles all platform-specific differences.
Common Components
File |
Description |
image.c |
Image manipulation |
stdfile.c |
File access via C stdio library |
glyph.c |
Font drawing via FreeType library |
wave.c |
OggVorbis decoder via libvorbis |
Windows Layer
File |
Description |
winmain.c |
wWinMain() |
d3drender.c |
Rendering dispatch |
d3d12render.cc |
Direct3D 12 rendering |
d3d11render.cc |
Direct3D 11 rendering |
d3d9render.cc |
Direct3D 9 rendering |
gdirender.c |
GDI rendering |
dsound.c |
DirectSound audio |
dsvideo.cc |
DirectShow video |
macOS Layer
File |
Description |
nsmain.m |
main() using AppKit |
GameRenderer.m |
Metal rendering |
aunit.c |
Audio Unit audio |
Linux and BSD Layer
File |
Description |
x11main.c |
X11 main |
glrender.c |
OpenGL rendering |
asound.c |
ALSA audio |
bsdsound.c |
/dev/dsp and /dev/audio audio |
iOS Layer
File |
Description |
uimain.m |
main() using UIKit |
GameRenderer.m |
Metal rendering |
aunit.c |
Audio Unit audio |
Android Layer
File |
Description |
MainActivity.java |
Android activity |
ndkmain.c |
C code using Android NDK |
ndkfile.c |
Asset accedd C code using Android NDK |
SIMD Acceleration
Only enabled on x86 and x86_64 Windows target.
File |
Description |
drawimage.h |
Definitions of drawing functions |
avx2.c |
AVX2 |
avx.c |
AVX |
sse42.c |
SSE4.2 |
sse4.c |
SSE4.1 |
sse3.c |
SSE3 |
sse2.c |
SSE2 |
sse.c |
SSE |
Main Layer
The main layer consists of src/*.c
files, which defines API for Playfield Engine
.
There are C APIs defined in src/api.c
, and there are Noct wrappers defined in src/vm.c
.
Tag File
Tagged file support is provided by the engine and is optionally available.
Developers may define an engine to run tag file scripts.