Partage
  • Partager sur Facebook
  • Partager sur Twitter

[UDK] zFortress

Eh non, UDK ce n'est pas que pour les FPS !

Sujet résolu
Anonyme
    7 novembre 2011 à 23:20:03

    Bonjour tout le monde !

    Je vois régulièrement des gens discuter sur les moteurs de jeu et leurs limitations. Histoire de me lancer un petit défi, j'ai décidé de réaliser un petit Tower Defense, ou plutôt un affrontement entre deux camps fortifiés avec différentes armes.

    Les règles de base


    • Vous pouvez construire une tour sur une zone active
    • Construire une tour vous coûte des ressources, qui se régénèrent doucement mais qui s'obtiennent par la destruction des tourelles ennemies !
    • Construire une tour active les zones alentour
    • Une fois toutes les défenses éliminées, la base ennemie entre sous le feu de votre artillerie !

    Le jeu se déroule en vue stratégique : le joueur se déplace en 2D au dessus du terrain.

    En images...



    Image utilisateur

    Image utilisateur

    Image utilisateur



    Contributions


    • Maximilien_bertrand pour une bonne partie des meshs de la map Orbiter
    • Alex-D qui nous a créé une superbe musique de fond
    • Moi-même...

    Quelles versions ?


    Télécharger la Preview2 de zFortress pour Windows (236Mo)


    Télécharger la Preview2 de zFortress pour Mac OSX (125Mo)


    Télécharger les sources de la Preview2 (code, packages UDK, sources Blender de la tourelle basique, sources Flash) (118Mo)



    Quel contenu ? Quel code ?


    Ce projet est réalisé à 100% avec du contenu et du code perso. Bien entendu, le code s'appuie sur les classes d'UDK, mais le code d'Unreal Tournament n'est pas utilisé puisque ce n'est pas un FPS. ;)

    Voici un extrait du code pour vous convaincre !

    class TowerActor extends Actor
    	ClassGroup(TowerDefense)
    	HideCategories(Display,Collision,Physics)
    	placeable;
    
    
    var(TowerActor) bool			isOnBlueTeam;
    var(TowerActor) bool 			bIsCapturable;
    var(TowerActor) bool 			bIsRoot;
    var(TowerActor) int 			ActivateRadius;
    
    var LinearColor					TeamColorRed;
    var LinearColor					TeamColorBlue;
    var LinearColor					TeamColor;
    var LinearColor					Black;
    
    var StaticMeshComponent			Mesh;
    var MaterialInstanceConstant	MaterialInstance;
    
    var int							PowerCount;
    
    
    simulated function PostBeginPlay()
    {
    	Super.PostBeginPlay();
    	MaterialInstance = Mesh.CreateAndSetMaterialInstanceConstant(0);
    	if (!bIsCapturable)
    		IncreasePower();
    	else
    		UpdateColor();
    }
    
    
    simulated function int UpdateStatesInRadius(bool bIsPowerUp)
    {
    	local TowerActor target;
    	local int count;
    
    	count = 0;
    	foreach VisibleCollidingActors( class'TowerActor', target, ActivateRadius)
    	{
    		if (target.bIsCapturable && IsSameTeam(target)){
    			count++;
    			if (bIsPowerUp)
    				target.IncreasePower();
    			else
    				target.DecreasePower();
    		}
    	}
    	return count;
    }
    
    
    simulated function bool IsSameTeam(TowerActor T)
    {
    	return (isOnBlueTeam == T.isOnBlueTeam);
    }
    
    
    simulated function IncreasePower()
    {
    	PowerCount++;
    	UpdateColor();
    }
    
    
    simulated function DecreasePower()
    {
    	PowerCount--;
    	UpdateColor();
    }
    
    
    simulated function UpdateColor()
    {
    	if (!IsActivated())
    		TeamColor = Black;
    	else if (isOnBlueTeam)
    		TeamColor = TeamColorBlue;
    	else
    		TeamColor = TeamColorRed;
    	MaterialInstance.SetVectorParameterValue('Color', TeamColor);
    }
    
    
    simulated function bool IsActivated()
    {
    	return (PowerCount > 0);
    }
    
    
    defaultproperties
    {
    	Begin Object class=DynamicLightEnvironmentComponent Name=MyLightEnvironment
    		bEnabled=true
    		bDynamic=true
    	End Object
    	Components.Add(MyLightEnvironment)
    
    	Begin Object class=StaticMeshComponent Name=IconMesh
    		StaticMesh=StaticMesh'TowerEffects.Mesh.SM_Icon'
    		Rotation=(Yaw=32768)
    		LightEnvironment=MyLightEnvironment
    	End Object
    	Mesh=IconMesh
     	Components.Add(IconMesh)
    
    	Begin Object class=StaticMeshComponent Name=TowerMesh
    		LightEnvironment=MyLightEnvironment
    	End Object
     	Components.Add(TowerMesh)
    	CollisionComponent=TowerMesh
    
    	Black=(R=0.0,G=0.0,B=0.0,A=0.0)
    	TeamColorRed=(R=5.0,G=1.0,B=0.0,A=1.0)
    	TeamColorBlue=(R=0.0,G=1.0,B=5.0,A=1.0)
    
    	PowerCount=0
    	isOnBlueTeam=true
    	ActivateRadius=400
    
    	bEdShouldSnap=true
    	bCollideActors=true
    	bBlockActors=true
    }
    


    Qu'est-ce qui est prévu ?

    • Deux environnements : l'environnement actuel, situé dans l'espace et un second univers plus naturel.
    • Plus d'armes.
    • Un jeu complet. :)


    Et nous dans tout ça ?

    Le jeu sera proposé gratuitement en téléchargement une fois terminé. Il sera bien évidemment possible de créer vos propres niveaux !
    Le code sera également proposé en téléchargement sous licence libre pour autoriser les modifications plus en profondeur.


    Combien de temps ça prend de faire tout ça ? Comment on fait ?

    Pas beaucoup de temps : quelques semaines de développement intense principalement.

    Je suis prêt à répondre, comme toujours, à toute question technique sur UDK. J'espère que ce projet saura vous donner envie d'essayer ce moteur ! :p
    Sachez que vous pouvez participer, il suffit de lire le cours du site !
    • Partager sur Facebook
    • Partager sur Twitter
      7 novembre 2011 à 23:38:42

      Ouah, c'est un super projet !
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        8 novembre 2011 à 0:33:31

        Merci !

        Petite news, déjà, très vite : le premier mode de jeu disponible sera "contre l'IA". L'IA est encore en travaux mais fonctionne déjà !

        Petite image aussi avec un emplacement de construction, et l'animation de construction :
        Image utilisateur
        • Partager sur Facebook
        • Partager sur Twitter
          8 novembre 2011 à 3:04:51

          Tu gères Gwen-Haël !
          Continu comme ça , j'attends les news et la Bêta :)
          • Partager sur Facebook
          • Partager sur Twitter
          www.creationjeuxjava.fr - Unity3D - LibGDX - Tutoriels de Jeux vidéo !
            8 novembre 2011 à 4:27:04

            Eh ben c'est vrai que ça a l'air bien sympa :)
            Hâte de voir ça.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              8 novembre 2011 à 11:51:34

              Merci pour vos retours !

              J'espère terminer le gros du code ce soir avec la gestion de la fin de partie et la limite de déplacement de caméra.
              L'étape suivante c'est l'ajout de contenu et un peu de mapping, et vous aurez une jolie beta. ;)

              C'est un projet super pédagogique parce que je fais vraiment le tour d'un peu tout dans UDK, je me rends compte de la puissance de l'outil.
              Vous avez peut-être remarqué que l'icone sur le sommet des tourelles indique leur vie : c'est un Material dynamique, qui prend en paramètre la vie. A chaque tir reçu, le code le met à jour. Et tout ça, c'est faisable super rapidement !
              De même la couleur rouge/bleu et les textures sont de simples paramètres, si je veux ajouter une équipe Rose, ou si je veux créer un Material quasi identique, avec ces fonctions mais des textures différentes, j'en ai littéralement pour 30 secondes.
              • Partager sur Facebook
              • Partager sur Twitter
                8 novembre 2011 à 12:16:07

                Les tourelles ont de la vie...?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 novembre 2011 à 12:20:26

                  Effectivement , ça montre la puissance de l'UDK ! Dommage que je ne sache pas modeler , car utiliser a chaque fois les assets de l'UDK ou alors les models du net bof...

                  Oui les tourelles ont de la vie je suppose , sinon on est invincible ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  www.creationjeuxjava.fr - Unity3D - LibGDX - Tutoriels de Jeux vidéo !
                    8 novembre 2011 à 12:22:27

                    @John Dans un TD, normalement, on perd lorsqu'on n'a plus de vie, pas quand les tourelles ont plus de vie.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      8 novembre 2011 à 12:28:08

                      Les tourelles sont destructibles, on perd de la vie quand elles ne sont plus la pour vous défendre face a l'ennemi. Il y aura aussi des boucliers, purement défensifs .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 novembre 2011 à 12:32:58

                        Bizarre cette idée de tourelles destructibles... qui les attaque ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          8 novembre 2011 à 12:38:06

                          Les autres tourelles :p

                          Bon, c'est vrai que c'est effectivement assez éloigné d'un TD classique. Disons que pour l'instant du moins, il n'y a pas d'unité mobile et c'est plus un jeu de fortification qu'un TD. :euh:
                          J'ai l'intention de mettre des unités mobiles par la suite, mais bon, au pire, disons que c'est pas un tower defense, on se fiche un peu du nom :p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 novembre 2011 à 13:07:42

                            Désolé, je ne doute pas de ton mode du tout mais j'ai du mal à saisir, vraiment ce qui s'y passe ! Alors, on a des tourelles fixes qui tirent sur d'autres tourelles fixes ? :euh:
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              8 novembre 2011 à 13:15:19

                              Chaque joueur démarre avec un nombre réduit de zones à construire. Il peut y bâtir des tourelles, qui vont tenter d'éliminer les tourelles d'en face, et qui activent les zones alentour pour y construire également. Elles peuvent donc se faire détruire, ce qui rapporte des ressources à l'adversaire.

                              On peut également choisir de construire des boucliers, purement défensifs mais plus solides que les tourelles.

                              Une fois que toutes les défenses d'un joueur sont éliminées, les tourelles adverses attaquent sa base.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 novembre 2011 à 13:23:42

                                D'accord! Et bien ça s'annonce plus différent que je le pensais mais ça doit être tout de même sympathique!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 novembre 2011 à 13:44:45

                                  Tiens je n'avais pas encore jeté un coup à ton TD (ou peu importe la catégorie en fait), et ça s'annonce vraiment sympa.
                                  De plus, je suis particulièrement content du fait que ça continuera à promouvoir un peu ce magnifique soft qu'est Blender à travers cet excellent moteur de jeu.
                                  J'ai vraiment hâte de pouvoir tester une partie! :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 novembre 2011 à 18:54:49

                                    Super projet !

                                    Je suis vraiment impatient de pouvoir tester ce petit bijoux :lol:
                                    Avec UDK on a vraiment l'impression que tout est faisable assez aisément et en un rien de temps. Je te souhaite une bonne continuation et tu peux être sûr que je ferai parti des premiers à le télécharger !
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 novembre 2011 à 22:37:16

                                      Comme je m'en doutais, ça a l'ai super intéressent ! J'ai hâte de pouvoir tester. :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        8 novembre 2011 à 23:47:55

                                        Petite mise à jour ce soir...
                                        • Gestion du bâtiment "base ennemie" (le gros bâtiment cubique, oui)
                                        • Augmentation des ressources à la destruction de tours ennemies
                                        • Gestion de plusieurs types de tours
                                        • Boucliers : pas encore de model ni d'effets mais la tour "bouclier" qui intercepte les tirs fonctionne
                                        • Gestion fine des tirs : les tourelles tirent chacune sur la cible la plus proche et en priorité sur les boucliers
                                        • La vue est modifiée pour être plus lisible (quasi verticale)


                                        Image utilisateur
                                        Mise à jour !


                                        Todolist avant la beta :
                                        • Vue limitée à la zone de combat (code)
                                        • Gestion de la fin de match (code)
                                        • Effets du bouclier
                                        • Map basique
                                        • Effets perso pour la tourelle de base

                                        Ça avance bien ! Encore un peu de patience... Pas loin de 2000 lignes de code UnrealScript à l'heure actuelle, une dizaine de Mo de contenu perso et pas mal d'heures au compteur...
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          9 novembre 2011 à 7:30:31

                                          Joli !
                                          Par contre, le modèle de la "base ennemie", j'espère que c'est encore un WIP parce que je le trouve assez moche...

                                          Et aussi, une tourelle semble plus grosse que les autres, c'est juste un effet de perspective ou c'est bien un autre type ?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            9 novembre 2011 à 9:13:21

                                            C'est un effet de perspective.

                                            Le model "base" est effectivement devenu pas terrible avec la vue à quasi 90°, il est en fait bien plus sympa de côté, je l'arrangerais un peu.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              9 novembre 2011 à 13:20:32

                                              Pourquoi pas, pour les bases, faire derrière les tourelles un grande/moyenne/petite structure ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                9 novembre 2011 à 13:30:37

                                                C'est prévu dans le code les tailles variables, ça arrivera après, et les tourelles coûteront plus cher à construire sur ces emplacements . :)
                                                Les bases elles-mêmes doivent rester à l'écart pour éviter les tirs accidentels...

                                                Pour la beta, je me focalise sur le coeur du jeu pour voir ce qui plaît ou non. Le code sera normalement achevé ce soir pour les mécanismes essentiels, je proposerais la beta quand le contenu minimal sera terminé.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  9 novembre 2011 à 13:49:36

                                                  Ce qui serait sympa, mais c'est mon avis, ce serait de faire une map un peu plus sympa, et remonter de quelque degrés la caméra, parce que là, c'est limite vue vers le sol. Du coup, avec la map, avoir un environnement plus classe ? C'est juste une idée comme ça... ^^
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    9 novembre 2011 à 13:57:16

                                                    Oui oui, il y aura un environnement bien rempli, là c'est juste pour les tests. Sur cette map, je prévois un décor très "technologique" à la façon de certaines maps Starcraft II pour donner une idée.

                                                    L'ennui de la vue c'est que actuellement, les tours interceptent les traces des clics souris, ce qui me gêne pour les boucliers d'ailleurs. Tant que ce problème n'est pas résolu, le jeu est injouable en vue penchée... Mais j'y travaille. ^
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      9 novembre 2011 à 23:27:44

                                                      Au programme du code de ce soir : vue limitée à une zone dans la map via un volume, déboguage en tout genre, meilleure gestion des ressources. Ça progresse !
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        10 novembre 2011 à 9:41:45

                                                        Impressionnant , bravo !

                                                        Sinon les autres ont déjà tout dit ...
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Anonyme
                                                          11 novembre 2011 à 16:33:38

                                                          Le travail continue... :)

                                                          Image utilisateur


                                                          Quelques bugs assez lourds encore, et il manque une tourelle et quelques ajustements avant la beta, mais ça arrive. :)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            11 novembre 2011 à 16:54:48

                                                            Cool !

                                                            Juste la police et la couleur en haut à gauche qui me chiffonne :honte:
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Anonyme
                                                              11 novembre 2011 à 17:01:25

                                                              J'ai pas encore pris le temps de faire un vrai HUD... :-°
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [UDK] zFortress

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown