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 :

[WE Jeux 3]Last Dungeon


Sujet :

Projets

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut [WE Jeux 3]Last Dungeon
    Bonjour,

    Pour le WE Jeux 3, nous seront une petite équipe constituée de :
    - 2 développeur C++11 : Sytten & Neckara ;
    - 1 Scripteur Lua ;
    - 1 GUI designer ;
    - 1 infographiste 3D.

    Nous avons pour but d'avancer un moteur de jeux se basant sur CEGUI, Irrlicht, Boost et la SFML qui permettra de créer des jeux en Lua. Moteur que nous avons commencé dans le cadre du projet Last Dungeon.

    Pour le moment nous n'avons travaillé que sur notre moteur et n'avons qu'un prototype en C++ du jeu final. Nous allons donc mettre à profit ce WE pour essayer de sortir une démo du jeu.

    Ce jeu sera, à l'issu du Week-end, un jeu jouable seul ou à plusieurs sur un même ordinateur. Le jeu sera similaire à un jeu de Go où il faut poser des pierres sur un plateau en entourant totalement les pierres adverses.

    Nous prévoyons donc le planning suivant :

    Vendredi :
    - Avancer au maximum le moteur (C++11) ;
    - Prendre en main les outils (Scripteur, designer ) ;

    Samedi :
    - Donner les consignes au scripteur et au designer ;
    - écrire la première "carte" (Scripteur) ;
    - créer les premières GUI nécessaire (un menu, création de "salon" etc. ) (Designer);
    - Modifier le moteur en fonction des besoins (C++11).

    Dimanche :
    - Finir (scripteur + designer );
    - Fournir une vidéo d'introduction (infographiste 3D);

    J'utiliserais donc ce sujet pour vous informer de nos progressions

    Progression :

    Notes de Sytten
    Notes de Neckara

    Jour 1 :
    - 10h44 : écriture du sujet dans la rubrique jeux ;
    - 10h58 : écriture d'un parcours de dossiers avec boost et interfaçage avec Lua ( nécessaire pour la recherche de "map" ) ;
    Nécessité d'interfacer std::vector avec lua.
    Le temps passe très vite OO.
    - 11h54 : pause (va se faire tuer par sa soeur si le repas n'est pas prêt ) ;
    - 12h24 : fin de la pause, ajouts de meshs ;
    - 13h27 : mesh animé et fixe ( positionnement, rotation, éclairage, redimensionnement, déplacement, animation ) ;
    - 13h27 : réflexion pour la création de salons ;
    - 13h36 : fin de la réflexion, codage des salons ;
    - 15h15 : salon fini, salon simple sans réseau (mot de passe -joueurs et visiteurs-, visiteur, nombre de joueurs max, maître de salon, double-compte, modérateurs, état du salon, etc. ) ;
    - 15h29 : dialogue avec sytten ;
    - 15h37 : pause grignotage ;
    - 15h48 : contact scripteur et designer ;
    - 16h10 : résolution d'un problème avec CELayoutEditor pour le designer.
    Le designer est maintenant en train de se taper un délire en créant des petits boutons .
    - 16h12 : collisions objets/souris, rendre visible/invisible un élément.
    - ? : Résolution d'un problème d'édition de skin avec le designer
    - 16h38 : rendre (in)visible un objet fini, poursuite avec collision sous/objets.
    - 16h53 : collision avec la souris fini, début des classes helper pour le jeux (groupes, pions, etc ? ) ;
    Plus beaucoup de temps, il faut encore compiler pour windows, et établir de manière précise les actions à faire pour le scripteur et le designer ainsi que revoir le salon pour "envoyer des événements" (non-nécessaire mais utile pour un mode "réseau") ;
    - 18h30 : Classes helpers finies (pawn, plinth, pawngroup), début de l'interfaçage avec Lua des classes précédantes ;
    - 19h03 :interfaçage presque fini, pause dîner ;
    - 21h38 : de retour, poursuite de l'interfaçage lua ;
    - 21h59 : interfaçage fini
    TOLUA_TEMPLATE_BIND est un peu bizarre pour les pointeurs (aucun espace à mettre entre le nom de la classe et '*') ;
    Rajout d'une méthode "fusion" dans GroupPawn.
    - 22h08 : début des écritures des instructions pour le scripteur et le gui designer.
    La compilation pour windows sera faite demain de bonne heure.

    Conclusion : Journée très rapide mais je pense qu'on est un petit peu en avance.
    Je préfère me coucher de bonne heure pour continuer à tête reposée la compilation et l'écriture des instructions.

    Jour 2 :
    - 5h00 : Première version du module audio terminé. Tests et corrections des bugs en cours
    - 6h30 : la flemme de se lever
    - 8h00 : j'ai réussi à trouver le courage
    - 8h55 : installation d'un environnement de compilation windows.
    - 10h : va chez le scripteur et le designer
    - 10h54 : petite LAN d'aom pour bien commencer la journée
    - 14h34 : On reprend les choses sérieuses, installation de l'environnement de développement pour le scripteur et compilation du projet.
    - 14h41 : pendant l'installation écriture des instructions pour le scripteur.
    - 15h58 : Compilation presque finie liblua51 manque, il faut la compiler pour windows !
    - 16h50 : Compilation de liblua51 finie, problème rencontré, make clean ne supprimais pas les .o on pouvait encore chercher longtemps pour comprendre comment une fonction non-utilisée pouvait ne pas être trouvé à l'édition des liens....
    - 16h58 : Compilation réussie, on ajoute les dll et on croise les doigts
    - 17h16 : Lancement du moteur correct \o/
    - 17h24 : Quelques problème avec CELayoutEditor pour créer ses propres éléments de gui, on repasse en mode LAN aom
    - 19h40 : Un petit tour à mac do et on se fait une revanche aom
    - 22h57 : fin de ma journée.

    Conclusion : On a profité un petit peu de la journée, mais cela ne devrait pas générer de retard du côté de la gui. Côté script, je ne pense pas qu'on aura fini demain.

    Jour 3 :

    - 9h40 : Je vais m'amuser un petit peu en créant une "carte minimale"
    - 10h38 : j'ai positionné les premier socles sur ma petite carte.
    Pour simplifier, j'ai désactivé le déplacement de la caméra et je me contente d'un placement "2D", je ne fait pas une carte compliquée.
    J'ai un FPS qui oscille entre 18 et 19 avec 9x9 socles
    Bon, je n'ai pas pris les socles "finaux" que l'infographiste avait fait je ne sais plus dans quels fichiers ils sont
    - 11h18 : Ajout des relations de voisinages entre les socles.
    - 12h14 : Ajout d'un petit texte + mise au centre du plateau.
    La police est horrible
    - 12h22 : Pause miam miam
    - 13h00 : Modification du moteur pour permettre une redirection des événements vers le "background" courant.
    - 13h28 : discutions mumble avec le scripteur et le designer
    - 13h34 : redirection des événements fini, je vais gérer les abandons et "passer son tour".
    - 14h11 : Il ne reste plus que la pose des pierres, recommencer une partie et la fin de partie (enlever les pierres "mortes" ).
    - 14h58 : correction d'un bug au niveau des doubles-clics de la souris, je continu la pose des pierres.
    - 16h05 : ToLua++ semble faire n'importe quoi avec les pointeurs je me prend une petite pause.
    - 17h13 : Fin de la pause, problème trouvé, tolua_cast tente de faire une copie incomplète au lieu de caster le pointeur ...''
    - 17h26 : On peut enfin poser des pions, il faut encore établir les règles pour savoir si on peut poser ou non ainsi que "manger des pions".
    Les pierres ne sont pas assez différenciées
    - 18h25 : Fusion des groupes réussi. Je continue avec la destruction de groupe
    - 19h21 : J'ai couru après un bug bête comme le monde destruction des groupes et comptages des points opérationnel.
    Manque :
    -> Règles de poses des pions
    -> rajouter des liberté lorsqu'un groupe est détruit
    -> Détruire les groupes lorsqu'on recommence une partie
    -> Détruire les groupes "inutiles" à la fin d'une partie + compter les zones vides .
    - 19h38 : Pause dîner.
    - 20h00 : On reprend le boulot je vais essayer de finir :
    -> règles de poses des pions Fait à 20h58
    -> rajout des libertés Fait à 20h35, bloqué plus d'une heure à cause de la fainéantise de QtCreator lors de la compilation !
    -> détruire les groupe lorsqu'on recommence une partie Fait à 21h09
    Je ferais le reste lundi ou mardi

    Conclusion :
    A l'issue de ce WE, on a réussi à avoir un prototype jouable à l'image de l'ancien prototype écrit entièrement en C++.
    Le nouveau prototype intègre en revanche un moteur assez complet niveau GUI et gestion des événements ce qui va nous permettre de finir le reste assez rapidement.
    Pour finir la première carte, il ne reste que le comptage des zones "vides" ainsi que le retrait des groupes "morts". Il faudra aussi que j'intègre la configuration de la caméra afin de permettre la création de carte plus complexes (là j'ai fait un plateau carré pour éviter d'utiliser la caméra mais le jeu reste en 3D).

    L'infographiste a presque fini une "vidéo d'introduction", et le designer a déjà créé quelques éléments de gui que je rajouterais d'ici mardi.

    Je pensais franchement pouvoir en faire plus mais, bien que les règles soient assez simple, l'implémentation des règles du Go est assez compliqué et conduit à quelques erreurs d'inattentions ce qui m'a fait perdre au total quelques heures. Sans compter un problème de "free(): invalid next size (fast)" dû à la fainéantise de QtCreator

    Bon, je vous joint ici le fichier lua du prototype ( je donnerais le moteur plus tard ). Je vous donnerais aussi un lien vers une nouvelle version quand j'aurais intégré le travail des autres membres.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Character designer /animator 2d
    Inscrit en
    Juillet 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Character designer /animator 2d
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 92
    Points : 99
    Points
    99
    Par défaut
    Hate de tester tout ca
    Ca sera donc votre premier jeu ?

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    En effet, ce sera notre premier jeu

  4. #4
    Membre régulier Avatar de Sytten
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 72
    Points : 76
    Points
    76
    Par défaut
    Jour 2:
    - 5h00 : Première version du module audio terminé. Tests et corrections des bugs en cours
    À toute erreur il y a une solution

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut Images
    Jour 3 :

    10h43
    Positionnement des socles


    17h26
    Pose des pierres


    Version "finale"


    Script de la version Lua :
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    Graphics = "datafiles/3D/";
    local player;
    local myRoot;
    local passing;
    local point_p1;
    local point_p2; -- komi
    local ending = true;
    players = { LD.SYSTEM.Player:new(), LD.SYSTEM.Player:new() };
    lastPlay = {nil, nil};
     
    function main()
        mw = LD.GUI.MainWindow:new("[Prototype]Last Dungeon, the best game ever !", 700, 700, true);
        LD.GUI.Gui:setHandler("OnEvent");
        device = mw:device();
     
        createBackground();
        color = LD.GUI.Color:new(0,0,255);
     
        mw:start("pvp", color);
     
    end
     
    function createBackground()
        bpvp = LD.GUI.Background:new("pvp");
        bpvp:setCallbackFunction("OnEventPvP");
        bpvp:setPrimaryCallbackFunction("OnPrimaryEventPvP");
     
        bquit = LD.GUI.Background:new("quit");
        bquit:setCallbackFunction("OnEventQuit");
     
    end
     
    function OnEventQuit(args)
     
        standEvent = tolua.cast(args,"const LD::SYSTEM::StandardEvent");
        if standEvent.name ~= "quit" then
            LD.GUI.MainWindow:instance():changeBackground("");
        end
    end
     
    function OnEventPvP(args)
        standEvent = tolua.cast(args,"const LD::SYSTEM::StandardEvent");
     
        if standEvent.name == "enter" then
            loadMap(9);
            loadGui();
            init();
        end
     
        if standEvent.name == "restart" then
            init();
        end
     
        if ending then
            return;
        end
     
        if standEvent.name == "pass" then
            pass();
        end
        if standEvent.name == "surrender" then
            surrender();
        end
    end
     
     
    function OnPrimaryEventPvP(args)
        event = tolua.cast(args,"const LD::SYSTEM::Event");
        if event:type() == "keyboard" then
            keyevent = tolua.cast(args,"const LD::SYSTEM::KeyboardEvent");
            if keyevent.keydown ~= true then
                -- p is for pass turn
                if keyevent.key == 80 then
                    sendEvent("pass");
                    return true;
                end
                -- a is for surrender
                if keyevent.key == 65 then
                    sendEvent("surrender");
                    return true;
                end
                -- r is for restart
                if keyevent.key == 82 then
                    sendEvent("restart");
                    return true;
                end
            end
        end
     
        if event:type() == "mouse" then
            mouseevent = tolua.cast(args,"const LD::SYSTEM::MouseEvent");
            if mouseevent:isLeft() and mouseevent:isDoubleClic() then
                x = mouseevent.x;
                y = mouseevent.y;
                element = LD.I3D.Element3D:getElementAtPosition(x,y);
                if element and element:type() == "plinth" then
                    plinth = LD.I3D.Plinth:toPlinth(element);
                    element:type();
                    element:type();
                    playOnPlinth(plinth);
                end
            end
        end
     
        return false;
    end
     
    function sendEvent(event)
        back = LD.GUI.MainWindow:instance():background();
        standevent = LD.SYSTEM.StandardEvent:new(back, event);
        back:postEvent(standevent);
    end
     
    function loadMap(size)
     
     
        ymax = 27 + 34;
        yoffset = 27;
        y = yoffset - (ymax - size*5)/2;
     
        xmax=  27 + 34;
        xoffset = 27;
        x = (xmax - size*5)/2 - xoffset;
     
        -- droite, haut, fond
        position = LD.I3D.V3Df(x,y,40);
        angle = LD.I3D.V3Df(270,0,270);
        socles = std.vector_LD__I3D__Plinth__:new();
        socles:resize(size*size);
        num = 0;
     
        for i = 1, size, 1 do
            position.y = y;
            for j = 1, size, 1 do
                socle = createPlinth(position, angle);
                socles[num] = socle;
                num = num + 1;
                addNeightBourg( socles, socle, i, j, size);
                position.y = position.y - 5;
            end
            position.x = position.x + 5
        end
     
        position:delete();
        angle:delete();
    end
     
    function createPlinth(position, angle)
     
     
        pl = LD.I3D.Plinth:new( Graphics .. "plinth.3ds", false);
        pl:setPosition( position );
        pl:setRotation( angle );
        return pl;
    end
     
    function addNeightBourg(socles, socle, i, j, size)
     
        if i ~= 1 then
            ti = i - 2;
            tj = j - 1;
            socle:addNeightBourg(socles[ti*size + tj]);
        end
     
        if j ~= 1 then
            ti = i - 1;
            tj = j - 2;
            socle:addNeightBourg(socles[ti*size + tj]);
        end
     
    end
     
    function loadGui()
        local schememan = CEGUI.SchemeManager:getSingleton();
        local fontman   = CEGUI.FontManager:getSingleton();
        local wmgr = CEGUI.WindowManager:getSingleton();
        schememan:create( "TaharezLook.scheme" );
        fontman:create( "DejaVuSans-10.font" );
        fontman:create( "Commonwealth-10.font" );
        myRoot = wmgr:createWindow( "TaharezLook/FrameWindow", "root" );
        CEGUI.System:getSingleton():setGUISheet( myRoot );
        myRoot:setPosition( CEGUI.UVector2(CEGUI.UDim(0.2,0),CEGUI.UDim(0,-10)));
        myRoot:setSize( CEGUI.UVector2(CEGUI.UDim(0.6,0),CEGUI.UDim(0,20)));
    end
     
    function getNextPlayer()
        passing = false;
        if player == 1 then
            player = 2;
        else
            player = 1;
        end
        setText("Player", "Player " .. player.. ", it's your turn");
    end
     
    do
        Score = "";
        Action = "";
        Player = "";
     
        function setText(type, text)
            if type == "Score" then
                Score = text;
            end
            if type == "Action" then
                Action = text;
            end
            if type == "Player" then
                Player = text;
            end
            myRoot:setText(Score .. " " .. Action .. " " .. Player);
        end
    end
     
    function pass()
        lastPlay[player] = nil;
        setText("Action", "Player " .. player .. "pass.");
        if passing then
            removeUselessPawn();
            endOfParty();
        else
            getNextPlayer();
            passing = true;
        end
    end
     
    function endOfParty()
        winner = 1;
        if point_p2 > point_p1 then
            winner = 2;
        end
        setText("Player", "Player " .. winner .. " win.");
    end
     
    function removeUselessPawn()
        -- todo
    end
     
    function init()
        LD.I3D.PawnGroup:removeAll();
        player = 0;
        getNextPlayer();
        point_p1 = 0;
        point_p2 = 7.5;
        passing = false;
        ending = false;
        setText("Score", point_p1 .. ":" .. point_p2);
        setText("Action", "Game start");
    end
     
    function surrender()
        if player == 2 then
            point_p2 = 0;
        else
            point_p1 = 0;
        end
        setText("Action", "Player " .. player .. " surrender.");
        endOfParty();
    end
     
    function OnEvent(args)
        event = tolua.cast(args,"const LD::SYSTEM::Event");
        back = LD.GUI.MainWindow:instance():background();
        return back:onEvent(event);
    end
     
    function playOnPlinth(plinth)
     
        -- droit de poser ?
        if not plinth:isEmpty() then
            return;
        end
     
        if lastPlay[player] ~= nil and lastPlay[player] == plinth then
            return;
        end
     
        neights = plinth:neigthbourg();
     
        ok = false
        table = {}
     
        for i=0,neights:size()-1,1 do
            if neights[i]:isEmpty() then
                ok = true
                break;
            else
                if neights[i]:pawn():player() == players[player] then --même joueur
                    if table[neights[i]:pawn():group()] == nil then
                        if neights[i]:pawn():group():freedom() > neights:size() - i then
                            ok = true;
                            break;
                        else
                            table[neights[i]:pawn():group()] = neights[i]:pawn():group():freedom() - 1;
                        end
                    else
                        if table[neights[i]:pawn():group()] > neights:size() - i then
                            ok = true;
                            break;
                        else
                            table[neights[i]:pawn():group()] = table[neights[i]:pawn():group()] - 1;
                        end
                    end
                else -- adversaire
                if table[neights[i]:pawn():group()] == nil then
                    if neights[i]:pawn():group():freedom() <= 1 then
                        ok = true;
                        break;
                    else
                        table[neights[i]:pawn():group()] = neights[i]:pawn():group():freedom() - 1;
                    end
                else
                    if table[neights[i]:pawn():group()] <= 1 then
                        ok = true;
                        break;
                    else
                        table[neights[i]:pawn():group()] = table[neights[i]:pawn():group()] - 1;
                    end
                end
                end
            end
        end
     
        if not ok then
            return
        end
     
        -- pose
        pawn = putPawn(plinth, player);
     
        -- add to groupe
        size = neights:size();
     
        for i=0,size-1,1 do
     
            if neights[i]:pawn() then
                pGroup = neights[i]:pawn():group():firstPlayer();
                pPawn = pawn:group():firstPlayer();
     
                if pGroup == pPawn then
                    pawn:group():fusion( neights[i]:pawn():group() );
                else
                    --destroy other group
                    if neights[i]:pawn():group():freedom() <= 0 then
                        point = pawn:group():eatGroup( neights[i]:pawn():group() );
                        if player == 1 then
                            point_p1 = point_p1 + point;
                        else
                            point_p2 = point_p2 + point;
                        end
                    end
                end
            end
        end
     
        -- mise à jour points
        setText("Score", point_p1 .. ":" .. point_p2);
     
        setText("Action", "Player " .. player .. " put a pawn.");
        getNextPlayer();
    end
     
    function putPawn(plinth, player)
        pawn = LD.I3D.Pawn:new(players[player], Graphics .. "pawn" .. player .. ".3ds");
        pawn:putOnPlinth(plinth);
        pawn:setParentE(plinth);
        lastPlay[player] = plinth;
        return pawn;
    end
     
    main()
    Images attachées Images attachées    

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Paysagiste/Métallier Serrurrier
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paysagiste/Métallier Serrurrier
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 6
    Points
    6
    Par défaut Détails de la progression des GUI
    En rouge: William Ground (GUIs creator)
    En vert: Mystogan98 (scripteur LUA)

    Jour 3:

    13h01: Lever tardif et petit dèj'. Je ne peut travailler le ventre vide
    13h00: Réveil et p'tit dèj. Essentiel pour une bonne journée de travail.
    13h30: Tentative de correction d'un bug avec CEED (ressources graphiques introuvable). Problème vite réglé, je n'avais pas créé le projet au bon endroit
    13h58: Je commence à travailler sérieusement: début de la création d'un GUI simple pour le scripteur.
    14h00: Après discution avec Neckara, tentative d'affichage du GUI du menu après la vidéo d'intro, écriture du script en LUA.
    14h25: Gui terminée. Transfert du GUI au scripteur LUA.
    14h30: Détails de ma progression sur Developpez.com (faut ben que je prévienne le bos ^^)
    14h40: Pause clope
    14h45: Cherche toujours à écrire ce script
    15h00: Tentative d'ajout de ressources pour CEED
    15h20: Tentative ratée, je passe en mode "détente" et je regarde le dernier JDG
    15h20: Besoin de me détendre. Une petite pause s'impose
    15h40: Reprise du travail, création de GUI additionnels
    15h42: On y retourne !
    16h00: demande d'aide à Neckara... Sans résultats.

    17h00: Petite pause. Une Lan avec mon frère, une à deux clope et un café.
    18h00: Reprise du travail. Création de GUIs supplémentaires.
    18h30 environ: Après plusieurs échecs consécutifs, j'abandonne les scripts pour aujourd'hui, et je ré-essayerais plus tard.
    18h50: Bug du logiciel, pertes des modèles de GUIs.
    Suite à un bug non-identifié, j'ai perdu les trois différents GUIs que j'avais créé Heureusement, j'ai pu récupérer l'un des trois, mais il faut que je re-créer les deux autres...
    19h35: Re-création des deux GUIs manquant terminée. Création de sauvegardes du travail dans un dossier Seafiles privé.
    19h45: Fin de la journée de travail (pour le moment). Possible reprise dans la soirée.
    22h00: J'ai commencé à appendre à programmer en language C. J'utilise pour l'instant la console Windows, mais je passerais assez vite (normalement) à une fenêtre.


    Jour 4:

    02h38: Après plus de 4h de travail pour apprendre le codage, je pète un petit câble et délire avec ça ^^ https://www.youtube.com/watch?v=2lvPrNGzM5Y
    02h40: Reprise du travail pour apprendre le codage en C.
    05h00: Petite pause pour se réveiller... Deux cafés et une clope
    06h10: Grâce à l'aide de mon frère, j'ai réussis à encoder un simple jeu "Plus ou moins" en console et en C. Mais, quelle galère ce fût !
    06h20: Ré-encodage du "Plus ou Moins" dans une version plus propre et ajout des plusieurs petites améliorations.
    06h45: Petite pause, LAN d'AOM et p'tit dèj'... Une nuit de codage, ça creuse !
    07h46: Reprise de la formation. Fin d'ajout des améliorations au "Plus ou Moins".
    08h30: Partis faire des courses. Jeu "Plus ou Moins" quasiment terminé.
    09h30: Retour à la maison, reprise du codage.
    11h00: Barbecue entre amis, arrêt du travail jusqu'à environ 17h00.
    17h00: Reprise du travail. Création de nouvelles GUIs additionnelles.
    17h10: Je m'écroule de s'ommeil. Je vais me reposer un peu...

    Jour 5:

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bon, je m'arrête ici pour ce week-end (ce qui ne m'empêchera pas de continuer à travailler dessus mardi ).

    J'ajouterais la journée 3 du designer et du scripteur au premier post lundi ou mardi.

    J'envoie juste un dernier mail à l'infographiste

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Paysagiste/Métallier Serrurrier
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Paysagiste/Métallier Serrurrier
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 6
    Points
    6
    Par défaut
    Oki, pas de sushi ^^

  9. #9
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Excusez-moi, mais en voyant les screenshots je ne comprend pas bien le type de jeu: c'est un jeu de plateau comme les echecs ?

    Quel est le rapport avec "Dungeon" ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Pour la partie PvP, on peut en effet dire qu'il s'agit d'un jeu de plateau.

    Je devais avoir les règles quelque part mais je pense que regarder les règles officielle du "Go" sera plus compréhensible en attendant qu'on ai fini tout cela.

    Pour le mot "dungeon", il va faire partie de l'intrigue du mode scénario donc je ne vais pas trop spoiler

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    C'est le principe des go ? ok, je comprends mieux

    Quand vous dites : la partie PvP cela veut dire qu'il y a deux phases : un deux persos versus et l'autre contre une IA.
    Y a-t-il deux interfaces ? pouvons nous avoir un screenshot de la seconde partie ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par imikado Voir le message
    C'est le principe des go ? ok, je comprends mieux
    Après on va apporter quelques modifications par rapport aux règles officielles mais on en parlera en temps voulu

    Citation Envoyé par imikado Voir le message
    Quand vous dites : la partie PvP cela veut dire qu'il y a deux phases : un deux persos versus et l'autre contre une IA.
    Y a-t-il deux interfaces ? pouvons nous avoir un screenshot de la seconde partie ?
    Pour le moment, nous avons un PvP 1vs1 sur un même ordinateur.
    Nous allons déjà finir le client et permettre des PvP plus "complexes".

    Ensuite, nous permettrons l'hébergement de salon pour jouer en LAN/IP directe.
    Puis nous verrons pour monter un serveur afin de permettre l'enregistrement des joueurs et leur connexion.
    Et nous finirons par un mode TCP hole punching pour héberger des salons PvP sans rediriger un port avec la box.

    Une fois le PvP fini, il nous faudra commencer le mode "scénario" (PvE).
    Bref, on a encore du boulot

  13. #13
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Une question: pourquoi c++ : pour un jeu de plateau en vue du dessus, vous pouviez passer par du html5, non ?
    A moins que ce soit en 3d, et que vous envisagez de pouvoir modifier l'angle de la caméra
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  14. #14
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Citation Envoyé par imikado Voir le message
    Une question: pourquoi c++ : pour un jeu de plateau en vue du dessus, vous pouviez passer par du html5, non ?
    A moins que ce soit en 3d, et que vous envisagez de pouvoir modifier l'angle de la caméra
    Un besoin de performances sans doute ^^.

  15. #15
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Il y a plusieurs raisons à cela.

    Déjà un besoin de performances vu le nombre de FPS

    Ensuite comme je l'ai dit au début du jour 3, là je fait un placement 2D pour simplifier les choses en désactivant le déplacement de la caméra, mais le jeu est bien en 3D.

    Ensuite, avoir un client permet de pouvoir jouer en offline même si le serveur est down, en maintenance ou si l'internet est coupé.

    De plus ceci évite des rechargements de données inutiles (même en ayant le cache) tout en évitant les problèmes de caches (une image pas à jour chez le client etc...).

    Last Dungeon est aussi prévu pour que les joueurs puissent éditer leur propres règles et leur propre carte, il faudrait alors que je puisse lire et éditer le contenu d'un dossier du client en HTML5 ce qui me pose quelques problèmes de sécurité

    Sans compter qu'il va toujours y avoir le problème des différents moteurs des navigateurs pour les rendus (surtout avec celui d'ie )...

    Et je pense que certaines vidéos seront trop lourdes le faire en HTML5.

  16. #16
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Le fait que ce soit en 3D suffit à répondre à ma question

    HTML5 c'était uniquement si le jeu se jouait en vue du dessus: si c'est en 3d que vous avez une vue par la caméra autre, c'est difficile d'envisager de l'html5 a moins de partir sur de la 2D isométrique
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

Discussions similaires

  1. [Projet en pause] Last dungeon
    Par Neckara dans le forum Projets
    Réponses: 193
    Dernier message: 06/02/2014, 15h57
  2. Dungeons & Developers : jeux de nerds
    Par rodolphebrd dans le forum La taverne du Club : Humour et divers
    Réponses: 1
    Dernier message: 13/09/2013, 08h59
  3. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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