{"id":26758549,"url":"https://github.com/wdevore/ranger-sack","last_synced_at":"2025-03-28T16:29:30.250Z","repository":{"id":21220722,"uuid":"24534638","full_name":"wdevore/Ranger-Sack","owner":"wdevore","description":"Miscellaneous extension/add-ons or enhancements for Ranger-Dart.","archived":false,"fork":false,"pushed_at":"2015-05-19T18:00:11.000Z","size":12892,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-08-06T17:10:35.656Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wdevore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-27T15:05:04.000Z","updated_at":"2023-08-06T17:10:35.657Z","dependencies_parsed_at":"2022-07-13T07:31:10.861Z","dependency_job_id":null,"html_url":"https://github.com/wdevore/Ranger-Sack","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Sack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Sack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Sack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Sack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wdevore","download_url":"https://codeload.github.com/wdevore/Ranger-Sack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246062245,"owners_count":20717583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-28T16:29:29.475Z","updated_at":"2025-03-28T16:29:30.168Z","avatar_url":"https://github.com/wdevore.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"Ranger-Sack - v0.9.5 Beta\n===========\n![Logo](docs/RangerDart_logo.png)\n\n##Contents:\n- [About](#about-dart)\n- [Templates, Applications and Unit tests](#templates)\n- [Nodes](#nodes)\n- [Documentation](#documentation)\n- [Google Blog](#blog)\n- [Author](#author)\n- [License](#license)\n- [Development](#development)\n\n###[About](#about-dart)\n**Ranger-Sack** (**Sack** for short) is a sibling project relative to [**Ranger**-Dart]()\n\n##[Ranger-Dart (**Ranger** for short)](https://github.com/wdevore/Ranger-Dart).\n\n![HighLevel](docs/diagrams/Ranger_Highlevel.png)\n\n**Sack** simply serves as a goto place for examples that range from full apps, templates and unit tests. It also includes miscellaneous extensions/add-ons or enhancements.\n\n###[Templates, Applications and Unit tests](#templates)\n**Sack** comes with a suite of Templates, Applications and Unit tests. Each serves as a *howto* for starting a project or referencing during project development. When starting a new project you will copy one of the Templates and begin coding from there. The Applications and Unit tests are for later, after you have a project underway and want to know how to do something.\n\n#### Templates\nThere are currently 7 Templates located under the *web* folder.\n```\nweb/\n    applications/\n        templates/\n```\nEach Template progressively adds on a feature showing how to perform a basic task. For example, *level0* is the most basic: a Splace Scene and Splash Layer, and a GameScene and GameLayer.\n\n- Level 0 - A stripped down basic framework template.\n- Level 1 - Loads a single sprite asyncronously.\n- Level 2 - Loads 5 sprites asyncronously and adds an overlay busy spinner.\n- Level 3 - Basic keyboard activation and usage.\n- Level 4 - Demonstrates basic Scene transition and animations.\n- Level 5 - Demonstrates icon animation and HTML panel animation.\n- Level 6 - Demonstrates a particle system.\n- Level 7 - Demonstrates a typical resource loading sequence for a game. Complete with a button widget.\n\n#### Applications\nThere are currently 2 applications.\n```\nweb/\n    applications/\n        ranger_particles/\n        rocket/\n        2048/\n```\n*Ranger_particles* is a hand built HTML/CSS application that uses **Sack** to display the particles. The application itself is not complete meaning you can only save to local-storage. There is code to save to the GDrive but it hasn't been completely wired up. I know the GDrive code works because it is used in the [SpritePatch]() application to save and load sprite sheets.\n\n*RangerRocket* is a demonstration of complex Node usage. In there you will find examples on how to map between \"world-space\" and \"node-space\" in order to handle particle placing and collision detection. It also shows the proper way of handling key presses.\n\n*2048* is a 2048 clone. This application demonstrates a complete game from start to finish. It contains: Loading resources (images and local-storage), Animations and game logic. However, it isn't a good representation of how to code a gui. **Sack** currently lacks a UI-Kit so everything is hand rolled. It has several new--more modern--widgets: *ButtonWidget*, *PopupWidget* and *SlidePanel*. They are crude and don't represent a typical UI-kit by even a longshot.\nDepending on your needs you may want to use HTML/CSS.\n\n#### Unit tests\nThere are many unit tests. Some are non-visual but many are visual. The original unit tests have all of the non-visual tests, for example, pooling and affine transformations; and they are a bit outdated so use with caution.\n\u003e A side note: When first looking to port Cocos2D-js the first thing I noticed was that the transform stack was a mess of incomprehension. I couldn't make complete sense of it and I didn't want to use something that I couldn't follow or understand. So the very first thing I did was scrap Cocos2D-js code and learn to make a transform stack myself. Forturnately I had worked with [Piccolo2D](http://www.cs.umd.edu/hcil/piccolo/) and understood how its stack worked.\n\nThe old test (some may not work as they were created almost a year ago) are located under the *old_tests* folder. The newest tests are under the *scenes/tests* folder.\n```\nweb/\n    unittests/\n        old_tests/\n        scenes/\n            tests/\n                colors/\n                fonts/\n                inputs/\n                particlesystems/\n                spaces/\n                sprites/\n                transforms/\n                transitions/\n```\nThe new tests cover pretty much all aspects of **Ranger**. They serve as both unit tests and as a resource to learn from.\n\n###[Nodes](#nodes)\nNodes are in no specific order.\n\n- **ZoomGroup**\n    RangerRocket: A node that allows zooming around a center point. Useful for zooming on sections of a scene.\n- **ButtonWidget**\n    Templates-level 7: A simple gui node where you can get enter/exit and click events from a Sprite node.\n- **CircleParticleNode**\n    RangerRocket: A trivial node suitable for particle systems. It specifically implements the *Color4Mixin* for color tinting.\n- **PointColor**\n    RangerRocket: A simple circle that demonstrates collision/intersect.\n- **PolygonNode**\n    RangerRocket: A simple node that wraps *Polygon* class while providing an Axis Aligned Bounding Box (aabbox) for visibility checking.\n- **ControlsDialog**\n    RangerRocket: A simple Html DIV panel that implements the Tweenable interface. It slides in from the right. This panel is also demonstrated begining in Templates level 5 and 6 and the main panel of Unittests.\n- **Zones** (Single and Dual range)\n    RangerRocket: Zones are spatial areas that emit messages when objects enter and exit them. Single is a single ring and Dual is two rings.\n    \n###[Documentation](#documentation)\n- [Getting started (Google doc)](https://docs.google.com/document/d/1k_vyVV9duqlMcCM4nZYc8B2BhyC_j4RXHg6WN6KSRPE/edit?usp=sharing)\n- [Nodes (Google doc)](https://docs.google.com/document/d/1_uQJxKHuGpn82cWt3C2yBU-sfX2nb4BWKxhhJUpwKBA/edit?usp=sharing)\n- [Animations (Google doc)](https://docs.google.com/document/d/1uFhSjwm1ehiZ3ni7yOUx5Cbf1LOVP9pcP3YcfumyFS4/edit?usp=sharing)\n- [Scene Graph (Google doc)](https://docs.google.com/document/d/1CYAASqzukvdKToi7j9sv7TkiN4Le_ZjnFdN7I7uXqYI/edit?usp=sharing)\n- [Audio (Google doc)](https://docs.google.com/document/d/1g2SW3_IFbFl4iCGP_eIKZDsZ0g2Y8jXDr86oa0ci4t8/edit?usp=sharing)\n- [Development (--) -- NOT COMPLETE]()\n\nThese docs could help your game development. They are all a work in progress.\n\n- [Misc -- NOT COMPLETE]()\n- [Physics -- NOT COMPLETE]()\n- [Collision -- NOT COMPLETE]()\n\n\n###[Google Blog](#blog)\n**Ranger** has a [Blog](https://plus.google.com/u/0/b/109136453872758385259/109136453872758385259/posts) where I periodically post statues.\n\n###[Author](#author)\nHello, I am [Will DeVore](https://plus.google.com/u/0/b/104513085420089025698/104513085420089025698/posts) the current developer of **Ranger** and **Sack**. I find it a pleasure working with the [Dart](https://www.dartlang.org/) language. Its integration with HTML/CSS/Canvas/WebGL is solid and functional.\n\n###[License](#license)\nSee [MIT license](LICENSE)\n\n###[Development](#development)\nWhen developing anything within **Sack** you have two choices as to which **Ranger** source you use:\n\n- Directly from Github. In this case you can't modify **Ranger**'s source code but you can debug it.\n    * git: git://github.com/wdevore/ranger-dart.git\n- Or you clone **Ranger** to your desktop and reference it instead.\n    * path: */some/where/*GitReposes/Ranger-Dart\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdevore%2Franger-sack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwdevore%2Franger-sack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdevore%2Franger-sack/lists"}