hearthsim / joust Goto Github PK
View Code? Open in Web Editor NEW🍿 Hearthstone replays in your browser.
Home Page: https://hearthsim.info/joust/
🍿 Hearthstone replays in your browser.
Home Page: https://hearthsim.info/joust/
To use Joust as a kettle frontend, we'll need support for sending and receiving emotes. I'm also thinking of adventure boss emotes.
For now let's not worry about the actual packets, but I'd like us to add support for a speech bubble + sound accompanying it.
:)
Thoughts on card rendering and game tags
CLASS
(frame color)PREMIUM
(golden cards - "real" golden mode + "simple" golden mode, eg. golden frame with no animations) - HearthSim/Sunwell#6RARITY
(gem)CARD_SET
(CORE
is no gem)RACE
COST
ATK
, HEALTH
, DURABILITY
SILENCED
(text crossed out)ELITE
(dragon)SPELLS_COST_HEALTH
- HearthSim/Sunwell#5SHIFTING
(Shifter Zerus) - HearthSim/Sunwell#11CURRENT_HEROPOWER_DAMAGE_BONUS
(from Fallen Hero)HERO_POWER_DOUBLE
SPELLPOWER_DOUBLE
RECEIVES_DOUBLE_SPELLDAMAGE_BONUS
(Arcane Blast)COMBO
(with COMBO_ACTIVE
on the player)POWERED_UP
(orange glow)EVIL_GLOW
(Chromaggus/Rafaam... player + opponent)Tracking in #7
DISPLAYED_CREATOR
is a thingTO_BE_DESTROYED
cardsWhen it's played by the opponent, display it on the left (like HS). When it's played by the player, display it on the right.
Also figure out where to serve them from.
This will implement "reconnect" feature for replays. If there is more than one game in a replay, and the second game has the same id attribute as the first game, the second game is considered to "continue" the first one.
The button should be larger, have more padding and be styled a little more like Hearthstone (bold black on yellow/green? Experimentation needed)
We should figure out the licenses for:
Using @andburn's card renderer.
Allow Replay playback to be paused and/or stepped forward manually:
Basically some actions are a bit complicated and it's easy to miss what happened, so it would be nice to be able to pause.
In replay mode, the "End Turn" button should become a "Next Turn" button which immediately skips to the next turn.
I'm curious to try out various approaches to that. Either making the current hero glow, or give the current player's side of the battlefield a different background color...
The timeline should be colored by which players turn it is.
If a default side is not specified, joust should look for which player has known cards in hand at the beginning of the game.
Linked with #53, not sure on best approach to this. Some sort of calculation based on the number of characters, maybe?
Once we have clearer delimitations between the zones we can prototype with various styles (eg. different background colors for the hand so it's clearly "outside" the rest of the field).
Using TypeScript we can actually make the card art components extend from the base component. This would also mean we have a decent place for the texture lookup, which is currently in InPlayCardArt
(it can't go into CardArt
because of the dimensions wrapping).
There's a bit too much prop passing going on right now in those components.
Instead of always skipping to the start of the previous turn, skip to the start of the current one if the progress (of the current turn) is above a certain threshold.
The threshold might need to be time, rather than percent based. Otherwise you might get stuck on a turn that only has very few actions. I.e. the replay progresses past the threshold before the user has had time to click a second time.
Currently they look like normal mana crystals.
babel-loader
, babel-preset-react
(what about babel-preset-es2015
?)babel-loader
to webpack.config.js
commonjs
module resolution in tsconfig.json
Not working with Kidnapper - I thought I had implemented this?
"Created by Unstable Portal"
Should appear in two cases:
Scaling the whole card component with a css transform seems like best solution. The percentage based text alignment isn't very accurate anyway.
Depends somewhat on the decision of #51.
For reasons. :)
It's not a tag, it's when they have NUM_TURNS_IN_PLAY == 0 and no charge tag.
There should be a progress bar at the top allowing you to quickly seek to other parts of the game.
The way the TRIGGER_VISUAL tag works:
Joust needs to be able to provide a way to easily query an event log and progress through it.
Looking at this for example: https://hsreplay.net/joust/replay/c6d5b2f2-2591-4c67-aa07-97726df2888c
We could see:
There's a lot more we can do but the basic log would be good first.
They should have the basic shape from Hearthstone at least.
$ gulp compile
[15:13:19] Using gulpfile ~/git_projects/joust/gulpfile.js
[15:13:19] Starting 'compile:scripts'...
[15:13:19] Finished 'compile:scripts' after 21 ms
[15:13:19] Starting 'compile:styles'...
[15:13:19] Finished 'compile:styles' after 6.43 ms
[15:13:19] Starting 'html'...
[15:13:19] Finished 'html' after 1.49 ms
[15:13:19] Starting 'compile'...
[15:13:19] Finished 'compile' after 2.1 μs
ts/components/TwoPlayerGame.tsx(17,31): error TS2307: Cannot find module 'react-dnd-html5-backend'.
ts/components/welcome/HSReplay.tsx(4,35): error TS2307: Cannot find module 'filereader-stream'.
ts/components/welcome/Kettle.tsx(4,25): error TS2307: Cannot find module 'is-node'.
[15:13:21] TypeScript: 3 semantic errors
[15:13:21] TypeScript: emit succeeded (with errors)
New crystals, removed crystals should transition by opacity as they appear/disappear.
Locked crystals should transition from/to grey to their new color when they update (#22)
Probably obvious, but I lost 5 minutes googling why I had an exception when running gulp
You need to install coffee-script first by running npm install -g coffee-script
CANT_BE_DAMAGED
(immune)ELITE
(dragon)NUM_TURNS_IN_PLAY
+ CHARGE
(for summoning sickness)DIVINE_SHIELD
FROZEN
TAUNT
STEALTH
TAUNT
+ STEALTH
(#99)SILENCED
ENRAGED
CANT_BE_TARGETED_BY_ABILITIES
(Chromatic Dragonkin)HEAVILY_ARMORED
(Animated Armor effect for League adventure)TRIGGER_VISUAL
DEATHRATTLE
INSPIRE
POISONOUS
Like Hearthstone, the deck should appear as a thick stack of cards that gets thinner as the deck itself thins.
There should be a skull-like graveyard button near where the name of the player is right now. Clicking it would display the graveyard as a popup list of cards over the rest of the board state, graying out the rest of the game (like how the sidebar hovers work in hearthstone).
If the replay contains rank
or legendRank
player attributes.
If an entity is known, even if it's unrevealed (eg. in the deck or in the opponent's hand), we should have some form of interaction which lets the user see those.
This abuses the fact that by the end of the game, we know more entities than at the beginning of the game. It also abuses various info leaks from the nature of the protocol. For the hand it's straightforward, for the deck, not so much. I'm thinking, when exploring the deck, we see a list of known cards and a "+ 20 more unknown cards".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.