Git Product home page Git Product logo

chestergl's Introduction

ChesterGL

IMPORTANT UPDATE

I'm refactoring all the code in the branch getting-rid-of-closure-compiler. Basically I'm getting rid of closure compiler and using require.js instead. This will make things a lot simpler to debug & play, as well as deploy. And possibly reducing file-size of the library, as it will only add the core modules + whatever you need in your game.

I'll also add support back for canvas (already there, missing support for block groups), clean the API for actions, and add simple raycasting (detect when you touch/click a block in the scene graph).

What is this?

ChesterGL (Chester Game Library) is a WebGL/canvas 2d game library that focuses on ease of use and performance. It supports a simple scene graph and provides a minimal interface for you to create games, and extend the library if you need. Current features: time based actions, simple scene graph, Tiled (tmx) map support, different shaders (webgl only), batched sprites.

How to have fun

The easy way: play with the official jsfiddle

If you need help on how to do anything, the best idea would be to check the online tests

Or look at the (not always updated) online documentation

Sorry, the docs are not yet complete, but they will at some point :) Just look at the examples and figure your way out from there. It shouldn't be too hard

Or wait until I write my "how to make an HTML5 game using chesterGL" (should be soon, although I keep saying that)

How to join the fun

 # clone the repo
 git clone git://github.com/funkaster/ChesterGL.git
 cd ChesterGL
 cp developer.template.mk developer.mk
 # edit developer.mk and set the paths accordingly
 # look below for the requirements
 make debug

If you really want to get into this, I wrote a small page with some hints that might help you.

How to just check this working

Point your browser (even your mobile browser!) to: http://funkaster.github.com/ChesterGL/test/

How to compile

You will need to modify the Makefile and change the location of closure compiler, as well as add the following externs:

  • jquery-1.5.js
  • webkit_console.js

All of them are in the svn repo of google closure. You also will need closure-compiler and the closure builder (+ the closure library, of course). You can read about that here:

https://developers.google.com/closure/library/docs/calcdeps

Check the Makefile for where to place them or modify that to suit your needs.

How fast

The WebGL implementation might depend a lot on your graphic card, but I tried to make it very efficient, so it should go very fast with lots of sprites on the screen. Try to use BlockGroups (batched sprites) as much as you can. As a reference, you might want to look at the performance test, for my dev machine (4 years old MacBook Pro, Firefox 11), it's around 13,000 blocks at 33ms per frame (~ 30 frames per second).

For the canvas version, the is a bit more slow, but pretty decent even on iOS devices:

  • iPhone 4, iOS 5.1 (test_ios.html, with 45 sprites on screen): 19.62ms per frame ~> 51 FPS
  • Chrome 19 (Mac build) running test_perf.html: 17ms per frame, 10000 sprites ~> 58 FPS (YMMV)

Known problems in canvas mode

  • You will not get a z-position, for really obvious reasons.
  • Color tinting will not work (I haven't found a way to replace that part)
  • Block groups (batched sprites) will not add any improvement, for obvious reasons

What's with the name?

That's my dog's name. And I would like this library to have the same goals that my dog usually has

  • Help you have fun (easy to learn)
  • Always be ready to have fun (easy to use, docs, examples)
  • Simple (simple API)
  • Not very demanding (few dependencies)
  • Fast and performant (Chester runs very fast and requires only food and water!)

Roadmap

1.0

  • Finish the WebGL shell for mobile devices (iOS and Android)
  • Make it a real game library:
  • Add new interesting effects (light?)
  • Add more actions
  • Add more examples (including input)
  • Add your ideas here

0.2

You can always look at the issues on the github project and look for the right milestone.

  • Fix BlockGroup (batched blocks in a single gl call)
  • Improve canvas fallback
  • Improve support for tile maps
  • Improve speed on iOS (see test_ios.html). Right now we can get:
  • ~26fps with 12 moving sprites on an iPhone 4, iOS 4.3.5
  • ~35fps with 42 moving sprites on iTouch 4gen, iOS 5.0
  • Improve support for Texture Packer sprite sheets
  • Add time-based animations (shouldn't be too hard)

0.1

  • Initial version

chestergl's People

Contributors

rolandoam avatar coolhome avatar lharding avatar

Watchers

James Cloos avatar

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.