cxong / cdogs-sdl

Classic overhead run-and-gun game
https://cxong.github.io/cdogs-sdl/
GNU General Public License v2.0
900 stars 115 forks source link

Implement Cyberdogs gameplay #71

Closed cxong closed 9 months ago

cxong commented 11 years ago

There seems to be lots of fans of Cyberdogs, some who prefer its gameplay over C-Dogs. It'll be nice if its gameplay can be included in C-Dogs as well.

This is a pretty big feature composing many parts, so this should be split if it is ever undertaken:

cxong commented 10 years ago

Cyberdogs weapons:

image

cxong commented 10 years ago

Cyberdogs stats:

image

cxong commented 9 years ago

cxong commented 1 year ago

Cyberdogs has the following enemies:

https://github.com/cxong/cyberdogs/blob/dc536cecae07e1e7361278a2147fd567382bce93/game.pas#L372-L453

Name Body Face Tracking Moving Shooting Delay Speed Armor Melee Gun
Basic image Brown Grunt 10 10 2 25 6 15 ? image
Killer image Red Grunt2 15 15 2 20 12 10 1 GoonGun2
Robot image Grey MechGrunt 15 15 5 25 4 20 1 GoonGun3 image
LittleBad image Black Grunt2 15 15 1 10 16 10 2 GoonGun2
MeanGoon image Brown BlondGrunt 15 15 5 15 8 15 1 GoonGun2
BigBad image Black BigBadGuy 10 10 5 10 8 20 3 GoonGun4

Notes:

cxong commented 1 year ago

Scoring

cxong commented 1 year ago

image image image image image image image image image image

