IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

[WEJV5] Balls & Roll [Projet en cours]


Sujet :

Projets

  1. #1
    Membre éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 386
    Points : 1 164
    Points
    1 164
    Par défaut [WEJV5] Balls & Roll
    Bonjour tout le monde,

    Alors pour cette année j'ai une idée qui me trotte dans la tête depuis un bout de temps : faire un fps en multi-vue (3D iso, vue de dessus, raycasting, ...); pour du multi-joueur ! Forcement c'est un peut gros pour tenir en 2 jours de dev
    Je me suis juste dit que je pouvais profiter de la fin de semaine pour faire un petit proto.
    Après être partie à l'arrache et m’être casser les dents sur le réseau vendredi soir je me suis poser pour faire un plan de travail plus réaliste :

    - on se limite à une vue de dessus
    - pas de multi joueur
    - gameplay de base
    - pas d'effet graphique de fous
    - on se limitera a de la géométrie pour les graphismes
    - collisions de base (rectangles/rectangle et disque/disque)

    Concrètement : d'ici ce soir je compte avoir une version dans laquelle on peu se déplacer sur une map avec des obstacles aléatoires, et cibler des bots immobiles qui jouerons avec nous.

    Demain, si tout va bien, je rajoute la gestion des victoires/défaites, et si possible une IA pour les bots.

    Si il reste du temps, je tenterai une vue 3D iso ... ou des powerups ...

    Pour les détailles techniques, ce weekend, je code en Java SE, avec la librairie standard et c'est tout. (oui ca limite pas mal les possibilités)

    [EDIT] : première version interactive : http://forthx.free.fr/ballsnroll.jar

    On peut se deplacer avec Z, Q, S, D, quitter avec Echap et afficher le score avec "²" (au dessus de tab sur nos clavier francais).

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 386
    Points : 1 164
    Points
    1 164
    Par défaut
    rapide mise a jour : voila en image a quoi ca ressemble pour le moment.
    Nom : br2.png
Affichages : 242
Taille : 15,3 Ko

    c'est "jouable" mais comme c'est un proto (et que ca risque de le rester ) il manque encore plein de truc (menu, mode de jeux, powerups, ...).
    Le respawn est immédiat, et peut occasionnellement envoyer le joueur sur un autre joueur ... (hou le gros bug! )

    Ca manque cruellement d'ia ! (je m'y met !)

    http://forthx.free.fr/ballsnroll1.jar

  3. #3
    Membre émérite Avatar de Cirrus Minor
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2014
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2014
    Messages : 953
    Points : 2 615
    Points
    2 615
    Par défaut
    J'ai essayé la démo.
    Et bien, c'est fluide, je me suis baladé, j'ai crevé tout le monde jusqu'à ne plus avoir de munitions, ça marche bien !
    Tu as la bonne base pour en faire un jeu multijoueur si tu te décides à le continuer.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 386
    Points : 1 164
    Points
    1 164
    Par défaut
    Et voici la version final du weekend, ca donne un petit proto rigolo, les bots sont un peut stupides mais ca met l'ambiance.
    Au niveau des bugs, hormis les bots un peut sauvages, on a des collisions imprécises (mais globalement ça donne le change) un risque de respawn sur une case occupée par un joueur, et un risque existe de se retrouver encerclé par des murs.

    Pour exécuter le jeu, vous aurez besoin de java (1.7 mini).



    Je fait quelques mise en formes des sources, je compte les rendre accessibles.

    Comme prévu je suis parti de peu : j'ai utilisé un template (présenté ci-dessous; je l'ai écrit pour java4k en 2014) qui permet de dessiner dans une fenêtre a ~60 fps et intercepter les touches clavier.
    J'ai bien du coder 9h samedi et 8h dimanche on peut facilement ajouter 1h de réflexion papier .

    En résumé, j'ai du :
    - faire un système de gestion de commande
    - définir une UI sommaire et un ordre d'affichage
    - faire un système de gestion de collision (joueur/projectile/obstacles de carte)
    - définir un affichage centré sur le joueur
    - définir un "joueur" et son comportement (joueur local contrôlé par le joueur; bot contrôlé par l'ordi)
    - définir un projectile et son comportement
    - définir la carte
    - faire marcher tout ca ensemble

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.image.BufferedImage;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.JFrame;
     
    /*
     * game template Aug 2014
     * @author	Mikael Guillemot (alias Forthx)
     */
     
    public class J2DTemplate extends JFrame implements Runnable, KeyListener {
     
    	// resolution de la fenetre de jeu
    	private final int W = 200;
    	private final int H = 70;
     
    	private static final long serialVersionUID = 1L;
    	private final Color BLACK = new Color(0x0);
    	private volatile List<Integer> keys = new ArrayList<Integer>();
    	private long timer;
    	private Graphics2D g, buffer_g;
    	private BufferedImage buffer;
     
    	private void gameloop(Graphics2D image) {
    		// exemple de boucle de jeu
    		image.setColor(Color.white);
    		image.drawString("touche(s) clavier : " + keys.toString(), 10, 40);
    	}
     
    	public J2DTemplate() {
    		this.setSize(W, H);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setResizable(false);
    		this.addKeyListener(this);
    		this.setVisible(true);
    		buffer = new BufferedImage(W, H, BufferedImage.TYPE_INT_ARGB);
    		g = (Graphics2D) getGraphics();
    		buffer_g = (Graphics2D) buffer.getGraphics();
    	}
     
    	public static void main(String[] args) {
    		new Thread(new J2DTemplate()).start();
    	}
     
    	public void run() {
    		while (true) {
    			buffer_g.setColor(BLACK);
    			buffer_g.fillRect(0, 0, 800, 600);
    			timer = System.nanoTime();
    			gameloop(buffer_g);
    			g.drawImage(buffer, 0, 0, this);
    			timer += 16000000; // 62 fps
    			while (System.nanoTime() < timer)
    				Thread.yield();
    		}
    	}
     
    	@Override
    	public void keyTyped(KeyEvent e) {
    	}
     
    	@Override
    	public void keyPressed(KeyEvent e) {
    		if (!keys.contains(e.getKeyCode()))
    			keys.add(e.getKeyCode());
    	}
     
    	@Override
    	public void keyReleased(KeyEvent e) {
    		int index = keys.indexOf(e.getKeyCode());
    		if (index >= 0)
    			keys.remove(index);
    	}
    }

  5. #5
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Chez moi c'est extrêmement lent. Mais j'ai un vieil ordi (acheté en 2006).

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 386
    Points : 1 164
    Points
    1 164
    Par défaut
    C'est en effet pas optimisé pour la performance (c'est pas java, c'est le code ), sur mon i5 ça mange 20% a 25% du proc pour tourner en 62 fps. Et comme j'utilise que de la 2D ca devrai marcher avec n’importe quelle carte graphique.

    Un problème est que je n'ai pas séparé la boucle de jeu de la boucle d'affichage (on teste les collisions de tout les objets 60 fois par seconde ) et je ne parle pas de l'IA des bots

    donc oui c'est pas forcement délirent. en 2006 on c’était les premiers core 2 duo non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rolling Ball Algorithm
    Par bahiatoon dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/05/2008, 09h27
  2. crash recovery et roll forward
    Par Ni(o dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/07/2004, 15h16
  3. Impact de balles, trace de pas... Comment faire???
    Par supergrey dans le forum DirectX
    Réponses: 1
    Dernier message: 15/07/2004, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo