GithubHelp home page GithubHelp logo

galaxyyao / touhougrave Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 52.36 MB

Another version of Touhou Spring(https://github.com/galaxyyao/Touhou-Spring), with some adjustment in rules

C# 96.25% C++ 3.61% C 0.14%

touhougrave's Introduction

The game is still under construction, so no license information yet.
Most image materials are from web and do not have permission from authors. If you want to use those materials, please replace them with yours, or get permission from their authors.
Please contact Hao Yao([email protected]) if you have any interest in this project.

touhougrave's People

Contributors

zeroyao avatar galaxyyao avatar

Stargazers

Scott Wu avatar  avatar  avatar

Watchers

James Cloos avatar  avatar

touhougrave's Issues

Limit access to Game object in UI thread.

Accessing to Game arbitrarily from UI thread may possibly cause race condition. Either duplicate the game object per-frame or lock the Game while flushing commands

  • deal with interaction correctly;
  • don't block UI thread.

Refactor Player/Controller interface

PlayerPlayer/PlayerController shall be unified for public interface;
OpponentPlayer/OpponentController shall be removed considering multi-player game of more than 2 players; use collection of enemy players instead.

AI moves shall be displayed to human players legibly

  • After AI makes a move, pause the execution for a certain amount of time;
  • When AI does targeting (attack, select spell target, etc.), UI hints shall be rendered (card highlights, arrows, etc.);
  • Implement game logging, like the combat logging window in WoW.

Deck Builder

With card & skill number grows, there should be a deck builder in XNA application, for testing if a skill is designed properly, without modifying source code.

Peer to peer multi-player game

Implement multi-player game based on public p2p connection.

Problems like firewall penetrating could just be ignored: one could safely assume that at least one peer has public address because finally our public server will act as a bridge.

Commands are sent two-way-ly between clients. The granularity of command packing(how often or on what timing commands are sent packed) shall be carefully defined.

Proper command serialization shall be implemented then.

The whole game states need to be hashed and sent over to validate the synchronization.

Implement counters

Consider how to render them and how to let player inspect them in detail.

Sort HandSet Automatically

When new card is added to handset, automatically sort handset by:

  1. Card type(warrior, assist, assault)
  2. Mana Cost
  3. Card Id(Marisa, Reimu, etc.)

Cancel Old Command and Issue New Command in ISetupTrigger

Some behavior requires temporarily cancel current command in setuptrigger, and issue a new command.
For example, Passive_AttackFirst requires cancel DealDamageToCard first, and take it back if attacker is not killed
Another example, one behavior: cancel one spell, and deal N damage to enemy.

Game services

Implement the server side of the game. Shall provide the following services:

  • Player registration and authentication;
  • Friends management;
  • Player profile: cards, decks, level, rank, campaign progress, etc.;
  • Automatic match making means when player hits the Play button, the server will automatically find other player with matching skill to start a multi-player game with;
  • Alternatively, player shall be able to start a game with his/her friends, of course;
  • Chat and world channel chat.

It definitely will be a very HUGE story. But only basic features will be implemented at the initial game launch. Players of 100-200 is the target number to be aimed at.

Improve font rendering

  1. Font replacement for certain char set (alphabets, numerical digits, etc.);
  2. Visually "High DPI" fonts which basically renders down-scaled glyphs, for sharper/higher visual quality;
  3. Additional effects like outlining, shadowing, etc. Two approaches: A. directly import pre-rendered font sprites with these effects to replace certain chars; B. Employ Valve technique to render them in a custom fragment shader.

Implement Replay (crude version)

For a crude implementation, one may just write out the serialized form of commands into a file on disk, along with the initial parameters of a game (decks, hero, random seed).

Replay the written replay file in Console.

Optimize the command execution.

Before doing the actual task, either make some benchmarks or use profiling tools;
Prioritize the maintainability and usability of the public interface of behavior system.

Tidy up the BehaviorList public interface

BaseCard.BehaviorList currently has IList interface implemented, but for modding purpose this interface shall not be exposed publicly. Change it to a readonly collection.

Tsukkomi (gossip) system

The system will let the card (characters) chat with each other.

The detailed design is to be determined.

Show Special Mark to Card UI

Similar to MTG, sometimes it's necessary to show some special mark on Card. For example, poison mark.
It can be used to present a 2nd resource, or a dot.

Implement browsing Library and Graveyard pile

Since new behaviors may possibly need to ask the player select targets from library/graveyard, UI should be implemented to allow such an action;
Also the graveyard shall be inspect-able by all players at any time during a game.

Implement hand card cap of 7

UI needs to be implemented to let player discard cards over the cap;
And the cap shall be modifiable by behaviors.

Implement Local trigger

Local trigger shall be implemented for PlayCard, DrawCard, DealDamageToCard, Kill, Summon, AddBehavior and RemoveBehavior commands (which has a clear target). Local triggers are triggered only for those target cards so that writing new behaviors could be easier.

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.