Giter Site home page Giter Site logo

cxong / cdogs-sdl Goto Github PK

View Code? Open in Web Editor NEW
844.0 41.0 114.0 142 MB

Classic overhead run-and-gun game

Home Page: https://cxong.github.io/cdogs-sdl/

License: GNU General Public License v2.0

Shell 0.45% CMake 0.90% C 86.54% C++ 8.43% Batchfile 0.06% M4 0.02% Python 3.26% Lua 0.02% Objective-C 0.01% PowerShell 0.21% Starlark 0.01% CSS 0.06% Makefile 0.02% Dockerfile 0.01% Swift 0.02% MATLAB 0.01%
game c cdogs-sdl sdl2 retro retrogaming pixel-art 2d-game games open-source

cdogs-sdl's Introduction

C-Dogs SDL

Build Status Build Status (Windows) Github All Releases Release Custom campaigns

Introduction

C-Dogs SDL is a classic overhead run-and-gun game, supporting up to 4 players in co-op and deathmatch modes. Customize your player, choose from many weapons, and blast, slide and slash your way through over 100 user-created campaigns. Have fun!

Releases and release notes

For more information about the original C-Dogs read original\_readme.txt.

What is C-Dogs SDL

Walk cycle

C-Dogs is a freeware DOS game made between 1997-2001 by Ronny Wester, who's also known for making Cyberdogs (1994). Although relatively obscure, it was one of the more well-known games of its kind, and built a small following with many fans creating custom campaigns for it. Players loved it for its simple yet addictive gameplay and wicked explosions.

Player running around with knife

The story would have ended there had Ronny not been awesome enough to release the source code in 2002. There it was picked up by Jeremy Chin and Lucas Martin-King, who ported the game to SDL and made it available for modern PCs. A few other ports came and went, for systems as varied as BeOS and Wii.

These days the project is maintained by Cong Xu, who along with a few other contributors, have been making the game even better while staying true to the original game's vision. 4-player multiplayer, co-op AI, moddability and new campaigns/maps are just some of the enhancements available.

So what are you waiting for? Download C-Dogs SDL today and have a blast!

Platforms

Packaging status

C-Dogs SDL runs on Windows, Linux and macOS. Other platforms and ports are also available, but may be outdated.

Installation

The easiest way is to download from itch.io. If you use the itch.io app, your game installation will be updated automatically.

For building on your platform, follow the getting started wiki. You will need the SDL2 development libraries installed.

License

tl;dr: GPLv2 for code, CC0/CC-BY/CC-BY-SA for assets. Significant amounts of BSD 2-clause code.

Code is licensed under GPL version 2, with significant portions under BSD 2-clause. The code is free software; you can use, modify and redistribute for any purpose, as long as you follow the GPL and BSD licenses!

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. 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 licenses.

Contact

If you have any questions, comments, bug reports, patches or anything else related to C-Dogs SDL:

cdogs-sdl's People

Contributors

carstene1ns avatar codacy-badger avatar cxong avatar cydactyl avatar davidrgmcb avatar dependabot[bot] avatar dorkster avatar felselva avatar flags avatar hashar avatar hmmmanshu avatar imgbotapp avatar jondegn avatar kurtsley avatar liquidityc avatar lmartinking avatar mailaender avatar mgmillani avatar midzer avatar naddoska avatar ottani avatar ppisar avatar rampoina avatar reinerh avatar rootkea avatar swills avatar t6zksor avatar timgott avatar veikkos avatar vilhelmgray 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  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

cdogs-sdl's Issues

Project Initiation

Get this project up to date, make it easy to use, add some polish.

  • Fix up readme
  • Add wiki page(s)
  • One-step build (configure/make install? CMake?)
  • Win/Linux builds

Implement track selection in ToggleTrack

In sounds.c, the ToggleTrack function's track parameter is unused. It seems that the game has the ability to choose which music to play, but it's unimplemented.

Push/repel allies

Allies always get in the way, especially hostages. If players can either shove or warp/repel around allies, it would be less annoying.

Reload sounds

The snipergun for example has a huge reload time, so it will be good if a sound plays when it is ready to be fired again.

Structured config files

The config files right now are just numbers in text files. This makes them impossible to edit outside the game, unless one has access to the source.

We could change this to some structured form, so that they're easier to edit. Should be either INI or YAML, will need to look at which one is easiest to build, or whether YAML is required at all.

Gun models

Gun models can be used in the weapon selection menu, as well as displayed in the HUD

Check out ports

There were a number of ports made for C-Dogs SDL. Some are now dead, but for those that are still alive, check them out and see how they were ported, and if we can continue to support those ports in one codebase.

