Giter Club home page Giter Club logo

dungeonrush's Introduction

DungeonRush

A game inspired by Snake, in pure C with SDL2. My piece of work from C assignment. Hope you like it :)

I work on the small project on my own so the code lacks of comments.

Download

Windows(64bit)

Windows(32bit)

Linux

Someone port it to android!

AppImage for Linux is also available in release page.

Archlinux AUR

yay -S dungeonrush

Archlinux AUR(git version)

yay -S dungeonrush-git

The game supports macOS but I don't have an Mac to compile for it.

The executable is called dungeon_rush

Release Note

v1.1-beta

  • Fix bugs

v1.0-beta

  • Fix bugs
  • Add Multiplayer / LAN mode

You can play with your friend via Internet! You need to be in the same network and can directly connect by IP

v1.0-alpha

Initial release

How to Play

Singleplayer

Use WASD to move.

Collect heros to enlarge your army while defending yourself from the monsters. Each level has a target length of the hero queue. Once it's reached, you will be sent to the next level and start over. There are lots of stuff that will be adjusted according to the level you're on, including factors of HP and damage, duration of Buffs and DeBuffs, the number and strength of monsters and so on.

Multiplayers

Use WASD and the arrow keys to move.

This mode is competitive. Defend yourself from the monsters and your friend!

Weapons

There are powerful weapons randomly dropped by the monsters. Different kinds of heros can be equipped with different kind of weapons.

My favorite is the ThunderStaff. A cool staff that makes your wizard summon thunder striking all enemies around.

Buff/DeBuff

There's a possibility that the attack from one with weapon triggers certain Buff on himself or DeBuff on the enemy.

  • IceSword can frozen enemies.
  • HolySword can give you a shield that absorbs damage and makes you immune to DeBuff.
  • GreatBow can increase the damage of all your heros' attack.
  • And so on.

For sure, some kinds of monsters have weapons that can put a DeBuff on you! (Like the troublesome muddy monsters can slow down your movement.)

Dependencies

The project requires no more than common SDL2 libraries. SDL2, SDL2-image, SDL2-mixer, SDL2-net, SDL2-ttf

For Arch

# pacman -S sdl2 sdl2_image sdl2_mixer sdl2_net sdl2_ttf --needed

For Debian

# apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev

For openSUSE

# zypper in libSDL2-devel libSDL2_image-devel libSDL2_mixer-devel libSDL2_net-devel libSDL2_ttf-devel

For MacOS

#  brew install sdl2 sdl2_image sdl2_mixer sdl2_net sdl2_ttf

For other OS

The names of packages should be similar. You can look for SDL tutorial to set up the environment.

Compilation

You should make sure all dependencies are installed before compiling

$ cmake -B build && cmake --build build

Known issues

Game speed too fast with some NVIDIA graphic cards on Linux

License and Credits

DungeonRush has mixed meida with various licenses. Unfortunately I failed to track them all. In other word, there are many stuff excluding code that comes with unknown license. You should not reuse any of audio, bitmaps, font in this project. If you insist, use at your own risk.

Code

GPL

Bitmap

Name License
DungeonTilesetII_v1.3 By 0x72 CC 0
Other stuff By rapiz CC BY-NC-SA 4.0

Music

Name License
Digital_Dream_Azureflux_Remix By Starbox CC BY-NC-SA 4.0
BOMB By Azureflux CC BY-NC-SA 4.0
Unknown BGM Unknown
The Essential Retro Video Game Sound Effects Collection By Juhani Junkala CC BY 3.0

dungeonrush's People

Contributors

bestoa avatar bl00dy1837 avatar dungpt3003 avatar fadefeng avatar jubalh avatar probonopd avatar rapiz1 avatar timgates42 avatar victorlvl47 avatar xfangfang 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

dungeonrush's Issues

Lower Resolution for Handhelds

