GithubHelp home page GithubHelp logo

jaymcole / dungeoncrawler2 Goto Github PK

View Code? Open in Web Editor NEW
13.0 4.0 5.0 45.78 MB

2D Java Rogue-like dungeon crawler

Java 96.88% GLSL 2.12% HTML 0.40% JavaScript 0.32% CSS 0.28%
game-development dungeon-crawler-game dungeon-crawler dungeon-generator java rpg rpg-game roguelike roguelike-game roguelikedev

dungeoncrawler2's Introduction

Dungeon Crawler 2

2D Java Rogue-like rpg dungeon crawler game. (Screenshots below)

I implemented many features that LibGDX already supports out of curiosity.educational purposes. I would not recommend doing this in a final product.

Features

  1. Procedurally generated levels
  2. 2D fragment based lighting
  3. Simple Game AI
    • Pathfinding
    • Targeting/Attacking/Etc.
  4. 100% custom GUI/Interface
    • Custom windows and window management
    • Custom widgets
    • Custom event handling
  5. Experience/Leveling system
    • Gain attribute points to improve your character by defeating dungeon monsters.
  6. Inventory management system
  7. Fast-paced gameplay
  8. Loot!
    • Items/Loot can be found throughout the dungeon or by defeating dungeon monsters.
  9. Record keeping system
    • Keeps track of various in-game stats (time played/attribute points spent/damage dealt/damage taken and many more)
    • Allows for developers to quickly and easily add new stats to record with just two short lines of code.
  10. Custom asset/resource manager
    • Ensures duplicate resources aren't loaded into memory.
    • Ensures resources are disposed of correctly.
  11. Custom Animations system

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

  1. Clone DungeonCrawler2 repo

  2. Import DungeonCrawler2 into Eclipse as a Gradle project

    • Import
      • Gradle
        • Existing Gradle Project
    • Welcome Window
      • No actions, hit next
    • Import Gradle Project
      • Selected the project root directory
        • ex. C:\Users<user>\Documents\GitHub\DungeonCrawler2
      • Hit next
    • Import Options Window
      • No actions, hit next
    • Import Preview
      • If the preview loaded correctly, finish and move on.
      • else:
        • Error #1
          - Gradle user home directory: Unknown
          - Gradle distribution:        Gradle wrapper from target build
          - Gradle version:             Unknown
          - Java home directory:        Unknown
          
          - Error: Could not fetch model of type 'BuildEnvironment' using Gradle distribution '/htts://services.gradle.org/distributions/gradle-6.1-rc-1-bin.zip'
          - Caused by: java.lang.IllegalArgumentException: Value 'C:\Program Files\Java\jdk-12.0.1' given for org.gradle.java.home Gradle property is invalid (Java home supplied is invalid)
          
        • Solution:
          • Navigate to .../DungeonCrawler2/gradle.properties
          • change org.gradle.java.home to your java jdk home/version
            • Ex: "org.gradle.java.home=C:\Program Files\Java\jdk-12.0.1
          • Run gradlew.bat (not sure this is necessary)
          • Delete the project from eclipse
            • NOTE: Do NOT delete project from disk, only from eclipse.
          • Reimport the project
            • There's probably an easier way to refresh the gradle project but I don't know what it is.
  3. Set DungeonCrawler2 to use the assets folder

    • Right-click "DungeonCrawler2-desktop" (in Eclipse project explorer)
    • Run As
    • Run Configurations
    • Arguments (tab)
    • Under "Working directory:"
    • Change from "Default" to "Other"
    • "Workspace..." (button)
    • Select "DungeonCrawler2 > core > assets"
    • "OK" (button)
  4. Starting the game

    • Launch DungeonCrawler2-desktop > src > ecu.se.desktop > DesktopLauncher.java as Java Application

Built With

  • LibGdx - The graphical framework

Authors

  • Jason Cole

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Screenshots

alt text alt text alt text

dungeoncrawler2's People

Contributors

bahlmark avatar carsonjk avatar cmfyep avatar jaymcole avatar mhwall avatar shlievan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dungeoncrawler2's Issues

Light sources spawning in wall tiles

Lights are spawning in walls, rendering them useless and wasting processing time.

  • May be spawning ON walls which will be ok after tiles/gameobjects start using a shadow texture for occlpusionmap generation

Draggable gui elements

Allow user to reconfigure any gui element (maybe if they're a container or absolute positioning)

  • configuration saved in user preferences?

Gui Rework

Rework GUI

  • GUI elements should flexible and correctly fit/arrange themselves
  • GUI elements should support more rendering options

Settings Manager

Settings Manager for saving/loading user settings.

  • Settings should have default values
  • Defaults are saved/loaded if settings file isn't found.

Centralize all used sounds

Maintain all sounds in a central file instead of hard coding strings throughout the app.

  • Makes it easy to change sounds / find references

  • footsteps

  • ambient music

  • ambient sounds

Teleportation (Spell)

  • (Optional) While Channeling (looping)
  • On Cast
  • On Removal (lingering / fading sound)

Player Inventory

GUI for player inventory

  • Store / drop / use / consume items found while playing

Lights not flickering

Lights should be flickering with varied intensity

  • Check more varied intensities to see if they're actually not changing.

Map Generation Revamp

  • More structured, room based, generation
    • Use pathfinding to find connections between doors.
  • Walls should only be rendered for wall tiles immediately above floor tiles.
  • Determine 'room' from given tile
  • (optional) alternate floor tree (multiple staircases - follows own unique path / syncs up with main path / dead end)

generation phases

  • blank grid
  • generate rooms
    • rooms should be surrounded with a 'blocked' tiles to keeps paths from intersecting them.
    • Generate entrance / subroom nodes
    • plus secret, not-directly accessible rooms
    • plus detailing (lights, furnishing, items)
  • generate room associations
  • connect rooms and node graphs

...

Create a graph for faster path finding

  • Floors should contain rooms (groups of tiles)
  • Floor should be able to find the associated room given a tile (maybe store room in tile)
  • Rooms should be connected to construct a node graph suitable for path finding

Spell: blind/nightvision

Globally increase or decrease lighting.
Problem: not sure how this could Abe applied to NPCs.

Asset pre-loader

Load GUI assets (and many common game assets) on game start and pre-load other required game assets on map load (maybe fade to then from black between levels).

Fireball (Spell)

  • On Cast
  • While Moving (looping sound)
  • On Impact
  • On Dying (optional fading-out sound)

Footsteps

Looping sound for player / other humanoid actors

Shadows aren't rendered on AMD(?) GPUs

Texture color is correctly 'lit' but shadows are not applied.
Currently seems to only happen on AMD GPU's

  • Add logging/checks for shader compile and loading.

Absolute positioning

GUI elements need an absolution positioning option that keeps them from resizing when their parent resizes.

  • Primarily used for in-game GUI HUD (healthbar, manabar, exp, etc)

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.