Code Monkey home page Code Monkey logo

agar.ia3d's Introduction

Agar.ia 3D

Agar.ia est un jeu vidéo développé en C++ par l'association PC[i], une version de Agar.io destiné a des IA

Build linux Build Windows

Installation

Linux

  1. Assurez-vous d'être à jour :

    sudo apt update
    sudo apt upgrade
  2. Installez les dépendances :

    sudo apt install make g++
    sudo apt install qtchooser
    sudo apt install qt5-default qtmultimedia5-dev build-essential freeglut3-dev
  3. Récupérez le code :

    git clone https://github.com/pci-ua/Agar.ia3D.git
    cd Agar.ia3D/
  4. Compilez le programme :

    qmake
    make

Windows

En préparation

Création de votre IA

Pour créer le programme de votre IA, vous pouvez créer dans le dossier /Intelligence un joueur soit en partant de zéro, soit en partant d'un modèle déjà éxistant :

  • Tay : Une IA parfaite pour débuter tranquillement !
    Vous avez juste besoin d'écrire votre code dans le fichier Tay.cc toutes les informations sont directements misent dans ce fichier.

  • Indila : Un pattern d'IA plus pousser et permissif.
    Si vous avez de bonne base en C++ et que la programmation orienté objet ne vous fait pas peur, ce template est fait pour vous! En effet vous trouverez dans Indila.cc et dans Indila.hh un code qui n'attend que votre implémentation, toutes les indications sur les prérequis sont à l'interrieur de ces dernier!

Contribuer

Les contributions sont pour l'instant réservé aux membres de l'association PC[i], n'hésitez pas à nous rejoindre !

License

Pour l'instant aucune utilisiation (qu'elle soit personnel ou non,commercial ou non)

agar.ia3d's People

Contributors

massal-guillaume avatar nguenier avatar pc-i avatar strategfirst avatar vavang avatar

Watchers

 avatar  avatar

agar.ia3d's Issues

Coloration du leaderboard final

Il faudrait coloré le classement final des joueurs de la sorte :

  • le premier en dorée
  • le second en argent
  • le troisème en bronze
  • le dernier en rouge foncé
  • soit-même en teal sauf si premier ou dernier au quel cas or et rouge sont prioritaire

Ajout d'une texture pour le sol

Le sol est actuellement transparent, ce qui peut porté à confusion !

Il faudrait donc créé un seul avec une texture ou une simple couleur au minimum

_Si texture elle doit évidemment être légère et libre de droit _

Revu du code

Une revu complète du code avec comme objectif :

  • Ajout de commentaire
  • Retrait de code inutile
  • Optimisation
  • Retrait des warnings et éventuels erreurs

En vu d'une release

BUG - Orientation

Décrivez votre problème
Pendant le jeu la sphere ne se dirige pas exactement vers le curseur de la souris

Indiquez votre configuration
Debian 10

Information(s) supplémentaire(s)
Le bug ne doit pas être uniquement au niveau de la souris mais plus haut dans le code ce qui impact le comportement des IA aussi

Il faudrait probablement reprendre cette partie du code et la schématisé de bout en bout (repère et changement de repère etc)

Fail Build Windows

Pour l'instant le projet build sous Windows en local et ceux tant que vous êtes à jour et que vous n'avez pas une installation très spécifique et assez hasardeuse.
Mais pour autant la compilation sur GitHub ne fonctionne pas : https://github.com/pci-ua/Agar.ia3D/runs/2878189625

Le problème étant que :
Lors de la compilation make est appelé dans un shell cmd
mais ce shell est fort probablement créé depuis un bash.
Mais lorsque des commandes sont lancé par make via le makefile, ces dernières sont éxécuté dans un terminal bash et non cmd
Causant l'arrêt du code pour erreur de syntaxe vu que sous les deux shell la syntaxe des commandes sont différentes

En effet lorsque la ligne :

  if not exist build ( mkdir "build" ) ;

