C-Dogs SDL: a reimplementation of a 1997 DOS run-and-gun in C, with a campaign editor on the side
Classic overhead run-and-gun game
At a glance
- What is it?
- C-Dogs SDL is a modern port of Ronny Wester's freeware DOS game C-Dogs, written in C on SDL2, supporting up to four players in co-op and deathmatch. The code is GPLv2 with substantial BSD 2-clause portions and the assets are CC0, CC-BY and CC-BY-SA, and the project also ships a campaign creation tool that has become a use case in its own right.
- Who is it for?
- C-Dogs SDL fits a player who wants the original DOS run-and-gun experience with modern multiplayer and wants to author custom campaigns, and it fits a developer who wants a readable C codebase to learn from or to write a game in. It is the wrong choice if you need a modern engine, a controller-free cinematic experience, or a codebase with an active upstream dependency strategy.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A freeware DOS game that survived because the author released the source
C-Dogs SDL is a classic overhead run-and-gun game supporting up to 4 players in co-op and deathmatch modes, where you customise your player, choose from many weapons, and blast, slide and slash your way through over 100 user-created campaigns.
The lineage explains the shape of the project. C-Dogs was a freeware DOS game made between 1997 and 2001 by Ronny Wester, who is also known for Cyberdogs from 1994. The README says that although relatively obscure, it was one of the more well-known games of its kind, and it built a small following with many fans creating custom campaigns for it, and that players loved it for its simple yet addictive gameplay and wicked explosions.
The survival of the project depends on one decision. The story would have ended there had Ronny not released the source code in 2002. Jeremy Chin and Lucas Martin-King picked it up and ported the game to SDL, making it available for modern PCs, and a few other ports came and went for systems as varied as BeOS and Wii.
Today the project is maintained by Cong Xu, who along with a few other contributors has been making the game better while staying true to the original game's vision. The enhancements listed are 4-player multiplayer, co-op AI, moddability and new campaigns and maps.
That last phrase, moddability, is where this project has become something more than a port. The custom campaign ecosystem is large enough that the campaign creation tooling has its own following, and the README links a custom campaigns site and a Mastodon tag for the project. The top level directory listing backs that up with a dogfights/ directory, a missions/ directory, a data/ directory and a wiki/ directory in the repository itself, so the content pipeline is part of the codebase rather than something bolted on afterwards.
The primary language is C, and the project is a good example of a game of this era maintained in a systems language rather than a scripting language, with the source under src/ and the build driven by CMake.
How to get it, and what building it needs
For playing, the README says the easiest way is to download from itch.io, at the congusbongus.itch.io page for cdogs-sdl, and that if you use the itch.io app your game installation will be updated automatically. That automatic update path is the reason the itch route is listed first rather than a direct download from the releases page, even though the GitHub releases page is also linked at the top of the README as the place for releases and release notes.
For building on your own platform, the README says to follow the getting started wiki, and states plainly that you will need the SDL2 development libraries installed. That is the only stated build dependency.
The repository layout shows how the build is organised. There is a CMakeLists.txt at the root, and alongside the source in src/ there are separate shell scripts: make.sh for the general case, make_emscripten.sh for a web build, and make_gcw0.sh for a further platform port. The presence of those two platform scripts is the practical trace of the ports the README mentions, and the wiki/ directory in the repository is the source for the getting started page the README links to.
Windows builds are covered by appveyor.yml at the root, with a second file, appveyor.yml.cmake, which suggests the CI configuration is generated from the CMake setup so the two do not drift. The GitHub Actions build badge and the AppVeyor badge are both in the README, so the project is built on both CI services.
The packaging status is tracked through repology, with a badge pointing at the cdogs-sdl project versions, which is how you can see which Linux distributions ship a package and which version they carry. The README says C-Dogs SDL runs on Windows, Linux and macOS, and that other platforms and ports are also available but may be outdated.
The release history is steady. The recent tags are 2.4.0 on 2026-01-26, 2.3.2 on 2025-08-23 and 2.3.1 on 2025-08-09, so the project ships a numbered release every few months.
The licence is split between code and assets, and the code is split too
The licence section of the README is unusually careful, and it matters more here than in a typical game repository because a community game carries both a program and a large body of user contributed content.
The summary line reads: GPLv2 for code, CC0, CC-BY and CC-BY-SA for assets, and significant amounts of BSD 2-clause code.
For the code, the README says the code is licensed under GPL version 2 with significant portions under BSD 2-clause, that the code is free software, and that you can use, modify and redistribute for any purpose as long as you follow the GPL and BSD licenses. The BSD portions are the practically important detail for a derivative, because code under a permissive licence can be pulled out and reused without the copyleft obligations attaching to the rest.
For the data, the terms are varied rather than uniform. The data is licensed under various free terms including CC0, CC-BY and CC-BY-SA, the original C-Dogs data is also under CC-BY as documented in the data readme, and new data is licensed as CC0 if not specified. You are free to use, modify and redistribute these for any purpose as long as you follow their licences.
The CC-BY component on the original assets is the part to notice. It requires attribution, so a derivative that ships the original C-Dogs artwork has an obligation to credit Ronny Wester, and the Creative Commons terms travel with the files rather than with the project. The default for new data being CC0 is what makes community campaigns easy to share, and it is a deliberate choice to make contributions frictionless.
The repository has a COPYING file at the root, which is where the GPL text lives, alongside the data licence documentation in the doc/ directory. The doc/ directory also holds original_readme.txt, which the README points to for more information about the original C-Dogs, so the historical documentation was kept rather than discarded when the port took over.
The practical advice for anyone shipping a derivative is to check the licence of every asset file you include rather than assuming the project's summary covers it, because with user created campaigns the terms genuinely do vary from file to file.
Co-op AI, modding and the campaign editor as a feature
The README does not devote a section to the editor, and that is itself a bit of information. The list of enhancements over the original is 4-player multiplayer, co-op AI, moddability and new campaigns and maps, and the campaign creation is the visible product of the modding support, since the custom campaigns site is linked with a badge and the project is tagged hacktoberfest and modding on GitHub.
What the modding support means in practice is that the game's data is data. The top level listing has directories for data/, missions/, dogfights/, music/ and sounds/, and a graphics/ directory, and the campaign system is a set of mission definitions and dogfight scenarios rather than something hardcoded in the executable. That is why a community can produce over 100 campaigns, and it is also why a system with an editor can attract contributors who would never touch C.
The co-op AI is the other half of what separates this from the DOS original. Four player co-op with AI-controlled partners is a substantially different balance problem from a solo or deathmatch game, and it is the kind of feature that requires per player weapon, behaviour and difficulty handling throughout the game loop. The README lists it as a headline enhancement rather than describing it, so the specifics are not in the documentation, and the wiki in the repository is where the detail would live.
There is a canonical reference for the original game in the repository. The README links the original_readme.txt in doc/ for more information about the original C-Dogs, and it also cites an Internet Archive capture of the original C-Dogs page from 2005. For anyone comparing the port to the DOS original, those are the two documents that describe what was being preserved.
The credit to the original author is present throughout rather than buried. Ronny Wester's name and the Cyberdogs reference appear in the introduction, the Internet Archive link is given, and the data licence points at the original assets being CC-BY. For a project that is 24 years downstream of the original release, that attribution is doing real work.
Project structure, tooling and the maintenance picture
The repository listing gives a clear picture of a game project rather than a library. There is src/ for the code, CMakeLists.txt for the build, and the content directories dogfights/, missions/, music/, sounds/, graphics/ and data/. There is a build/ directory at the top level, and a wiki/ directory, which is unusual for a game project since it means the wiki content is versioned alongside the code. There is doc/ for the original readme and the data licence notes, and a Makefile-ish set of scripts rather than a single Makefile.
The tooling is light and appropriate. A.clang-format file at the root means the C code style is enforced by a tool rather than by convention, and.gitattributes and.gitignore are present as expected. The.github/ directory holds the Actions workflows, and the two CI badges in the README mean the build is verified on both GitHub Actions and AppVeyor, which for a project with Windows and Linux targets is a sensible split.
The project also uses a.clang-format ignore style arrangement, and the src/ tree is C, with the primary language listed as C and the topic tags naming sdl2 and 2d-game alongside retro, retrogaming, pixel-art and shoot-em-up. Those tags describe the lineage accurately: this is a retro game in the 2D shoot-em-up tradition, rebuilt on SDL2.
The maintenance picture is a date rather than an adjective. The repository is not archived, and the last push was on 2026-10-17, so work is still landing. The most recent release is 2.4.0 from 2026-01-26, with 2.3.2 and 2.3.1 in August 2025. The gap between the last push and the last release is normal for a game project with a volunteer contributor base, and it means the development branch is ahead of the newest packaged build.
Contact is through GitHub issues, which the README lists as the place for questions, comments, bug reports and patches. The project also maintains a Mastodon presence under the CDogsSDL tag on mastodon.gamedev.place, and a homepage at cxong.github.io/cdogs-sdl.
Editorial conclusion
C-Dogs SDL fits a player who wants the original DOS run-and-gun experience with modern multiplayer and wants to author custom campaigns, and it fits a developer who wants a readable C codebase to learn from or to write a game in. It is the wrong choice if you need a modern engine, a controller-free cinematic experience, or a codebase with an active upstream dependency strategy. Before building, install the SDL2 development libraries and follow the getting started wiki, and read the licence carefully, because the code and the assets are under different terms and the split between GPLv2, BSD 2-clause and the Creative Commons licences is easy to blur in a derivative work.
Frequently asked questions
How do I build C-Dogs SDL from source?
Install the SDL2 development libraries, then follow the getting started wiki in the repository, which is linked from the README. The build is driven by CMake through the CMakeLists.txt at the root, and there are also platform scripts such as make.sh, make_emscripten.sh and make_gcw0.sh.
What licence applies to the code and to the game assets?
The code is GPL version 2 with significant portions under BSD 2-clause. The data and assets are under various free terms including CC0, CC-BY and CC-BY-SA, with the original C-Dogs data under CC-BY and new data CC0 unless specified otherwise.
How many players can play C-Dogs SDL?
Up to 4 players, in co-op and deathmatch modes. The enhancements over the original DOS game include 4-player multiplayer, co-op AI, moddability and new campaigns and maps.
Where do I get C-Dogs SDL to play?
The README says the easiest way is to download from itch.io, where the game page is congusbongus.itch.io/cdogs-sdl, and the itch.io app will update your installation automatically. Releases and release notes are also published on the GitHub releases page.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/cxong-cdogs-sdl)Was this useful?