chamons / arenags Goto Github PK
View Code? Open in Web Editor NEWArena: Gunpowder and Sorcery
License: MIT License
Arena: Gunpowder and Sorcery
License: MIT License
Instead of jerking.
MapScripts?
A multitude of tiles / arenas / decorations.
If a view is not invalidated, no reason to re-draw it. We can just return the view's surface.
We should animate the following at least:
And possibly the following
We are doing at least one dictionary lookup, since we don't know the theme until paint.
If we restructured things, this could be more efficient.
MapTileVariants is looking up the byte [] in a dictionary for every cell. This isn't super fast.
However, since the mapview gets a "new" map every draw, and does not know if it has changed or not, it is hard to safely do much faster without getting ugly.
We should improve this if it becomes a bottleneck.
Some reduced ct cost.
Some happen later and ct doesn't recharge until done.
Can you use while recharging?
Bleed
Slow
Review all usages of static.
Right now we have ugliness like this:
Skill skill = character.Skills.First (x => x.ID == script.SkillID);
state = state.WithReplaceCharacter (character.WithReplaceSkill (skill.WithCooldownReduced ()));
character = state.UpdateCharacterReference (character);
skill = character.UpdateSkillReference (skill);
if (!skill.UnderCooldown)
{
state = state.WithRemovedScript (script);
if (skill.Resources.RechargedAmmoOnCooldown && skill.Resources.CurrentAmmo < skill.Resources.MaxAmmo)
{
state = state.WithReplaceCharacter (character.WithReplaceSkill (skill.WithIncrementedAmmo ()));
character = state.UpdateCharacterReference (character);
skill = character.UpdateSkillReference (skill);
if (skill.Resources.CurrentAmmo < skill.Resources.MaxAmmo)
{
state = state.WithReplaceCharacter (character.WithReplaceSkill (skill.WithCooldownSet ()));
skill = character.UpdateSkillReference (skill);
character = state.UpdateCharacterReference (character);
state = state.WithAddedScript (Generator.CreateCooldownScript (0, character, skill));
}
}
}
with the root of the problem being stale references to characters / skills after the game state mutates.
This is ugly, error prone, and almost worst than if it was all mutable.
The plan is as follows:
Some skills want you to be able to go diagonal like movement and moveanddamage, but int ranges don't work there.
In addition to the ammo/cd system, should we have secondary resources systems?
How wasteful is the immutable gamestate?
How many GCs are we running when you run across the room?
Since there are no bump attacks, for basic interactions we'll need
Pool that recharges every turn.
We'll need enemies to chase the player.
We have test code like this:
state = state.WithEnemies (state.Enemies.Select (x => x.WithAdditionalCT (Time.CTNededForAction)).ToImmutableList ());
closest = state.Enemies.First (x => x.ID == closest.ID);
Where we have a enemy of question, update the world, and have to re-get them to do stuff. If we forget, we get stale data. This is terrible.
We need to resurface all Skill and Physics APIs to take an actor ID, not the reference itself. We also need nice APIs on GameState to look up via this ID.
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.