cxong commented 1 year ago
Mission | Objects | Kills | Destroy | Deadline | | | | | | | Wall | Floor -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 1 | 6 |   |   | 1:30 | 100% |   |   |   |   |   | ![image](https://user-images.githubusercontent.com/1083215/229503260-e8910d3b-8559-4937-8d5d-449ee1f3f329.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png) 2 | 8 |   |   | 1:50 | 90% | 10% |   |   |   |   | ![image](https://user-images.githubusercontent.com/1083215/229503337-32cfdc52-566b-4153-a207-ff0591446164.png) | ![image](https://user-images.githubusercontent.com/1083215/229503195-254e014f-93cb-4508-848e-7f1f72a59153.png) 3 | 10 |   |   | 2:10 | 80% | 20% |   |   |   |   | ![image](https://user-images.githubusercontent.com/1083215/229503493-cac46dd9-4d7e-4056-9019-92e87ddbaa99.png) | ![image](https://user-images.githubusercontent.com/1083215/229502863-2ad430db-6a53-4c5a-ae8d-06b1d5789523.png) 4 | 12 |   |   | 2:30 | 70% | 15% | 15% |   |   |   | ![image](https://user-images.githubusercontent.com/1083215/229503493-cac46dd9-4d7e-4056-9019-92e87ddbaa99.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png) 5 |   | 70 | 1 | 4:20 | 60% | 40% |   |   |   |   | ![image](https://user-images.githubusercontent.com/1083215/229503493-cac46dd9-4d7e-4056-9019-92e87ddbaa99.png) | ![image](https://user-images.githubusercontent.com/1083215/229502863-2ad430db-6a53-4c5a-ae8d-06b1d5789523.png) 6 | 8 | 40 |   | 3:50 | 50% | 16% |   | 16% | 16% |   | ![image](https://user-images.githubusercontent.com/1083215/229503493-cac46dd9-4d7e-4056-9019-92e87ddbaa99.png) | ![image](https://user-images.githubusercontent.com/1083215/229502863-2ad430db-6a53-4c5a-ae8d-06b1d5789523.png) 7 | 18 |   | 2 | 4:10 | 40% |   |   | 30% | 30% |   | ![image](https://user-images.githubusercontent.com/1083215/229503337-32cfdc52-566b-4153-a207-ff0591446164.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png) 8 |   | 100 | 2 | 6:10 | 30% | 14% | 14% | 14% | 14% | 14% | ![image](https://user-images.githubusercontent.com/1083215/229503337-32cfdc52-566b-4153-a207-ff0591446164.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png) 9 | 22 |   |   | 4:10 | 20% |   |   | 40% | 40% |   | ![image](https://user-images.githubusercontent.com/1083215/229503337-32cfdc52-566b-4153-a207-ff0591446164.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png) 10 | 24 |   |   | 4:30 | 10% | 18% | 18% | 18% | 18% | 18% | ![image](https://user-images.githubusercontent.com/1083215/229503337-32cfdc52-566b-4153-a207-ff0591446164.png) | ![image](https://user-images.githubusercontent.com/1083215/229503036-53f88d83-7f4d-4202-84ce-085ef8bb82d9.png)
cxong commented 1 year ago

Mission maps (partial)

image image image image image

image image image image image

Some notes:

cxong commented 1 year ago

According to the source code, https://github.com/cxong/cyberdogs/blob/dc536cecae07e1e7361278a2147fd567382bce93/dogs.pas#L479-L483 the map generation params may just be completely randomised

cxong commented 1 year ago

Reverse engineered weapon damage

Gun Damage
Blaster 10
Powergun 60
Flamer 12
Minigun 12
Launcher 40
Megagun 200
cxong commented 1 year ago

Reverse engineered enemy/object health

Enemy/Object Health
Basic 15
Robot 60
Black 12
Red 12
Goggles 15
Beret 60
Box 15
Grey box 25
Crate 25
Mainframe 120
Core 280
cxong commented 1 year ago

Estimated enemy density

Mission Enemies killed Time (m) Enemies / m
1 4 2.6 1.538461538
2 26 3.5 7.428571429
3 47 5.1 9.215686275
4 57 4.1 13.90243902
5 81 5.6 14.46428571
6 60 3.9 15.38461538
7 117 5.9 19.83050847
8 102 4.1 24.87804878
9 67 2.5 26.8
10 108 2.8 38.57142857
cxong commented 1 year ago

Raw info of weapon damage and missions https://docs.google.com/spreadsheets/d/e/2PACX-1vQZq6FcXtlKnuURN8lJY3cnw3nz5oP877EBbIlzzHVzWGslbxQqeFsxt9wnbreHN9dPg994jwnEUQAi/pubhtml

cxong commented 1 year ago

Estimating from the minimap size, maps are 100x100

cxong commented 1 year ago

Demolition bonus is basically just the score you get for destroying items It is equal to the health of the objects https://github.com/cxong/cyberdogs/blob/dc536cecae07e1e7361278a2147fd567382bce93/game.pas#L692-L704 However this bonus, divided by 10, goes towards the end of level bonuses (whose calculation is unknown)

cxong commented 1 year ago

The way cyberdogs does demolition bonus is somewhat incompatible with C-Dogs. C-Dogs gives score for damage inflicted on enemies, but not objects, unless that object is an objective, in which case a flat score is given when it is fully destroyed. However Cyberdogs adds score by damage, as if they were C-Dogs enemies. As an approximation we can make Cyberdogs objects all objectives, however we'd need to add a way of customising score so that you get more points for tougher objects - i.e. customise OBJECT_SCORE.

cxong commented 1 year ago

Pickups encountered in full playthrough:

Mission congusbongus DH Alukret (4711) Alukret (4711 coop) 황금돌덩이
1 Powergun armor, max armor life max armor armor
2 Powergun, max armor armor, max armor armorx2, max armorx2, lifex2, flamer, chaingunx2 armor, max armorx2, lifex2
3 armorx2 armor, max armor powergun max armor, life, chaingun max armor
4 max armor armorx4 max armor, blaster, life armorx2, max armor, lifex2, powergun armorx5, max armorx2
5 armorx3 armorx2 armorx3, powergun, blaster, life max armorx2, powergun, launcher armorx2
6 max armor, armorx2 armorx4, blaster armorx2, flamer, launcher, life armorx3, life, flamer armor
7 armorx3, max armorx2 armorx5, max armor life, armorx2, max armor, chaingun armor, max armor, launcherx2, powergun armorx4, max armor, launcher
8 armorx3, max armor, flamer armorx4, max armor armor, max armorx2, life, launcher armorx4, max armor, powergun, launcher armorx2, max armor, flamer
9 armorx4, powergun armorx3, max armor, powergun armorx2, max armor, life, flamer, launcher, chaingun armorx5, max armor, lifex2, flamerx2 armorx2
10 max armorx2, armorx2 armorx4, max armorx2 armorx5, life armorx2, max armorx3 armorx6, max armor

It appears that Cyberdogs is heavily randomised - every mission, including style and objectives, are randomised. Pickups are also randomised, and drawn from the same pool, except a few special items:

Note that pickups are doubled when there are two players

cxong commented 11 months ago
Gun Bullet Colour Speed Range Damage
DumbGun laser_dumb red 384 110 5 (basic zombie)
Lazer laser yellow 960 100 3 (red/black zombie, goggles)
Gun pulse_green green 768 110 10
TurboLazer turbo_laser green 960 100 8
cxong commented 9 months ago

Gun rates

Gun Rate
PowerGun 40
Blaster 12
MiniGun 7
Flamer 7
Launcher 30
DumbGun (basic zombie) 40
Gun (most enemies) 30
Lazer (grey goggles guy, green bullet) 65
TurboLazer (beret guy) 35
Zapper (megagun) 7