Skip to content

About

This is the documentation for Pascal3D. As it just went online (end of January 19) and is still under construction. The plan is to start with the tutorials which I will add step by step in the next couple of months and add the api reference afterwards.

What is Pascal3D

Pascal3D (P3D) is an open source cross platform game engine for Free Pascal/Lazarus. It is focussed on ease of use while trying to be flexible enough to support advanced features and being extendable.

Targeted alpha release

The below feature list reflects that of the targeted alpha release for the end of 2019. Currently the code undergoes frequent compatibility breaking changes and some of the features might be broken from time to time. The plan is to unify the code structure and to reimplement the features in a consistent and logic way. At the same time I'm writing the documentation for all of the reimplemented features. So everything that is documented and not easy to use is a bug. This project depends on feedback. You can use the bug tracker to file bugs.

Features

  • Simple to use
    • Object oriented
    • Garbage collector
    • Automatic saving and loading of game objects
      • Properties are streamed from/to file automatically
    • Scene graph to render complex scenes
    • Transform Object to represent rotations, movements and scales
      • Intuitive - You don't have to be a mathematician to use it
      • Supports multiple types of rotations (quaternions, euler angles and matrices)
      • The sequence of the transformation can be adjusted flexibly
    • Easy to use plotting library (P3DPlot) that uses OpenGL
      • Game objects can be visualized by the call of a function
      • Textures, Meshes, ...
      • Many helper functions to quickly plot vectors
      • Multiple render calls can be generated with a simple api in the Free Pascal code
      • Render calls are highly customizable with many settings
      • Extendable with your own classes
    • Blender export script (Python) to get your data from Blender to Pascal3D
    • Instancing
    • Image based lightning - can be generated from environment maps on the fly
    • P3DScene editor for visually change your scenes
    • Editor library can be used outside P3DScene editor for debugging and modifying your applications at runtime
    • Armatures for rigging of meshes
  • Shader nodes can be used to create complex materials
    • Many preconfigured nodes
      • PBR and Blinn/Phong nodes
      • Simple ocean shader
    • Possibility to define your own nodes using the P3D Markdown language and GLSL blocks
  • Graphical User Interface
    • A GUI similar to Lazarus' LCL
    • Form editor for visually designing your interface (Planned)
  • Multiple methods for rendering text
    • Signed distance field for bitmap fonts
    • Prerendered bitmap texts from TTF
    • TTF fonts can be easily converted to Bitmap Fonts
  • Basic functionality with OpenGL 2.1+ (Some advanced functions like PBR need OpenGL 3.3)

Pascal3D License

Pascal3D is published under the MIT License

Copyright (c) 2019 Johannes Rosleff Soerensen

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.