Giter Club home page Giter Club logo

textadventure's Introduction

TextAdventure

TextAdventure is a text based adventure API written in C++ 14 and XML. Image the days of playing Caverns of Mystery, Zork I, III, and III, and many other classic text adventures. I refuse to call them interactive fiction, that's just a dirty word. Now the great thing is you don't need to know how to code in C++ to make games. You will however need to be able to read and create XML files. With the right XML configuatation you could create any kind of game you like. Future releases will have a utility for making the actual XML file so there will be no need for hand crafting adventures.

The API is in a very basic state right now. Players can move around, interact with the enviornment and do most basic commands. However more complex commands still need to be implemented. Work right now is going to be focused on the tools for a while so that more interesting games can be created with less effort than hand crafting XML configuration files. I imagine many different kinds of games being written using the underlying parsing and game engine. Right now it's tightly tied to the current config.xml file which can be modified to have whatever kind of game you want. What should happen is a player can choose which game they want to play with some kind of GUI launcher and then run the actual adventure. I imagine a very hopefully vibrant development community for this kind of thing. So if you're a developer or text adventure afficionado take a look at this and put some work into it if you want. I am looking for active contributors to this project.

textadventure's People

Contributors

jlechem avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

textadventure's Issues

Implement Visual Game Manager

I need a game manager of some kind to manage actually running the text adventures. You could run them from the command line but why make it harder than it needs to be.

Implement Save Command

The same command is sort of done. However other commands like put/open could change an items object state and this needs to be taken into account.

Save has now been re-worked and is saving in the following format (in binary, so no manual editing of save files, at least easily).

The first line is the room id of the player and their score and their items.

RoomID Score ItemID (O|C|X for open,closed,NA)

If an item has sub items then it is followed by :ItemID (O|C|X) | where the number of items repeats until the pipe is found

Each room with an item then repeats in the above format

Implement Visual XML Editor

We should have a visual XML editor that allows users to create XML files graphically instead of hand coding them. This would allow for creation of rooms, items, npcs, etc. The final output would be the config.xml file. This might need to be one of the last items done since changes to the XML file will result in code changes here.

Implement NPCs

Non player characters need to be implemented. The classes are in place but need to be fleshed out.

Implement Item sizing

Right now if an item can contain other items we just allow it. We need a size check so that you can't put something large in something small. Also right now it's just a straight one to one capacity. Each item should have a size of some kind, i.e. a sword has a width and length and takes up X total space. A bag can hold up to X total space.

Implement Load Command

The load command needs to be implemented. This could be tricky and probably needs to be done last since other commands could cause changes to the XML config file and we don't want to re-code the loading.

Implement Talk Command

This is a long term goal to implement some kind of talk command to interact with NPCs and have voice actions.

Implement ANTLR grammar

Right now there is a very basic verb/noun action thing going on. ANTLR has been added and we need to figure out the grammar and how to use the parser ANTLR generates for us.

Implement weapons

I have implemented items and treasures, however we need to implement weapons as well. Once weapons are done the player can attack/defend.

Implement Open Command

The open command needs to be implemented. This checks if the player has the item or the item is in the room and if it can be opened it will.

Implement Help Command

The help command needs to be implemented. A HelpCommand class needs to be implemented and data needs to be added to the config.xml so that the appropriate help text is displayed.

Implement Put Command

The put command needs to be implemented. This puts an item into another item. First the item must be able to be opened and it must be able to store sub items inside it.

Implement armor

Along with weapons a player needs to be able to wear armor. This is a new item type and needs to be implemented.

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.