Code Monkey home page Code Monkey logo

rewtro's Introduction

Rewtro



Rewtro is a weird retro game engine inspired by fantasy consoles and code golfing that runs games encoded in a very small amount of data (2kB/3kB). This way is possible to share games using exoteric and usually data inefficient ways: i.e. sticking some PWA magic and a QR-Code reader to the engine I've made a fake gaming console for mobile devices...

...that loads games from papercraft game cartridges...

...or animated GIFs...

...simply framing them!

All the game data (graphic, sound, music, and code) is encoded into the QR-Codes and no data is stored online - and the same goes for the game console code too, once installed on your device - so scrap the paper cartridge and the game is gone. But hey... you can produce your game cartridges using just a plain printer and you can still pirate games using a copy machine like we used to do with cassette duplicators in the 80s. I hope it will bring back that retro vibes.

The game engine

The game engine implements:

  • A super simple physics engine
  • A sprites renderer that supports rotation and scaling
  • A text renderer based on pixel fonts
  • A simple event manager
  • A scene loader and manager
  • A sound synthesizer and basic music sequencer
  • Some commands for doing the math and basic logic
  • Some tilemap handling commands
  • Several custom graphics encoder/decoders
  • Some data packers, from old good zipping to custom algorithms suited for small data

And that's all. No game-specific code has been coded inside the engine. Making an actual game with these few things it's up to you.

The development tools

Games are coded using JSON structures and I've built some (pretty raw) tools you can use to code your games - together with some sample games. You can find them in the carts/ subfolder: there is a viewer for built-in color palettes, screen resolutions, controls and fonts you can use in your games.

To avoid cheating or being influenced by specific games, all presets are based on actual gaming systems form the past (Gameboy, ZX-Spectrum and Commodore 64) and most of them can be overridden by custom ones encoding them into your game code. You can also find a noise generator you can use to create sound effects that feature a pretty simple piano keyboard for sketching some music for your games.

But what you are going to use the most is the game debugger...

...and the game compiler and packager, that generates a foldable cartridge in SVG format to be customized and printed or an animated GIF you can show anywhere you want. Sorry for the thin toolchain: I survived with that but I'm going to improve it if there is some kind of interest.

While both the game console and the SDK tools run client-side, I've added a pinch of PHP for reading the games file list to be displayed on SDK main screen. Feel free to replace that PHP with any alternative you can think about (or suggest one).

You can have a look at a read-only version of the SDK here. Hit random buttons, test games, generate SVGs, etc. To play games in debugger use arrow keys and Z/X/C/V as action buttons.

The developer manual

There is a developer manual with explanations and a lot of code examples that cover everything Rewtro! See you there!

Released games

In the carts/ folder, you'll find the SDK and all the games I've developed for Rewtro till now. I've made 2 series of games, split by its initial:

  • The V- series contains customizable greeting card games: they include a title screen, a briefing screen, a short and relatively easy gameplay, and a debriefing screen displayed once the game is cleared. Games are customizable in text, gameplay parameters, graphics and - if you feel brave - music and sounds. You can make your cartridges making a copy and renaming a V- series JSON file into the same folder, changing the data as you want with any text editor and testing and printing the games within the SDK. That's what I did in November/December 2019.
  • The K- series contains short but more complete games, mostly inspired by classics. They are harder to change but you can print them as-is and customize the printed cartridge writing a dedication or a silly doodle on the front, more like a classic greeting card.

Remember that a QR-Cart contains the whole game code, music, graphics, AND customizations so, once the game is printed, you can't change anything. If you want to update your game, fixing a bug or a typo, you've to print the cartridge again. The previous one will be a rare bugged version of your game to be collected jealously. Welcome to the 80s!

Why?

It's Christmas time, I needed some greeting cards and decided to make some original ones this year. I liked the idea of hiding the actual greetings at the end of a customized videogame but implementing a browser game lacked the perishability of a greeting card: you want to keep them because it contains the whole experience, that is the stock message and the handwritten message. Moreover, the game itself is part of the message so why keeping that outside the greeting card?

Then, building physical retro games for specific persons and hiding messages in them gives you that Petscop's Rainer chills that's both cool and frightening.

You can also use these paper cartridges as hints in treasure hunts, put them in geocaches, spread its parts as collectible stickers, on video advertising, for fancy business cards, etc.

Rewtro QR-Carts are cheap to print and contain the whole game data, are physically shareable, fun to copy and can be easily unique. Take the best of that.

FAQs

Q: I want to make a Rewtro game too!

A: Have a look to the developer manual to learn how to setup your development environment and start developing!

Q: Which browser I can use for running Rewtro games?

A: On mobile, you can use Safari on iOS and Firefox or Chrome on Android. I just have an old iMac and a Windows 10 laptop and everything seems working on both Firefox and Chrome...

Q: Can I run a QR-Cart on a desktop computer?

A: While it's quite hard to frame a tiny QR-Code printed on paper or displayed on a mobile with a desktop cam, I managed to load a game easily running the Datasette on a tablet and displaying the code full screen (hit the buttons on top of the Datasette screen).

Q: I've created an SVG cartridge but it looks like I'm missing a font...

A: I've used the Jost free font (Jost-500-Medium.otf). Download, install, restart your favorite vector editor and open the SVG again.

Q: I received a QR-Cart from a friend but I've lost/ruined it. Can I reprint that exact copy using these source files?

A: Probably not, sorry. QR-Carts are not a reference to a database of games or customizations: they contain the full game data so, if they are lost, they can't be recovered anymore. You may try asking your friend if he can print the cartridge again... it's a great reason to meet him again!

Q: Can Rewtro load games just from a binary file?

A: Yes, it's doable, game files should be very small and this way you could make larger games but no, I don't think that the feature fits the project. Rewtro tries to store tiny games in the smallest amount of data possible (at least, that's what I tried to do) and, for that very reason, it has a limited number of commands that are thought to be easy to be encoded instead of being easy to use. This self-limitation was key to make something that loads games fast from offline low-storage systems, like QR-Codes and - maybe in the future - audio. Other fantasy consoles and game engines don't have such limitations and, for this reason, are easier to code, they can load larger games from the internet or files. For these reasons, they can handle more complex games. So: if you have a reason to share tiny games using files, feel free to tell me your idea. Otherwise, if you want something that shares larger games in a digital way, there are several easier alternatives out there!

Q: Why the V-PESCOP-Basic game looks glitched, features quite disturbing graphics and has cryptic gameplay?

A: If you know what Petscop is, you already have your answer.

Disclaimer

Consider Rewtro in beta right now. I've not so much time to work on pet projects but I'll try to evolve the game engine a little more without breaking it. There is some kind of engine version tracking in the Rewtro code and encoded in cartridges but, If you want to be extra cautious, make a snapshot of the engine and host it elsewhere - there is no URL encoded in game cartridges so you're safe.

News and contacts

I use Twitter as my main social. It's probably the best place to be updated about Rewtro and to contact me.

Credits

Rewtro exists thanks to these techs:

...and the great support of these people:

rewtro's People

Contributors

kesiev avatar lbruand avatar prkcorp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rewtro's Issues

Unable to use "Load from QR" on desktop

When pressing the "Load QR-Cart" button, the browser grays out the screen and will not allow me to close the popup. The browser does not prompt for use of the host camera.

Errors on Chrome:
image

Error on Firefox:
image

OS: Windows 10
Browser: Chrome (latest), Firefox (latest)

Feature Request: Link to /carts

Currently, the /carts folder must be navigated to manually. I would like a link on the main Rewtro page pointing to this folder to make it easier to browse carts.

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.