Skip to content

🍩 Deep-fried game framework with sweet filling

License

Notifications You must be signed in to change notification settings

Deseteral/ponczek

Repository files navigation

ponczek

Deep-fried game framework with sweet filling.

Project logo

πŸ”‹ Quickstart

npm create ponczek-game

πŸ€” Why?

I wanted something that would make it easier for me to create 2D games during game jams. This framework's design and future development reflects the type of games I like to make.

I've made this for myself, but anyone is welcome to use it. Expect breaking changes though.

πŸ‘©β€πŸ’» What it is?

  • Very opinionated
  • Software rendering
  • Easy to use with fantasy console-like API
  • Prioritizes performance over memory usage and bundle size
  • Tries really hard to avoid GC in game loop
  • Provides API that makes it easy to avoid GC in game loop
  • (almost) zero dependencies *
  • Easy to understand and extend code base

* Only uses minimal amount of high quality runtime dependencies that are in and of themselves no dependency libraries.

πŸ™…β€β™€οΈ What it is not?

  • Not made for high fidelity games
  • Not a fully featured game engine
  • Does not support mobile

🍩 Features

For example usage of these features check out the demo page and its source.

  • 2D software rendering
    • Primitive shape rendering (lines, rectangles, circles)
    • Drawing textures
    • Drawing nine slices
    • Drawing monospaced sprite fonts
    • Color utilities
    • Fragment shader-like effect system
      • Custom effects support
      • Built-in RGB filtering effect
      • Built-in color replacement effect
    • Camera
    • Spritesheets
    • Clipping
    • Allows dropping to browser's Canvas API for unsupported features
  • Simple sound effects player
  • Keyboard and mouse input system
    • Supports binding
  • Math module
    • Data structures and algorithms (Vector2, Rectangle)
    • Random number generator
    • Simplex noise generator
    • A* pathfinding
  • GUI
    • Grid component with keyboard navigation
  • Data structures
    • Tilemap
    • Priority queue (via heapify package)
  • Asset loader
  • Scene manager
    • Stack based
    • Scene transition animation system
  • Data storage for save data (uses localStorage)
  • Timers
  • ImGui integration

Uses fantastic font Monogram by datagoblin as a default font.

Works in every major browser.

πŸ—οΈ Made using ponczek

🚧 Development

Install dependencies using yarn.

You can start examples project in watch mode using:

npm run examples:dev

For type checking in watch mode during development use:

npm run test:type-check:watch

πŸͺ΅ Changelog

You can read the project changelog here.

πŸ“ License

This project is licensed under the MIT license.