est éxécuté par make, sur github il y a en retour :

/usr/bin/bash: -c: line 0: syntax error near unexpected token `('
/usr/bin/bash: -c: line 0: `if not exist build ( mkdir "build" ) ;'

Qui est exactement l'erreur que l'on as lorsque l'on met dans un fichier :

  if not exist build ( mkdir "build" ) ;

et que l'on execute :

cat file.sh | bash

Et ceux malgré que dans le fichier de workflow github il est bien précisé que le shell doit être cmd
et aussi lorsque l'on éxécute une commande de vérification en dehors du makefile on peut vérifié qu'on est bien dans un terminal cmd et non bash

BUG - Deprecated painengine

Décrivez votre problème
Une dépendance du projet utilise une fonction déprécié ce qui entraine l'erreur suivante : QWidget::paintEngine: Should no longer be called
Affichier dans la sortie standard

Il faudrait savoir de quel code il s'agit et vois si c'est corrigeable

BUG - Liaison événements Qt

Décrivez votre problème
Le programme ne compile pas et affiche sur la sortie standard d'erreur :

main.cpp:40:59:   required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:262:74: error: no matching function for call to ‘QObject::connect(const Object*&, void (Partie::*&)(Data), const Object*&, void (*&)(Data), Qt::ConnectionType)’
         return connect(sender, signal, sender, slot, Qt::DirectConnection);

C'est du à la tentative de liaison entre fin de partie et déclenchement étape 3

Indiquez votre configuration
La configuration n'a pas d'importance ici

Pour reproduire

  1. Cloner le repo
  2. Se rendre sur la branche AjoutMenu
  3. qmake puis make

Comportement attendu
Que ça compile !

Capture(s) d'écran(s)
image

Information(s) supplémentaire(s)
Le code en question, dans main.cpp

void Etape2_Jeu(PlayerData pd) {
        // Création de la partie
        std::vector<Joueur*> v;
        for(int i=0;i<7;i++) {
                v.push_back(new IPA());
                v.push_back(new Tay());
                v.push_back(new Indila());
        }
        std::cout << pd.PlayerName.toStdString() << std::endl;
        p = new Partie(v,4800,1020);

        QObject::connect(p, &Partie::PartieTermine, &Etape3_Recap);

        InitialisationRendu(0,nullptr);
}

Bouton "relancer"

Ajout d'un bouton pour relancer dans le menu de fin
Ce dernier doit relancer une partie différente avec les mêmes paramtères !

Graphique d'évolution de la partie

Il faudrait toutes les X frames de jeu enregistré une partie des informations
puis lors de l'écran final restitué les données sous formes d'un graphe d'évolution des masses au fur et à mesure de la partie

BUG - Rendu visuel menu

Décrivez votre problème
La vidéo passe derrière les éléments du menu mais ces derniers ont un background qui masque la vidéo à certains endroits et c'est génants, notemment et surtout à travers l'image du logo qui est un PNG, mais qui à cause de la manière dont est fait le rendu, la transparence est remplacer par un fond blanch

Indiquez votre configuration
Linux (Debian 10)

Pour reproduire
Lancer le jeu, est dès le menu, via le code disponible ici : https://github.com/pci-ua/Agar.ia3D/tree/0750a01c1defebb188c24a9ceeb8be6ee3a40568

Comportement attendu
Il faudrait avoirs un menu avec un fond transparent et non noir !

Capture(s) d'écran(s)
image

Immobilisation

Il est possible de s'arrété en positionnant le curseur au millieux de la fenêtre,
ce qui n'est pas souhaitable !

Dans le cas ou le curseur serait parfaitement au centre on désirs que le joueur continu de se déplacer dans le dernier sens connu

Double input

Le système avec appuis clavier est toujours actif !
Malgré que l'on soit passer sur un mouvement à la souris !

Ce qui permet d'avoirs des mouvements ralenti / accéléré ou étrange

Il faudrais désactivé cettes fonctionnalités

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.