Code Monkey home page Code Monkey logo

adventure's Introduction

Build Status

Adventure

Adventure is a text-based console adventure RPG written in Java. It is extensible though plugins, has multiple clients (ssh and local terminal) and supports multi-player. The game is written almost entirely from scratch as a programming exercise / personal project. It is released under the GPL V3.

Progress

Currently, the game is in early development and has extremely limited functionality. See the issue board for progress reports, and commit history for the latest updates.
There are no releases as of yet.

Vision

Currently implemented features include:

  • Fully open world with unique grid / mesh hybrid topology.
  • Trivial modification/custom of game raws for a whole new experience.
  • Persistent Saving
  • Local terminal TUI Client
  • Rich environments with temperature and descriptions
  • Custom world generation algorithms

Exciting planned features include:

  • Limb dismemberment / extreme gore
  • Extreme extendability through plugins
  • SSH Text based client
  • Playability as every creature in the game.
  • Sound support
  • Gamepad / Joystick support
  • Dijkstra's algorithmic path finding with OpenGL/Multithreading Acceleration.
  • Unique weapons / armor
  • Potions
  • Crafting
  • Randomly generated monsters / wildlife.
  • Lush plants and trees with vivid literary description.

adventure's People

Contributors

blackout29 avatar

Watchers

 avatar  avatar

adventure's Issues

Add limb dismemberment / gore

Create some sort of way for attacks to dismember/crush limbs. Health really just represents blood loss. Make some sort of skeletal structure / tree. Allow players to optionally target specific zones on a mob. Make attacks only apply to limbs. The total health you have is just the sum of your limbs, if the part is marked critical and the health is zero death ensues. If the part is marked as severed, the child parts will fly off.

Sound Interface

Provide an interface by which plugins can load and play sounds.

Fix Room Section Code, Redo how World Generates Rooms

I seemed to have had little insight into how rooms should be generated, just trying to avoid coding myself into the corner. Rooms should be generated dynamically as they are requested via the IWorld Interface, and these rooms should be responsible for generating their own sections.

Add methods to Item/Actor APIs

The following methods should be added to Items/Actors, adding these will allow for making a fuller game.

  • Eat / Drink method. Both return SNutrition.
  • Dialogue method. Should return a dialogue object.
  • Harvest method. Basically synonymous with pickup method.
  • Message method.
  • Query properties method.
  • Get points from kill method. (for score system)

Add string / localization support

Add support for reading a JSON file that loads key value pairs of strings. This should be done statically at a Game wide level. Then, as a test, add this to the RandomNaturalTerrain class. Then, add support for multiple localization files.

Basic Rooms

Add the basic rooms to the core plugin. Probably do basic terrain features and whatnot.

  • Some sort of wilderness tile that is generated on the hash of the room position and world name / creation date
  • A generic plain tile.
  • A solid rock wall tile
  • Maybe some land features

Implement Basic Inventory

Implement the basic inventory class as a concrete class with limited weight, volume etc that implements IInventory.

Unit Tests

This issue is to track the progress of writing unit tests for my code. Here is a list of things that need to have tests:

  • Test for RandomTerrainRoom world generator
  • Test for Inventory
  • Test for World Serialization
  • Test for creating a world
  • Test for basic items
  • Test for action lambdas
  • Test for output / input mechanisms

Map Generation

Provide an interface from which plugins can generate maps.

Core Plugin

Create the core plugin for the game, with item containers, basic players, and basic rooms.

Write Game Test

Write a test that loads and saves a map, then loads it again.

Add a logging / output system

Add a mechanism by which actors / rooms / items can log messages and target messages at other instances. This must be done early to allow for maximum integration

Write Plugin Test

Create a unit test for loading a plugin from a file, grabbing its factory methods, and instantiating instances.

Implement Core Player

Implement a basic player and add him to the core. Allow controlling players via SSH or Terminal Access.

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.