Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
In short, Paracraft is a free and open source animation software. We stick to the philosophy that everything is made up of blocks. Paracraft is made simple enough for everyone (including kids) to create animated stories. It is also powerful enough to create full-fledged cross-platform application with [NPL].
Paracraft is written in C++ and NPL scripts. The low level graphics api and os functions are written in C++, which is a standalone computer game engine called ParaEngine. Everything else is written in NPL scripting language.
Basic world building
- 100+ (rich set of) commands / UI to create worlds with blocks
- copy/paste/mirror/rotate/scale large number of selected blocks
- unlimited undo/redo operations
- 200+ buildin block types: cube, water, light, stairs, ...
- define your own block type: with a rich set of properties like color, texture, lighting, normal map, etc.
- super large world with on-demand and async loading and light calculation
- unlimited render distance (not real time for far away blocks)
- advanced shader rendering: deferred shading, shadow, reflection, HDR, depth of view, etc.
- fallback renderer supports even the oldest fixed function graphics card.
- [via free plugin] open minecraft world: block conversions(a rough match) are done dynamically as you walk around the world.
- [via free plugin] save blocks to STL file for 3d printing
- color block allows you to create blocks with unlimited colors (pick any color you like).
- model block allows you to scale multiple blocks into a single block.
- drag and drop FBX file (maya/3dsmax) to the world.
- import/export from/to BMax(block max) file, which is the native file format used by Paracraft for both static and animated blocks.
- rich set of customizable texture packages to change the theme of the worlds.
- world simulations: snow, rain, water, sky, fog, sun, etc.
- special blocks: red-stone blocks, code block, command block, bone block, movie blocks, etc.
- hundreds of build-in block templates to learn how a group of blocks can achieve powerful logics.
- natural world generators via plugins
Character Making, Rigging and AI
- create animated characters from selected blocks
- use bone block to define joints of character, so that they can be automatically rigged and animated later on.
- turn your blocks into live characters
- bone blocks inside characters are automatically bound to their skin blocks, and recognized with default walking animations.
- program your characters with items, commands or NPL script.
- make detailed animations to each joint (see later sections) with 3d manipulators and inverse kinetics handles.
- facial expression editing with bones
- import and use fbx file (support embedded textures) as actor asset.
- dozens of buildin actors and effect assets.
- powerful movie blocks: adding cameras, actors, subtitles, musics, sounds, commands and many more.
- use wires to connect movie blocks to play movie clips in sequence or parallel.
- role-playing actors to record physical animations like walking, and jumping.
- tweeking detailed animations with bone editors on top of recorded animations.
- [free plugin] export movie in a wide range of video format, such as mp4, avi, gif, mov, etc.
- 70+ high quality user created movie worlds to play and study (requires Internet connection to download).
- 10+ video tutorials on website (in English/Chinese)
- private server: each client is a private server. multiple users can edit the same world at the same time.
- NPL code wiki: buildin personal webserver for learning NPL
- ParacraftSDK: for creating your own plugins for Paracraft.
- software can install and run offline without network connection.
- change UI language dynamically: currently supports English/Chinese.
- super small world size: a very large world typically take only a few hundred KB.
- play movie as stereo 3D (left/right eye) at real time. good for cheap VR solutions with mobile phones.
All logics above this section is written in NPL scripting language. This section lists features provided by the low level C++ game engine. In short, ParaEngine is a C++ general-purpose cross-platform game engine which is written since 2004 and used by several big projects.
- support PC/Web(via activeX plugin)/Android/iOS, and linux (server only)
- full-graphics support: directX/opengl renderer
- scriptable via NPL (our single language solution for both client and server side development)
- extensible via C++/Mono C#/NPL. (NPL is always the recommended way)
- high performance multi-threading and network programming support
- 3D scene management and rendering system, supporting 40,000m*40,000m continuous game world. It is suitable for RPG games with super large continuous map, many globally movable characters, complex scene triggers and story design.
- dynamic portal system: mixing room based indoor environment with outdoors.
- Advanced programmable pipeline for all renderable objects in the scene.
- Flexible shader management on a per object basis. One can dynamically change the shader program of any scene objects on a per frame basis.
- Fixed function pipeline support, which allows the game engine to run on older machines while retaining most of the graphics qualities. It can be mixed with the programmable pipeline to adapt to a wide variety of graphics cards on the market.
- Hardware-occlusion testing can be turned on in the rendering pipeline, if there are a huge number of small yet dense models in the game scene.
- Tile based ROAM/CLOD terrain engine. Because it is tiled, there is no limit to the size of the terrain. Terrain holes can be created dynamically, which allows game developers to build caves, tunnels or underground world directly in the same global terrain environment. In-game terrain editing supports height field modifications, unlimited multi-texturing on terrain surface, auto-breaking super large terrain texture files in to smaller ones, fast ray-tracing on global height field.
- Voxel mesh support
- FFT based ocean wave simulation with reflection and refraction mapping for both above and underwater scenes. Supporting real time shorelines and underwater scene blur effect.
- Unlimited ranged light sources can be put anywhere in the game world.
- Robust shadow system: supporting both shadow volume and shadow mapping at the same time.
- Game resource management system: textures (dds, png, tga, bmp, jpg), 3D objects (x file, ParaX file), 3D skeletal animation (X file, ParaX file), effect file (FX file), sound (wav, mp3), virtual file management (zip), database file management, collada reader.
- A comprehensive 2.5D GUI engine, fully scriptable through the NPL language. Drag and drop controls, scrollable containers, multi-state buttons, list box, slider bar, grid view, AVI video player, edit box, IME edit box supporting various language input methods, supporting GUI objects attached to 3D scene objects.
- MCML/NPL renderer allowing you to develop game UI the same way as HTML/JAVA.
- Skeletal animation with customizable character appearance and reconfigurable equipment, such as hair style, skin color, clothes, etc. Settings can be made persistent by the pre-designed database. Supporting BVH motion capture export for biped based skeletons.
- Level of detail support for any character or mesh.
- Particle system supported.
- Three customizable follow cameras modes and one free camera mode. The camera will automatically position itself to avoid collision with the view frustum and the physical environment.
- In-game movie recording in any movie format, such as AVI.
- Fast mouse ray-picking with 3D scene objects.
- [Effect] global sunlight and skydome simulation. It will affect shadows and scene illumination.
- [Effect] per-pixel lighting and fog can be turned on in each model shader.
- [Effect] For each renderable object, some other effects can be dynamically applied to it when necessary, such as object construction shader, occlusion shader, shadow mapping shader, etc.
- [Effect] Cubic environment map, animated texture, reflective texture, light map on a separate UV set, all of which can be exported to the game engine.
- The build-in scripting engine is powered by NPL language. It mimics the functioning of neural networks and codes the logics of distributed game world into files that could be deployed to arbitrary runtime locations on the network.
- In the NPL programming environment, it makes little difference between developing network applications and stand-alone ones.
- All API of the game engine are exposed through the scripting interface, including GUI, game events, 3D scene management, AI game logics, resource management, networking, database queries, etc. It is possible to develop a traditional RPG game through the scripting interface only. The scripting interface is well documented with over 700, 000 lines of source code examples.
- A rich set of libraries are developed using the scripting language, covering rich HTML renderer, networking, AI, Game Logics, and more.
- Coding both client and server side logics with the same scripting language and libraries.
- Polygon level physics effect middleware support [optional]: Bullet Physics
AI, physics, and others:
- Fast character simulation engine. It supports a large number of characters on a vast continuous game world (as long as 32bits floating point position vector do not lose accuracy). It integrates well with the global terrain and ocean engine. It provides interfaces for path-finding, perception, collision detection and response. It supports ray picking based character controller. For each character, quite a few character sensors can be turned on to process custom character AI logics in the NPL script callback functions.
- AI controllers: multiple hard-coded AI controllers can be parameterized and combined with each other or with character sensor scripts to efficiently emulate convincing AI behaviors. Supported AI controllers are: (1) Movie controller: it can record and replay character actions in a time accurate manner. This is an easy way to build in-game character cinematic. (2) Sequence controller: a list of AI commands to be executed one or several per frame. It can be used to perform general NPC logics such as patrolling, dialoging, etc. (3) Combat controller: such as attack, evade, flee actions. (4) Face tracking controller: rotate the character's neck to face a target. (5) Follow controller: follow another object.
- Biped state manager. It is a finite state machine which applies jumping, walking and swimming animation, etc and their transitional animations automatically, according to the physical environment.
- Mount system: characters can be mounted on other characters, such as a person be ing mounted on a horse.
- Local database support, supporting most SQL-92 standard.
- Debugging and logging can be turned on which tracks all aspects of the game engine status.
- [Game object] missile object. Firing a missile to any place in the game world.
- [Game object] D&D based RPG character object. Character attributes are exposed through the scripting interface and character data is made persistent by the database. This is a helper game object for building simple RPG game.
Tools and libraries:
- 3dsmax7/8/9 model exporters: both static and animated models are supported. Characters with multiple animation sequences are also supported.
- 3dsmax terrain, scene exporters: this is written in 3dsmax script, and we allow users to modify the source code to suit their needs in their own specific level design tools.
- Virtual world builder: This is a simple to use in-game game development environment. It comes with a free collection of game art data. There are no sophisticated interfaces in it; even children can learn to play with it. One can create a huge 40,000m*40,000m game world by just mouse clicking and editing simple game events (the latter is only for serious users). Editable entities in the world builder includes: terrain, ocean, models, characters, GUI, sounds, lights, scripts, etc. It also supports a powerful feature called world inheritance, in which a new world can be built by inheriting from multiple existing game worlds. Virtual world builder is written entirely by our proprietary NPL scripting language and we allow users to modify the source code to suit their needs in their own specific level design tools. Chinese version only. English version is planned at the end of 2008.
- In-game movie recorder: with source code in NPL
- In-game HTML/MCML renderer: with source code in NPL
- NPL syntax highlighter/ NPL debugger for visual studio.
- Third party tools: alienbrain or subversion for version control, deep exploration (3D model viewers), sqlite tools(database query builder), ultra edit (optional script editor).
- The game engine functionalities can be extended or customized through three set of API: (1) NPL scripting system (2) C++ API (3) .Net Framework API.