Skip to content

onehundredfeet/heapsx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

heapsx

A Haxe game engine toolkit built on heaps.io.

Status

THIS REPO IS A WORK IN PROGRESS, DO NOT USE UNTIL THIS MESSGE IS REMOVED

Acknowledgement

Nicolas Cannasse et. all have built an amazing tech stack with Haxe, Heaps etc. They are amazing game technologies. They are great out of the box and also easily extensible. Shiro games uses a tech stack that is slightly larger than vanilla Heaps. Inspired by that, I wanted to assemble a suite of haxe libraries that provided a stronger start to build a networked multiplayer game. This tech stack will work for any game, but it is intended to reach a few more places that vanilla heaps doesn't.

Features beyond Heaps

  • An entity component system (hmecs - based on Echo ECS)
  • DX12 / Vulkan / Metal rendering for heaps.io (hl-forge)
  • AI Pathfinding and Navmesh generation (Recast)
  • Reliable UDP communication (Yojimbo)
    • hxbit support across UDP
    • Cross platform high resolution timer
  • Bit-level compression for network communication (hxbit & custom bitcompression)
  • 3D Physics (Bullet)
  • 2D Physics (Chipmunk)
  • An integration with Hide (The Shiro games editor)
  • CastleDB out of the box
  • A unified foreign function interface (hl-idl)
  • Steam integration
  • And more to come

Platforms

Currently, the engine targets hashlink and HL/C only. That could be extended over time, but the low level integrations require hashlink's integration API.

Structure

This repo is intended to be a packaging of all the loose libraries that make up Heaps & Heapsx. It uses a lot of the latest versions of the libraries, which will mean some amount of instablity. When we finda stable version of all the libraries, we will create a release that spans across all sublibraries.

The repo is directly linked using git submodules to the original libraries. You can follow those for documentation on each included library.

Examples

We will include several examples to show how you get started with the engine.

Requirements

  • Hashink version 1.12+ (This is important. We use features in Hashlink not present before 1.12)
  • Haxe - Requires 4.3.0-rc.1 which currently can only be built from the dev branch
  • Git
  • Premake5
  • Cmake

Installing

  • First clone this repo into a central location or subdirectory outside your project source
  • Make sure you have the requirements installed
  • Run the init.sh( or .bat for windows) to get and initialize all submodules
  • Run the build.sh( or .bat for windows) to get and initialize all submodules

Setting up a project

  • run setup.sh <projectdir> This creates a .haxelib directory inside the target directory. It will then create links back to these directories for each of the subprojects. You can then use haxelib to install any additional libraries inside the project directory. Haxe will not search your regular haxelib paths. We do this to reduce version conflicts inside the project. This will NOT overwrite any other parts of the project directory. You can safely re-run this script.
  • create a Heaps application inside your project directory
  • Add heapsx as a library to the application when compiling with haxe (--library heapsx). You do NOT need to add each of the submodules as libraries. In fact, you should likely remove them as they will be implicitely added through the haxelib dependency system.

Included Libraries

Heapsx is a collection of libraries that work well together to create an engine. All of these libraries can be used on their own in separate projects. The hl- libraries have been built with this collection in mind. Below is a list of all the libraries included with Heapsx.

Wherever possible we use libraries that are currently maintained and up to date with the latest Haxe

  • castle - Game data & tunables database (Forked to add curves)
  • domkit - High level UI toolkit
  • differx - Simple 2D collision detection
  • format - IO Formats
  • haxe-concurrent - Threads and synchronization
  • hmecs - Entity Component System
  • heaps - Mid-Level Input, Graphics, Sound
  • heaps-yojimbo - High level network synchronization
  • hide - Game Editor (Forked to add curves to castle)
  • hlsdl - Low level graphcs, input & sound
  • hl-bullet - 3D Physics (Under construction)
  • hl-chipmunk2d - 2D Physics (Under construction)
  • hl-idl - Foreign function adapter library
  • hl-recast - Pathfinding (Under construction)
  • hl-yojimbo - Mid-level reliable UDP layer
  • hlsteam - Steam integration
  • hscript - Runtime scripting
  • hvector - Low level 3D Math, akin to GLSL
  • hxbit - Low level network library
  • seedyrng - Better random numbers
  • signals - Reactive style event handling
  • tink_core - Misc. language extensions
  • tink_macro - Macro tools

Libaries Coming Soon-ish-or-later-ish

  • AI
  • WWise
  • Vulkan
  • Cloud services
  • Epic Store

About

A Haxe engine built on heaps.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published