ANDROID ONLY
Features
- Soon to be Open Source
- OpenGL Graphics engine
- Simple integration, just add jar to build path and extend CelestialSurface
- Simple sprite, menu item, and animation system
- Several Powerful tools (including map editor, animation packer, and skeletal collision tool)
- Lightweight and FAST
- Multithreaded for logic and graphics with a flawless synchronization
- Transformation animations
- Ouya Support
- Easy integration with other engines / android view, layouts, and events
- Unique Map editor with physics
- Android 2.2 Requirement
- Easy online capabilities (tested for MMO style games)
- Easy ad Integration
- Runs 60 fps on almost every new device (tested on ouya, Transformer prime tf300t, Samsung Galaxy 2-4, HTC ONE, and some others)
Sprite
- All Sprites are animable with one line of code
- Scalable (Also scales collision skeleton)
- Collision skeleton ** See program below
- Can receive animation transformations (ie. Jump(height,time), moveTo(x,y), scaleTo(xScale,yScale) ect...)
- Sprite from Sprite initialization (create a sprite that inherits parameters from parent)
- Sprite in Sprite ability (For example create a sword item and bind it to the "Hero" sprite to match sprite translations)
- MUCH more... (will add later)
CESprite hero = new CESprite(R.drawable.heroSprite,"hero_skeleton.ces",x,y);
client.add(hero); // Placed Hero sprite at x,y on screen already listening for collisions
Animation
- Simple animation system
- frame skip and frame lag (wait time for next frame)
- Simple packing software ** See below
- Animations are indexed and invoked through an animable object (ie. Sprite, Player, or a custom class extended from animable)
CEAnimation punch = new CEAnimation(R.drawable.punchAnimation, "hero_punching.cps", 0, 47,false);
// CEAnimation(Spritesheet img, software exported file, startFrame, endFrame, boolean flipped);
client.add(punch); // indexed at 0 (indexes in the order they were added to client)
heroSprite.setAnimation(0); // Called in update to play the 0 index animation over heroSprite (plays until heroSprire.setAnimatin(-1) is called
// Then returns to the still image assigned to heroSprite
Map
- Most unique and powerful piece of the engine
- Created by the Celestial Map editor ** See below
- 32x32 or 64x64 tile support
- Parallax and RPG style map support (different physics handling)
- Physics for parallax maps(falling, jumping, ect...)
- Anchor for viewport can be tied to any animable object (Sprite, Player, or extended animable class)
- Sprites have a x and y position for Absolute location relative to screen along with a viewX and viewY position relative to map
(scroll parallax or RPG style map by by changing the anchors viewX and viewY)
- UNIQUE FEATURE: linear walking (parallax): rather then walking on flat tiles CEMap has a linear walking feature
plot points on valleys and hills to create linear (y = mX + b) lines that the Sprite/anchor will traverse **See program below
- Indexed maps to preload and retrieve from client
- More features to be included soon
CEMap levelOne = new CEMap(R.drawable.backgroundimage,"exportedTileData.clm","exportedWaypointData.cwm",heroSprite,physicsObject);
// CLM and CWM are exported from software heroSprite is animable anchor, physicsObject is the "world physics" object
client.add(levelOne);
//In game loop
client.setMap(0); // Indexed same way as animation
Celestial Designer
- Three programs in one Celestial Map editor, Celestial Sprite packer (animation), and Celestial Skeleton creator
- Windows (done), linux / unix (coming VERY soon)
- Simple, easy to use interface
Map Editor
- Save and load projects
- Create a RPG or Parallax style map
- One click export to file
- Eraser and undo button
- Supports 32 and 64 tiles
- More features to come
Sprite Packer
- Loads several image file types
- One click packing (set width and height of texture)
- smart adjust (beta)
- one click export to celestial file
Skeleton creator
- Very Simple ATM
- Using the line tool draw lines on the imported image to create its collision skeleton
- One click export
- Add exported file to Sprite constructor
- Use method sprite.addCollidable(Animable sprite); to tell the engine to listen for collision with referenced objects
- Can add as many collidables and needed with same line of code
- When the engine detects skeleton collision it will update the sprite object
- Get colliding object by using sprite.getColliding(); returns colliding object or null
Let me know what you all think, the project will be released soon I am basically just finishing video tutorials that will be available on my website
Game Castle Blitz was created with Celestial engine in 3 hours and less then 300 lines of code