Giter Club home page Giter Club logo

terra-engine's Introduction

TERRA Game Engine

TERRA is a cross platform game engine written in Object Pascal. While compatible with Lazarus and Delphi, it does not use visual components. The engine was developed with focus on performance and optimized to run on mobile devices. Does not require any external library or framework besides linking to OpenGL and system libraries.

Support via Paypal

Build Status

windows-fpc-x86 linux-fpc-x86_64
windows-fpc-x86 linux-fpc-x86_64

What is supported?

Compilers:

  • FPC 2.6.2 and up
  • Delphi 7, Delphi XE2, Delphi XE3, Delphi XE10.

Platforms:

  • Windows
  • Linux
  • OSX using FreePascal or Delphi
  • iOS using FreePascal or Delphi
  • Android using FreePascal or Delphi
  • OUYA

Renderers:

  • OpenGL (both shader-based and fixed pipeline)
  • OpenGL ES

File formats

Images:

  • PNG
  • JPG
  • BMP
  • TGA
  • DDS
  • PSD
  • GIF (including animation)
  • PVR (Android)

Fonts:

  • TTF
  • FNT (Angelcode)

Audio:

  • WAV
  • OGG
  • MOD
  • MIDI
  • MP3 (Windows/Android/iOS only)

3D Models:

  • OBJ
  • MS3D (Milkshape)
  • SMD (Valve)
  • 3DS
  • Collada
  • GLS ([g]iles)
  • X (Microsoft DirectX)

Core Features

  • SIMD optimized math library (Vectors, Matrix, Colors, Rays, etc)
  • Full cross platform abstraction (write once, compile everywhere)
  • Automatic resource management with lazy loading/multithreading (Textures, Meshes, Sounds, Animations, etc)
  • Logging with advanced options (filtering, console output)
  • Custom memory manager
  • Input management (keyboard, mouse, touch, gamepad)
  • Thread management system (tasks, etc)
  • Image manipulation framework (resize, crop, etc)
  • 2D/3D sound system based on OpenAL
  • Can be used standalone or integrated into a Delphi/Lazarus form
  • Localization system (with UTF8 support)
  • In-app purchase integration (iOS and Android)
  • Steam integration

Renderer Features

  • Optimized sprite rendering with batching
  • Mesh skinning with skeletal animation (both on GPU and CPU)
  • Inverse kinematics animation
  • Mesh dynamic deformation system (water, explosions, cloth rendering, etc)
  • Uber shader system (forward and deferred rendering)
  • Shadows (stencil-based and shadowmaps)
  • Particle systems (sprites, lines and meshes)
  • Dynamic light system with culling (infinite number of lights per scene, supports point, directional and spot)
  • Infinite reflective surfaces (water, mirrors, etc)
  • Water shading with flow map support
  • Texture palettes/color grading (both meshes and sprites)
  • Animated textures (GIF or video based)
  • Screen based effects (color correction, outlines, refractions, SSAO, etc)
  • Font rendering (including density field fonts)
  • Billboards and decals
  • Fur rendering
  • Terrain rendering
  • Voxel/metaballs rendering
  • Software rasterization support
  • Lightmapping support (both rendering and generation)
  • Cartoon/celshading support
  • Skyboxes, skydomes and volumetric cloud rendering
  • Standard solids procedural meshes
  • Spline based mesh extrusions
  • Optimized 2D sprite rendering (including tilemaps from Tiled map editor)

GUI Features

  • Optimized batched rendering
  • Standard widgets (buttons, labels, images, comboboxes, etc)
  • Widget animation (colors, opacity, size, rotation, etc)
  • Custom virtual keyboard (supports Russian, Korean, Japanese and Chinese)
  • Transition effects (fade out, slides, etc)

Artificial Inteligence

  • Path finding
  • Boids
  • Navigation mesh

Networking features

  • Portable sockets API
  • Client and Server for multiplayer
  • Support for HTTP and FTP protocols
  • UPNP support for NAT punchthrough

Integrated Mobile SDKs

  • Flurry
  • iAd
  • Admob
  • Tapjoy
  • Fortumo
  • Chartboost
  • Adbuddiz
  • Vungle

Projects using TERRA

terra-engine's People

Contributors

auoks avatar polywickstudio avatar relfos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terra-engine's Issues

error compiling sprite_benchmark.lpi FPC 2.7.1