Dingoo: http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,30,228
PSP: http://gtamp.com/forum/viewtopic.php?f=20&t=46
Dreamcast: http://www.dcemu.co.uk/vbulletin/threads/116400-C-Dogs-SDL-Versi%F3n-0-4
DS: http://gtamp.com/DS/cdogsds.php
Wii: http://wiibrew.org/wiki/C-DogsSDL
Amiga: http://aminet.net/package.php?package=game/shoot/cdogs_aos4.lha
BeOS: http://www.bebits.com/app/4549

Split up "god" classes, big source files

There are a few source files that are >10kb in size, which is highly suspect. No module should need to be this big. They may be big because they contain large, hand-coded data structures (which can be separated from logic), or they have multiple functionality.

Currently the following source files exceed 10kb in size:

  • actors.c (26kb)
  • ai.c (14kb)
  • cdogs.c (27kb)
  • cdogsed.c (39kb)
  • charsed.c (17kb)
  • files.c (20kb)
  • game.c (15kb)
  • mainmenu.c (26kb)
  • map.c (29kb)
  • mission.c (19kb)
  • objs.c (27kb)
  • pics.c (21kb)
  • prep.c (24kb)

This is almost half of all the source files. Given that CDogs is a fairly big game for the number of source files, this is somewhat expected.

This will be a big ongoing issue. Keep updating this issue with findings such as:

  • why a certain source file is so big, i.e. hardcoded structures, or multiple functionality
  • any refactors done
  • common functionality found

Campaign save/autosave

The password system is neat but is very outdated and inconvenient. There is somewhat of an autosave already, where the game remembers the last password, but it is not a full-blown save system.

Eliminate #ifdefs from most source/headers

Code that depend on different build configs or platforms should be separated. Having two versions of the same code in the same functions makes maintenance hard. This is especially the case for modules such as sound.c.

Health bars

Instead of just a number. Also may consider adding health bars to other players, especially bosses.

Networked multiplayer

Subtasks for a huge piece of work:

  • Networked input device (#220)
  • Refactor all game state changes as events (#225)
  • Spectators - client as total slave, accept all state changes from a server (#37)
  • Simple LAN multiplayer where clients are total slaves (no local simulation) #293

After the simple LAN multiplayer, testing over a WAN (or with simulated latency/loss) might reveal severe shortcomings in the protocol, such as

  • Retransmissions and sequence numbers, ACKs
  • Key-frames and delta frames

Include campaigns

C-Dogs website had a load of user-created campaigns. Find them and include. May need to implement campaign folders to avoid crowding out the choose campaign menu.

Compass

  • Objectives
  • Players
  • Exit area

Better movement/targeting

Try to move to a position that can hit the player before firing, such as lining up until the player is directly left/right/up/down or 45 degree diagonal.

Use CMake

The current makefile is a bit unwieldy, and users must edit it according to their platform. CMake should have the following improvements:

  • Easier to build/install
  • Support more platforms
  • Support IDEs
  • With CPack, build rpm/deb packages

Shadows

A bit of eye candy. Could be just blob shadows to start with; later may experiment with directional shadows based on the angle of the sun.

AI engagement distance

AI should want to move into the best range when engaging. For example a flamer AI should want to close the distance before engaging.

Pathfinding

For the AI, hostages etc. Probably means the AI needs the concept of "where to go", instead of now where they move randomly.

Squads

In a squad, AI has awareness of each other, so they can work together, share awareness of the player etc.

16-directional bullet graphics

Some bullets (powergun, snipergun) appear differently depending on their angle, but there are 8 at most. Add graphics so that even for guns that have more directions than 8 (machinegun), their bullets are drawn differently. This may require a new drawing technique.

Map/radar on HUD

The map is brought up using a key; see if it can be shown all the time

Refactor mainmenu into structured menus

The current mainmenu implementation is unstructured, with the displaying and handling of menus in separate data structures and routines. Combine them to make them easier to maintain, and possibly refactor common routines.

Unfortunately this is required before campaign folders are implemented, because that depends on how the menu systems work.

Bullet hit sounds

Would help especially if the player could hear when they are being hit

Ground effects

  • Ice (friction)
  • different footstep sounds
  • footprints, puddles (leave particles)
  • travelators
  • lava (damage)
  • water (speed)

Add music folders

CDogs can play music but only if some config files are set up with the filenames of the music. Include some sample music and include them in the install/build, and the game should play any music that's placed in the music folders.

Footstep sounds

Could help the ambiance especially when hearing footsteps in the distance

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.