Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeff-1amstudios/restful-doom
HTTP+JSON API hosted inside the 1993 DOOM engine!
https://github.com/jeff-1amstudios/restful-doom
api c doom game-dev http json restful retro
Last synced: 14 days ago
JSON representation
HTTP+JSON API hosted inside the 1993 DOOM engine!
- Host: GitHub
- URL: https://github.com/jeff-1amstudios/restful-doom
- Owner: jeff-1amstudios
- License: gpl-2.0
- Created: 2017-07-26T18:43:32.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-10T07:11:35.000Z (2 months ago)
- Last Synced: 2024-09-10T09:28:14.818Z (2 months ago)
- Topics: api, c, doom, game-dev, http, json, restful, retro
- Language: C
- Homepage: http://1amstudios.com
- Size: 2.02 MB
- Stars: 282
- Watchers: 13
- Forks: 31
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# RESTful-DOOM
An HTTP + JSON API hosted inside the 1993 DOOM engine!
![](http://1amstudios.com/img/restful-doom/header.jpg)
RESTful-DOOM is a version of Doom which hosts a RESTful API! The API allows you to query and manipulate various game objects with standard HTTP requests as the game runs.
There were a few challenges:
- Build an HTTP+JSON RESTful API server in C.
- Run the server code inside the Doom engine, without breaking the game loop.
- Figure out what kinds of things we can manipulate in the game world, and how to interact with them in memory to achieve the desired effect!RESTFul-DOOM is built on top of the awesome [Chocolate Doom](https://github.com/chocolate-doom/chocolate-doom) project. I like this project because it aims to stick as close to the original experience as possible, while making it easy to compile and run on modern systems. This was only possible by building on top of their hard work!
### More details in blog post:
http://1amstudios.com/2017/08/01/restful-doom/## API Spec
[API spec in RAML 1.0 format](https://github.com/jeff-1amstudios/restful-doom/blob/master/RAML/doom.raml)
## Build
### Building dependencies (needs to be run only once)
Takes care of building and configuring dependencies like SDL. Uses [chocpkg](https://github.com/chocolate-doom/chocpkg).
```
./configure-and-build.sh
```### Compiling
Run `make` from the src (or root) directory. `src/restful-doom` will be created if the compile succeeds.
## Run
The DOOM engine is open source, but assets (art, maps etc) are not. You'll need to download an appropriate [WAD file](https://en.wikipedia.org/wiki/Doom_WAD) separately.
To run restful-doom on port 6666:
```
src/restful-doom -iwad -apiport 6666 ...
```## Thanks!
[chocolate-doom](https://github.com/chocolate-doom/chocolate-doom) team
[cJSON](https://github.com/DaveGamble/cJSON) - JSON parsing / generation
[yuarel](https://github.com/jacketizer/libyuarel/) - URL parsing