I love the concept and would like to see it running on Retro Handheld Consoles such as my RG351p. These systems tend to run Linux without x-windows, using SDL2 and the KMSDRM backend for windowless rendering. Unfortunately DungeonRush runs at way too high of a resolution. Most of these handhelds range from 480x320 to 640x480.

I took a quick look at the code in hopes that it supports scrolling in case the window size is smaller than the map size, but this doesn't seem to be the case. Perhaps someone might be interested in updating the code base to work on lower res displays? I've done it for some of my own python/pygame projects to get them running on my handheld. It takes a bit of work unfortunately, and I lack the time. But maybe someone else who reads this might be interested in trying?

Co-op game model

For Socializers gamers, it's great fun to clear the level with a partner!
Multi player model will kill friends, it is not a good idea for us.(Don't kill friend)
And, I always die at the beginning of a game.(Three seconds of invincibility at birth)
My English is poor. Sorry.

Migrate to CMake

This project is cross-platform but the build system make adds to the difficulty of compiling it against different platforms. CMake may be the answer.
There has been some effort like #7

Small bug in prng.c

Maybe it should be nSeed % (PRNG_MAX + 1) but not nSeed % PRNG_MAX to get a value in [0, 32767]?

Unusual FPS on MX150

OS: Ubuntu 18.04.3 LTS
Graphics Card: NVIDIA GeForce MX150
Compiled from source
The characters move at an unusual speed thus terminating the game.

MacOS SDL2.framework linking error

ld: can't map file, errno=22 file '/Library/Frameworks/SDL2.framework' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/dungeon_rush] Error 1
make[1]: *** [CMakeFiles/dungeon_rush.dir/all] Error 2
make: *** [all] Error 2

Under MacOS,if using SDL2.framework for linking,there will be errno=22, remove the SDL2.framework, and use the homebrew sdl2 for linking to get pass.
CMAKE优先使用SDL2.framework作为链接对象好像会出错,用homebrew版本的就可以编译成功了。
我使用的是 MacOS Catalina 10.15.7,xcode 12.0.1.

Unable to run on macOS

Hi,

I just tried to run this project on macOS but got the following errors:

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
Failed to load res/audio/bg1.ogg: SDL_mixer Error: stb_vorbis_open_rwops: VORBIS_invalid_first_page
Failed to load res/audio/bg3.ogg: SDL_mixer Error: stb_vorbis_open_rwops: VORBIS_invalid_first_page
Failed to load audio!
Failed to load media!

My setup is as follows:

SDL2 2.24
SDL2_mixer 2.6.2
SDL2_image 2.6.2 (with libvorbis 1.3.7)
SDL2_ttf 2.20.1
SDL2_net 2.2.0
all installed using Homebrew on macOS 12.6

I ran the executable from the build/bin directory and checked that the resource files are present.

Update: On Linux, it works fine.

Game crash

Press ESC or close the game in multpayers / LAN / join a game to crash(dungeon_rush.exe 已停止工作)
My system is window7

AppImage crashs when creating data file

Found by @BruceZhang1993
AppImage will crash when one turn is finished, creating the data file storage.dat.
@probonopd The path used in the code is ./storage.dat.
Anyway the data should be held in $HOME or something. I just don't want to get into a tricky situation related to the platforms. Is there a solution that the program can write into the working directory?

Play on LAN

From my own experience, I would say the most fun part about this game is to play with your friend and try to defeat each other. Currently, DungeonRush only can let two gamers play together by using the same computer and WASD/arrows. There will be much more fun if it can support playing online.
Hopefully, I can find the time to make playing on LAN available.

游戏无法启动?

求大神帮忙看看是什么原因?

报错:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 CMake Error at C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.23/Modules/FindPackageHandleStandardArgs. cmake:230 (message):
Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR) C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.23/Modules/FindPackageHandleStandardArgs. cmake 230

速度太快了

速度怎么设置啊,我在mint 上编译执行, normal 模式一秒玩完,都来不及看见主角的脸...

Network enhancement

  • Allow users to choose the port
  • Broadcast in LAN to enable users to discover other players
  • Allow users to type their username

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.