A complete, fully documented one-touch arcade game: cannon shop with 16 skins, six-stage difficulty curve, lives, medals and saved progress. Reskin it and ship, or lift out just the systems you needReady to use solution for: Windows, Mac OS X, Android, iOS, Windows Phone and WebGL.Cannon Crunch is a finished game, not a snippet. Tap to fire, hit the target,dodge the rotating block — and everything a released game needs around thatloop is already built and wired: main menu, pause, settings, a working shop,game over, persistence, a progression curve and monetization hooks.If you want to ship a casual game, this is a complete product you can putyour own art and audio into. The whole screen flow works, purchases and highscores already persist, and the difficulty is tuned through an asset ratherthan buried in code. Replace the sprites, retune one profile, publish.If you want to learn or borrow the structure, the codebase is the reason tobuy. Gameplay logic lives in plain C# services with no MonoBehaviour coupling —score, audio, skin catalog, rewards, difficulty — each reachable through oneproperty and each replaceable on its own. Saving sits behind a single interface,so moving progress from PlayerPrefs to a file or a cloud backend is one line.Every public member carries XML documentation and every inspector field has atooltip. Two assembly definitions keep the package out of your global compilescope, so it cannot collide with your own code.Genre fit: It is built for casual and hyper-casual mobile: portrait,one-touch, endless, session-length runs, with the reward and interstitial hooksalready marked. The pieces generalize well beyond that — the shop, thepersistence layer, the score and medal system and the difficulty director allwork in any 2D game, and the difficulty director and Mathfx helpers have no UIdependency at all.How customizable is it? The things you will actually want to change are data,not code:Cannon skins are entries in one asset — sprite, muzzle position and price per skin. Adding one is a list row, and the shop picks up the new count itself.The whole difficulty curve is a second asset: six named stages, each setting rotation speed, reversal timing, speed waver and reversal cadence. Values interpolate between stages, so retuning the pacing never means editing code.Audio, colour palette, lives, fire rate, medal thresholds, reward cooldowns and the bullet's speed and layering are all inspector fields or named constants, documented in the manual with defaults and locations.Want to plug in your own HUD, effects or sounds? Subscribe to the events the services raise — score changed, medal changed, skin equipped, difficulty stage reached — instead of editing the package. Your changes then survive every update.The package ships with an 800-line manual covering the architecture, the roundlifecycle, a full API reference, extension recipes with code, a tuning table, atroubleshooting section and instructions for stripping it down to only the partsyou want.All artwork comes from the Cannon Pack asset package.-- -- --University of Games small research center for indie game developers. This place has always beed dedicated for everyone to share passion, knowledge and adventures in game industry. I wish it would become home to in-depth explanations and ready to use solutions which help you solve problems and growth. Thanks to your donations we can create even more content and support developers, students and teachers all over the world.The project includes well-developed technical documentation. Therefore, it is also an ideal form of learning for novice game developers!Contents2 scenes: splash screen and the complete game38 documented C# scripts across 7 namespaces2 assembly definitions (runtime and editor-only)2 configuration assets: cannon skin library, difficulty profile16 cannon skins, 25 UI sprites, 15 HUD sprites, 4 medals, 15 app icons4 audio clips (music, cannon shot, game over, button click)3 animation clips and controllers1 prefab (the projectile)README (22 sections)Gameplay systemsOne-touch firing with a frame-rate-independent fire-rate cooldownSix-stage progressive difficulty driven by an editable asset; speed, reversal interval, speed waver and reversal cadence, interpolated between stagesDifficulty stage-up feedback: immediate obstacle reversal plus a score pulseLives with bonus-life slots, and a 12-hour free-lives reward that survives app restarts and tolerates a device clock moved backwardsScore, all-time best score and a spendable lifetime totalFour medal ranks awarded by score thresholdDouble-points bonus, ready to attach to a rewarded adShop with a sliding carousel, purchase and equip flow, fully persistedAnimated cross-fading background paletteArchitectureComposition root pattern: one component builds the services and presents themSix logic services with no MonoBehaviour dependency, so they are readable and unit-testable: score, audio, cannon skins, bonus lives, background, difficultyPersistence behind `IProgressRepository` — swap PlayerPrefs for your own backend in one lineSkin catalog behind `ICannonSkinCatalog` — feed skins from an asset, a remote catalog or an IAP product list`IBulletHittable` for anything shootable; both the trigger callback and the swept check route through one guarded handlerC# events for score, medal, equipped skin and difficulty stage, so you extend the game without editing itGeneric `SceneSingleton` base for the per-scene instancesEnums and named constants throughout — no magic numbers or stringly-typed screen namesFull XML documentation on every public member; tooltips on every serialized fieldCorrectness and platform notesSwept projectile hit detection, so hits are never lost to the physics sampling rate — trigger overlap alone misses fast projectiles against fast-moving obstacles, and 2D continuous collision detection does not cover triggersProjectile speed expressed per second, so changing Fixed Timestep does not rescale the gameProjectiles despawn against the canvas rect rather than a fixed pixel height, so nothing is cut off mid-flight on tall displaysSaves flushed explicitly after every purchase, reward and completed roundAudio import tuned for mobile: the music track streams from disk instead of decompressing into memory; short effects stay decompress-on-load for latencyCamera cached rather than resolved every frame; timed UI labels refresh once per second, not per frameEditor tooling`Tools > Cannon Pack > Sync Skin Library From Scene` — builds the skin library from what the scene actually uses and wires it up`Tools > Cannon Pack > Verify Skin Library Against Scene` — reports drift without changing anythingCreate menu entries for both configuration assetsBoth live in an editor-only assembly, so nothing editor-related ships in your buildReady to use solution for: Windows, Mac OS X, Android, iOS, Windows Phone and WebGL.





