top of page

DOOM 2D19 is a 2D platformer game developed by Marc Doctor Pedrosa for the Videogame Development subject in CITM (UPC, Terrassa). 

It is based on the original 1993 DOOM

The game core subsystems are:

​

ENTITY SYSTEM

Entities, such as enemies or loot, are loaded from a Map. First, an Entity Factory updates every entity logic and then entities are sorted by "blit order" so that they appear on screen visually superimposed

​

ENEMIES

There are 4 types of enemies, whose behaviours are those of the original game. 3 of them use raycasts, or lines to detect a wall between the player and them. 

_ The Cacodemon is a flying enemy that always keeps a distance with walls and platforms. It launches fireballs and bites!

_ The IMP is the base enemy, that tries to follow the player everywhere he goes and jumps if needed 

_ The Hell Knight and the Baron of Hell are "A to B" enemies: they go from point A to point B while waiting and they react when the player is on the same platform. Hell Knight follows him to other platforms whilst Baron of Hell launches projectiles. 

​

BLOOD SYSTEM

A group of blood drops form a "stream" which is created in the center of the damaged entity. It has speed, color, gravity and depends on the attack damage... It also has viscosity: when it arrives to a wall, it glues, descends slowly and eventually fallls

​

WEAPONS

Weapons with cadence, damage, range, max bullets, etc are spawned in the map. The player can switch between them: the shotgun is ideal for weak enemies, the chainsaw is powerful but risky, and the machine gun incites Rambo-like situations

​

DEATH TIMER

All enemies have a power level (1 to 4). When you kill an enemy, it gives you extra life seconds proportional to the enemy power level. Picking a collectible gives you 5 seconds

 

LOOT

All types of loot are proportional eg when you pick a health supply, it gives the player a % of the maximum possible health. Damage is applied to armor if the player has any of it

​

USER INTERFACE 

The most interesting element is the GUI face. It responds to the player attacking, receiving damage, picking weapons, etc. The player has 5 "life levels" so there are 5 sets of those animations: you will see blood on the face when the player is low on life

​

DIFFICULTY LEVELS

The game difficulty alters 3 multipliers: the ammount of time given when killing an enemy, loot amount and enemy damage

​

AUDIO

Fxs are allocated on different channels so they can be paused, resumed, etc. The chainsaw uses this and in the settings menu the slider plays an fx on top of the music: the "prioritary" fx, which sets the music and all other fx to a volume while it plays

​

fabulous.jpg

I have been responsible for the whole logic in the game.

Nevertheless, both art and audio are extracted from the original DOOM game (1993) and the basic code structure is that of the 2D Engine developed by 

 

Special thanks for the feedback to: 

                              

GAMEPLAY VIDEO

DOWNLOAD IT HERE: 

check the code here:

HOW TO PLAY

​

Controller:         
Move = left joystick
Sprint = L2
Jump = X button 
Shoot = R2
Previous Weapon = L1
Next Weapon = R1

​

Keyboard:
Move = A (left), D (right)
Sprint = space 
Jump = W
Shoot = K
Previous Weapon = J
Next Weapon = L

LICENSE

MIT License

Copyright (c) 2019 thedoctormarc

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

bottom of page