Giter Club home page Giter Club logo

xanadu's Issues

Add jshint

  • jshint (dev dependency?)
  • jshint dotfile
  • npm run lint task

Organize CSS

main.css is quickly becoming a monolith. It would be nice to break it up into smaller files. Since we have to build the TS code to JS, we might want to move to Sass and then compile that to CSS, as well.

Add JSCS

Preferably the Google spec of JSCS ๐Ÿ˜„

In-Game Store

Add a Counter Strike (and Spelunky?)-type store/merchant to the starting room if people want to buy additional supplies with their in-game gold. For example, even if your character class doesn't start with a gun, you could buy one.

Style Echo Messages

Echo messages displayed in the client should have a styling (color? background-color? border?) to hint at the communication that was sent (e.g. a shout message might have a red outline on the sender's screen).

Lobby should remove messaging prefixes

The lobby behavior should resemble the game's behavior of stripping messaging prefixes (like /t) if they are the start of the message.

Maybe there should be no default talk behavior for the lobby (i.e. maybe it should behave exactly the same as the game, just without the character-based restrictions on communication). Feel free to discuss...

Create index.ts using client.ts as library

Instead of having a combination of helper function and executed code all in client.ts, I think it might be nice to create index.ts, which would only contain the executed code (i.e. call onDocumentReady). This leaves client.ts as an easily-testable function library!

Add contract/side-missions (?)

Another way to suggest that players act a certain way. Main importance is to keep players from leaving the cave early (e.g. "Chef must set up camp within a five room radius of the treasure room before he can leave."

Add roster to client

This should be some sort of tabular view component so players can see others' information (e.g. name, character class, allegiance, etc.). This would also be used for communication (e.g. clicking on another player's name instantly creates a chat/talk command for the player to fill out).

Types?

So, I tried VSCode this morning. It's pretty decent, and I noticed that there's a lot of support for TypeScript and other JS-related infrastructure stuff. @zthomae if you want to move to TS or whatever, I am definitely open to it.

Singleplayer

By implementing a special character class and tinkering with how messages are handled, singleplayer could be a viable feature.

Even better would be to package an in-browser Server+Game for an easy-to-launch singleplayer experience.

Implement Character Effects

These are things like poisoned, addicted, on fire, and more. When this issue is actively being worked on, I will update the Wiki to discuss Effects.

Create a Grid interface

This would be a generic interface (Grid<T>) that would be used instead of T[][]. It would allow for better abstraction and code de-specialization/clumping/copying.

Remove Player States

I think it would be better to compute proxies for these states off of certain available on the Player interface instead of having these pseudo-enum variables.

React on the client

Is this something we would want? I'm fine either way, as I don't know too much about React.

Allegiance bonuses

We need to hammer out allegiance bonuses to make sure they are fair (and also worthwhile to have in the game).

Design general "Interaction" Model

In addition to dueling and general combat, we need some way to frame general interaction between players (this does not include :to chatting/whispering, shouting, etc. which are "global" to the game state). For example, an interaction might be the doctor/medic healing (or poisoning) another player, or two players trading items.

Add Lobby/Game Flip-flopping

After a game is finished, the currentContext should be set back to Lobby, which then proceeds to a Game and so on. I think a lot of this infrastructure is in place, but it should be throughly tested an make sense and work smoothly from a client/UI/UX perspective.

Add testing

Testings should be ran as npm run test. I'm enforcing (:sunglasses:) that we use Mocha, Chai, and Sinon for testing (as devDependencies). The testing directory test/ structure should mimic exactly the structure of dist/ (which mimics src/ via Babel).

Decide where Character creation happens

Currently, character creation (where a character object is assigned to a player's character property) is done on Game construction, which is OK, but not great. I was thinking that when a player says they are ready, they can pass arguments for their character class (maybe allegiance and modifiers too?). If no additional information is given, then it should be pseudo-randomly generated, but the option to choose should exist.

Better handling of sockets

It seems that we have open connections, even when all the sockets in a Server's this.sockets are disconnected (i.e. socket.disconnect(true)). This is likely causing the hang in #30 .

Create Favicon

I like the whole Fraktur style. Maybe a simple Fraktur "X"?

Add debug/admin page

Should cleanly display game state information for debugging (and possibly spectating later on)

Decide client styling

What colors/color scheme should we use? (See main.css for some options.)
What fonts should we use? DEFINITELY needs to be monospace, so I was thinking one of these.

Line-of-sight?

Related to vision in #24, should we an ability-based line-of-sight bonus (i.e. you can see into neighboring rooms)? I think this might be cool, but also possibly unfair and may be difficult to implement properly.

Add Beasts

These are animals that are (pseudo-randomly) distributed throughout the map. They attack players (and maybe even each other). It would be cool to have different types/levels (with different AI's!).

Add Immutable

One of the goals of this project is to make the Game and all associated objects (like Characters, Items, Actions, etc.) immutable. To accomplish this, we will use the Immutable library. I've already started to "hit my head" on mutation errors with things like CharacterClasses (i.e. corrupting data by mutating pointers instead of "separate" objects). By using Immutable and its types, we can hopefully avoid these errors by having immutable "blueprints" that create separate objects (with unshared pointers), and avoid the overhead of classes. What do you think @zthomae ?

Style Scrollbars

I've done most of my development on OSX using Chrome, but I recently ran the client in Firefox on Ubuntu and the blatant white scrollbars weren't too sexy. It might be nice to have some sort of coherent, cross-browser styling using this jQuery library. It might even be cool to put a "Page Map" scroller over the client map.

Add a logger

We need to replace console.* with a logger that is better for testing, collecting data, etc.

Add continuous integration

My vote is for something like Travis since it is free for open source projects.

This might raise the question of deployment, but we can address that as necessary.

Concept of dark, light, torches, matches, etc?

I was thinking of something along the lines of Minecraft -- needing to carry torches and matches, etc to be able to get better room descriptions (especially if there is a look command). I could see this adding extra challenge ... or cruft. What do you think?

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.