Compile Project: Exit code 1, Errors:4, Hints:28
TERRA_FileIO.pas(21,9) Note: Class should have one destructor only
TERRA_Multimedia.pas(443,25) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(443,66) Hint: Parameter "uSize" not used
TERRA_Multimedia.pas(449,21) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(455,23) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(461,27) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(467,29) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(472,25) Hint: Parameter "Handle" not used
TERRA_Multimedia.pas(472,39) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(472,46) Hint: Parameter "uPeriod" not used
TERRA_Multimedia.pas(472,65) Hint: Parameter "bChanged" not used
TERRA_Multimedia.pas(477,27) Hint: Parameter "JoyID" not used
TERRA_Multimedia.pas(477,34) Hint: Parameter "uThreshold" not used
TERRA_Multimedia.pas(482,29) Hint: Parameter "mcierr" not used
TERRA_Multimedia.pas(482,46) Hint: Parameter "pszText" not used
TERRA_Multimedia.pas(482,66) Hint: Parameter "uLength" not used
TERRA_Multimedia.pas(487,25) Hint: Parameter "lpstrCommand" not used
TERRA_Multimedia.pas(487,39) Hint: Parameter "lpstrReturnString" not used
TERRA_Multimedia.pas(487,69) Hint: Parameter "uReturnLength" not used
TERRA_Multimedia.pas(487,94) Hint: Parameter "hWndCallback" not used
TERRA_Multimedia.pas(492,26) Hint: Parameter "pszDevice" not used
TERRA_Multimedia.pas(497,26) Hint: Parameter "mciId" not used
TERRA_Multimedia.pas(497,41) Hint: Parameter "uMessage" not used
TERRA_Multimedia.pas(497,61) Hint: Parameter "dwParam1" not used
TERRA_Multimedia.pas(497,71) Hint: Parameter "dwParam2" not used
TERRA_Multimedia.pas(502,39) Hint: Parameter "dwElementID" not used
TERRA_Multimedia.pas(502,62) Hint: Parameter "lpstrType" not used
TERRA_Multimedia.pas(507,22) Hint: Parameter "pszCommand" not used
TERRA_OS.pas(137,9) Error: Identifier not found "HGLRC"
TERRA_OS.pas(137,14) Error: Error in type definition
TERRA_OS.pas(144,16) Error: Identifier not found "TRect"
TERRA_OS.pas(144,21) Error: Error in type definition
Codetools, Errors:1
TERRA_OS.pas(137,9) Error: identificador no encontrado: HGLRC

Many samples not comping on master branch

Hi,
i tried to compile your samples in 3D and many of them not compiling, missing units like TERRA_UI or TERRA_Scene, or TERRA_SpriteManager.

Samples:

  • billboard_simple.dpr
  • color_grading.dpr unknown proptery SpriteRenderer in object TERRAViewport
  • mesh_ik.dpr missing unit TERRA_UI and more
  • mesh_smoothing.dpr missing unit TERRA_UI and more
  • outline_simple.dpr missing unit TERRA_UI and more
    ....

I checkout master branch, "TERRA-Engine-master.zip".

It seems to be a nice engine but not usable at moment.

Best regards
Thomas

PS: sorry for bad english, is not my native language

MIDI support for Android seems to be missing

I'm trying to use Terra to play MIDI notes in an Android application.

The main MIDI unit (TERRA_MIDI.pas) uses TERRA_MIDI_IO.pas to send the notes, but TERRA_MIDI_IO.pas only seems to exist for Windows and Mac.

Is there any chance to get MIDI support for Android too?

Thanks!!

I can not find the units

TERRA_UIWindow, TERRA_UIButton, TERRA_UITabs,
TERRA_UISprite, TERRA_UILabel, TERRA_UIIcon, TERRA_UIScrollbar

this units uses in gui_tabs.dpr

Fatal Error

TERRA_Application.pas(46,32)
Fatal: Circular unit reference between TERRA_Application and TERRA_Object

Android Support

Hello
It's written in readme, that Terra has Android support via FPC and Delphi
I've tried to build Terra samples for windows - everything is OK, tried on Android - lots of compilation errors about not working "system" routines like debug, callstack, cmem, unixthreads and so on, main units like terra_object or terra_string are not compilable due to string types unsupported for android target.
Tried some steps like putting conditional defines, commenting some units - still lots of errors.

Please provide info about the way to get Terra running on android, either Delphi(preferably) or FPC (which is way harder to get anything working in android-building toolchain).

P.S. I'm using Delphi XE7 update1 and do things for android with it (i.e. http://delphioga.sf.net/ even without FMX), tried some FPC-guides for android, but not yet successful (if Terra would support only FPC for Android - it's OK, I'll manage that)
Thank you for Terra, BTW.

Is Terra-Engine 64 bits compatible?

Hi All, just wondering if the engine is 32bits only or 64 bits compatible as well?
E.g., during compilation I see the following in TsdJpegImage
image

which is not really portable. Also, there is native/assembler code which might be also only 32bits compatible( sorry, I'm not assembler guy :) )

Also, it's interesting how it works for iOS, considering Apple requires for latest iOS versions the applications to be 64bits only.

xmlSaveCompact ?

hi,

I try compile. Missing xmlSaveCompact and XMLNode.
Please commit.

Examples are broken.

Hi All,
First of all, thank you for the engine.
I haven't updated it for a while, but with latest version now I can see it misses some classes and units when I try to compile examples.
E.g.:

gridpathfinding.dpr(185,10) Error: identifier idents no member "SpriteRenderer"
gridpathfinding.dpr(185,10) Fatal: There were 1 errors compiling module, stopping

or

Compiling ..\Samples\Source\3D\Particles\particles_simple.dpr
particles_simple.dpr(7,3) Fatal: Can't find unit TERRA_UI used by MaterialDemo
Fatal: Compilation aborted
Error: c:\lazarus\fpc\3.0.0\bin\x86_64-win64\ppcx64.exe returned an error exitcode

Almost all 3D examples fail to compile because of absense of TERRA_UI.

Is it possible to to get fixed examples or missed classes/units?

Thanks in advance.

TERRA_PACKAGE_WINDOWS.lpk error

Hi Relfos .
i tried installing terra package on windows (from master branch), but seems its not ready yet .
i got errors especially if i disable debuging + enable optimization .
it would be nice if you provide a separate working version of terra engine , so we can test your engine.

best regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.