jdis / jdisgames-2020 Goto Github PK
View Code? Open in Web Editor NEWLe jeu utilisé pour la compétition d'I.A. JDISGames 2020!
Le jeu utilisé pour la compétition d'I.A. JDISGames 2020!
README real time stats badges are currently broken because they rely on GitLab artifacts urls. Gonna have to figure out how to get the artifacts from GitHub actions. (Also the badges are not event generated right now)
tank purchase
set target
set destination
shoot
collisions
hp regen
débris
respawn after death
time corrections
score
experience -> upgrade tokens
main and secondary game
team registration
scoreboard
frontend
les autres upgrades ont des diminuting returns, mais pas le fire rate (c'est le même problème que le Cooldown reduction, passer de 0% CDR à 20%CDR donne un moins bon résultat que de passer de 20%CDR à 40%CDR, même si les deux sont un bon de 20%CDR)
Présentement, fabric est téléchargé par le client via une balise script dans ./lib/diep_io_web/templates/page/spectate.html.leex`. Il faudrait plutôt l'installer comme dépendance npm afin de centraliser toutes les dépendances au même endroit.
En ce moment rien ne garantit le format des actions envoyées au serveur par les bots. En cas d'action invalide, le process du channel lève une ArgumentError
et plante.
Il faudrait au moins valider le format des actions dans les clients, mais idéalement dans le serveur aussi de façon à pouvoir retourner une erreur claire.
Augmente la portée de chaque tir
On pourrait aussi avoir projectile speed?
Notre implémentation homemade des channels leak pas mal de détails d'implémentation dans les autres couches. Il y a un risque que ça nous complique la vie si on doit faire des quick fixes dans le starter pack pendant la compé.
Je propose de réusiner ça un peu pour que ça ressemble plus à la lib JS.
Gettxt est setup dans le projet mais n'est pas utilisé. Il faudrait l'enlever pour réduire la charge de maintenance.
pour la fin de la journée. Le scoreboard devrait être accessible par les admins, mais pas les autres
The real time constraint for broadcast standard_deviation currently fails. I suspect this is because of the recent decoupling of game logic tick rate and client update rate.
Since client broadcasts are currently emitted by the gameloop, the client update rate can only be respected if it is a divisor of the game logic tick rate.
We should probably use separate processes for handling these two loops.
Some collision tests fail with specific seeds:
284189
18:05:40.441 [info] Already up
Excluding tags: [:RT]
..................................................................................
1) test handle_collisions/1 does not decrease hp of tank hit by it's own projectile (GameStateTest)
test/diep_io/core/game_state_test.exs:217
Assertion with == failed
code: assert Map.fetch!(updated_game_state.tanks(), @user_id) == tank
left: %Diep.Io.Core.Tank{body_damage: 20, cannon_angle: -132.84216689386466, cooldown: 25, destination: nil, fire_rate: 25, has_died: false, hp_regen: 0.4, id: 420, max_hp: 100, name: "SomeUsername", position: {7851, 8412}, projectile_damage: 20, speed: 10, target: {2411, 2546}, upgrade_levels: %{body_damage: 0, fire_rate: 0, hp_regen: 0, max_hp: 0, projectile_damage: 0, speed: 0}, current_hp: 90, experience: 25, score: 25, upgrade_tokens: 2}
right: %Diep.Io.Core.Tank{body_damage: 20, cannon_angle: -132.84216689386466, cooldown: 25, destination: nil, fire_rate: 25, has_died: false, hp_regen: 0.4, id: 420, max_hp: 100, name: "SomeUsername", position: {7851, 8412}, projectile_damage: 20, speed: 10, target: {2411, 2546}, upgrade_levels: %{body_damage: 0, fire_rate: 0, hp_regen: 0, max_hp: 0, projectile_damage: 0, speed: 0}, current_hp: 100, experience: 0, score: 0, upgrade_tokens: 0}
stacktrace:
test/diep_io/core/game_state_test.exs:226: (test)
................................................................................
Finished in 2.5 seconds
165 tests, 1 failure, 2 excluded
Randomized with seed 284189
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
440815
08:24:44.060 [info] Already up
Excluding tags: [:RT]
......................................................................................
1) test handle_collisions/1 decreases hp of all tanks hit by projectiles (GameStateTest)
test/diep_io/core/game_state_test.exs:208
Assertion with == failed
code: assert Map.fetch!(updated_game_state.tanks(), tank.id()).current_hp() == Tank.hit(tank, tank.projectile_damage()).current_hp()
left: 70
right: 80
stacktrace:
test/diep_io/core/game_state_test.exs:213: (test)
............................................................................
Finished in 2.3 seconds
165 tests, 1 failure, 2 excluded
Randomized with seed 440815
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
795773
08:28:54.965 [info] Already up
Excluding tags: [:RT]
......................................................................................
1) test handle_collisions/1 does not decrease hp of tank hit by it's own projectile (GameStateTest)
test/diep_io/core/game_state_test.exs:217
Assertion with == failed
code: assert Map.fetch!(updated_game_state.tanks(), @user_id) == tank
left: %Diep.Io.Core.Tank{body_damage: 20, cannon_angle: 173.92307439303102, cooldown: 25, destination: nil, experience: 0, fire_rate: 25, has_died: false, hp_regen: 0.4, id: 420, max_hp: 100, name: "SomeUsername", position: {6958, 7870}, projectile_damage: 20, score: 0, speed: 10, target: {5070, 8071}, upgrade_levels: %{body_damage: 0, fire_rate: 0, hp_regen: 0, max_hp: 0, projectile_damage: 0, speed: 0}, upgrade_tokens: 0, current_hp: 90}
right: %Diep.Io.Core.Tank{body_damage: 20, cannon_angle: 173.92307439303102, cooldown: 25, destination: nil, experience: 0, fire_rate: 25, has_died: false, hp_regen: 0.4, id: 420, max_hp: 100, name: "SomeUsername", position: {6958, 7870}, projectile_damage: 20, score: 0, speed: 10, target: {5070, 8071}, upgrade_levels: %{body_damage: 0, fire_rate: 0, hp_regen: 0, max_hp: 0, projectile_damage: 0, speed: 0}, upgrade_tokens: 0, current_hp: 100}
stacktrace:
test/diep_io/core/game_state_test.exs:226: (test)
............................................................................
Finished in 2.3 seconds
165 tests, 1 failure, 2 excluded
Randomized with seed 795773
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
Le problème est dans entity grid, on considère seulement la cell qui contient directement l'entité et les 9 cells directement adjacentes. La hot zone est beaucoup plus grosse que ça, donc si on est sur le bord de la hot zone, on est pas considéré par l'algo de collision.
Il faudrait modifier l'algo de construction de la grille d'entités pour supporter des entités qui peuvent être plus grandes qu'une cellule.
Ajouter un système de "hot zone"/roi de la montagne.
Idées d'implémentation:
chaque bot a besoin d'un bon readme
Right now on seed des users bidons sans nom précis, ça va prendre un mécanisme pour inscrire des users avec des bons nom de team et leur partager leur secret key
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.