{"id":16842582,"url":"https://github.com/rofl0r/opendow","last_synced_at":"2025-04-11T05:52:10.691Z","repository":{"id":9825068,"uuid":"11811014","full_name":"rofl0r/openDOW","owner":"rofl0r","description":"remake of the classic amiga game \"dogs of war\" (C) 1989 elite","archived":false,"fork":false,"pushed_at":"2025-03-27T22:20:04.000Z","size":759,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-11T05:52:06.040Z","etag":null,"topics":["amiga","arcade","c","game","remake","shmup","whittaker"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rofl0r.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-01T07:43:04.000Z","updated_at":"2025-03-27T22:20:08.000Z","dependencies_parsed_at":"2022-09-17T16:50:44.823Z","dependency_job_id":null,"html_url":"https://github.com/rofl0r/openDOW","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2FopenDOW","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2FopenDOW/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2FopenDOW/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2FopenDOW/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rofl0r","download_url":"https://codeload.github.com/rofl0r/openDOW/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351409,"owners_count":21089271,"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":["amiga","arcade","c","game","remake","shmup","whittaker"],"created_at":"2024-10-13T12:46:51.273Z","updated_at":"2025-04-11T05:52:10.671Z","avatar_url":"https://github.com/rofl0r.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"=== prerequisites ===\n\n- a POSIX compliant OS and libc (for example linux with musl libc).\n  if you're still using winblows, bad luck, you should strongly consider to\n  switch to linux NOW rather than later.\n- a working C99 compiler\n- perl (needed for the build system)\n- SDL and SDL_audio library and headers.\n  this means you need the -dev(el) version of the package for your distro.\n\nthere's an alternate audio backend using libao, which has a much nicer API\nthan SDL_audio, however it seems to trigger some in-kernel ALSA bugs\nwhich will lead to high CPU consumption depending on the second the game\nwas started (i.e. if you start the game at second X, it may consume 10%,\nif you start it at second Y, it may consume 70%).\n\n=== build instructions ===\n\nmkdir /tmp/openDOW-000\ncd /tmp/openDOW-000/\ngit clone https://github.com/rofl0r/openDOW\ngit clone https://github.com/rofl0r/libulz lib\ngit clone https://github.com/rofl0r/c-flod\ngit clone https://github.com/rofl0r/rcb2\nln -s rcb2.py rcb2/rcb2\ncd openDOW/\necho \"CFLAGS+=-DAUDIO_BACKEND=AUDIO_BACKEND_SDL\" \u003e config.mak\nPATH=\"/tmp/openDOW-000/rcb:$PATH\" make\n\n=== supported compilers ===\n\nGCC\nclang\n\n=== how to play ===\n\nrun ./spriteview.out (main game executable will be renamed at\nsome point)\n\nuse wasd to move the player, and the mouse to aim and fire.\nswitch weapons with numpad +/-.\nat some point it is planned to make the layout configurable\nand add support for the original behaviour without mouse aiming\nso it could be used via a joystick.\n\n== current state and TODO ==\n\nat current, all maps are finished as far as the background\nand foreground tiles are concerned, as well as all of the game\nmechanics (besides dying).\n\nthe biggest part of the work is to recreate the spawn positions\nand routes taken by enemy soldiers. there's roughly 500 of 'em\nper map.\nat current, only australias \"spawnmap\" is implemented. the other\nmaps are partially playable, but they use australias spawnmap.\nthat means enemies will spawn in places they're not supposed to\nbe, like on top of a wall, and move through the wall.\n\nspawnmaps can be created by moving the player through the screen\nstep-by-step, carefully comparing to the original in an emulator.\n\nwhen you are on the same \"spawn line\", you can press \"e\" to enter\nthe spawn editor and summon an enemy.\n- use shift+numpad+/- to change its shape;\n- use \"d\" to change its direction then, enter one of\n  w,o,s,n,nw,no,sw,so,nnw,wnw,nno,ono,ssw,wsw,sso,oso\n  (o means \"ost\", the german equivalent to \"east\").\n- use + and - on the numeric keypad to change the velocity of the\n  enemy. (it will start running around, once offscreen, it will\n  respawn in the start position)\n- use \"g\" to change its weapon type to grenade or back to gun\n- press \"s\" to shoot at the current position\n- press \"p\" to stop the enemy at the current position\n- press crtl+numpad+ to insert a direction/speed change,\n  \"i\" to insert the current position,\n  then enter the new direction using \"d\".\n- press alt+numpad+ to enter a new shoot \"slot\", and \"s\" to save\n  the current position as the position to shoot.\n\nif something is unclear, you should look at the implementation\nof enemytag.c.\n\nthe editor takes a bit getting used to, but once you used it for\na while it's pretty quick.\nafter the enemy takes the same route and shots as the original,\npress \"e\" again to exit the editor. that will output a C struct\nto stdout, which you can copy paste into a spawnmap .c file\nbased on maps/spawn_australia.c.\n\n=== contributing ===\n\nif you're a C++ programmer, go away now.\nif you're using MSVC, go away now.\n\nOpenDOW uses C99, and C99 only.\n\ni will not ever make any compromise just to make it compile on the\ncrippled M$ compiler.\n\nthere's not really much to help in terms of code anyway.\nalmost anything is done. what really needs help is adding spawnmaps\nfor the ~500 enemies per map.\n\ni will only accept code contributions with small, nice and clean commits,\nwhere every commits just does a single thing.\nthere's no chance i will ever merge a huge diff touching 500 lines\nin several different compilation units.\n\ni also will not add ifdef hells just to make the code compile on\ncrippled platform X.\n\nso if you still want to contribute, clone the repo on github,\ncreate a new branch for your changes, commit your work and then file\na pull request. please use commit messages that make sense and serve\nas a good documentation for your changes.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fopendow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frofl0r%2Fopendow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fopendow/lists"}