AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Aide jeux vaisseau spatial

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 18:38

Hey sa fait depuis longtemps !

Je suis en ce moment beaucoup sur youtube et je regarde beaucoup des vidéo de Space Engineers ( un jeu de vaisseau spatial ) ou l'on peut créer un vaisseau , ce qui est on peut le dire , la classe !

Je voudrai en faire un avec vue du dessus mais je me heurte a un problème de base de ce type de jeux c'est que je voudrai que le joueurs puisse créer son vaisseau comme dans minecraft avec des blocs mais le problème c'est que dans la logique un vaisseau sa avance , sauf que je ne sais pas comment dire au jeux que si j'avance tout les blocs que j'ai poser sur le vaisseau avance avec lui , sois si je pose des blocs a coté d'un propulseur que ces blocs suivent le vaisseau au lieux de rester fixe .
Et je n'arrive pas trop a trouvé comment je pourrais faire un système qui fait en sorte que si il le vaisseau a un trou , il n'avance pas , sois si il manque un blocs qui entours le vaisseau , je voudrai qu'il n'avance pas , pour donner un coté RP au jeu , logique quoi ^^

Je vous fais appel car j'aimerai beaucoup faire un jeu de ce style mais je me heurte a des problèmes au début de la conception du jeu :/

Si vous ne connaissez pas le jeu : https://www.youtube.com/watch?v=Uo_5LPSxwEM
( Je ne veut pas forcément faire un jeu exactement pareil que Space engineers mais un jeu de vaisseau spacial ou on peut justement construire notre vaisseau avec un style minecraft )

Merci d'avance .
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 18:51

j'ai pas tout compris. Tu veux faire un jeu 2D style zelda ou CS2D ? et quel moteur utilise tu ?
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 18:56

2D vue du dessus , et style Space Engineers comme indiquer , pour les moteur je ne pense pas que un jeu 2D vue du dessus sois indispensable .

Si tu n'a pas compris , ce que je veut faire c'est un jeu ou l'on peut construire son vaisseau spatial , le problème c'est que je veut le faire façon minecraft , sois poser des blocs pour qu'a la fin sa sois un vaisseau , mais la ou est le problème c'est que pour que le vaisseau sois utilisable il faut que tout les blocs collé a un réacteur sois propulsé avec le réacteur , sois si j'avance donc que le réacteur avance alors il faut que les blocs collé a celui ci avance avec lui mais je ne sais pas comment faire .
Revenir en haut Aller en bas
nolialsea
Débutant


Messages : 28
Localisation : Montpellier

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 19:05

Bonjour =)

J'ai à peu près le même projet que toi depuis un bon bout de temps (je joue aussi à space engineers que j'adore)
Je te conseille de regarder un peu le jeu Wayward Terran Frontier, qui est à peu près ce que tu essaies de faire je pense.

Et si j'ai bien compris ton problème, tu devrais faire en sorte que ton vaisseau soit une grille bien distincte du reste du "monde",
comme ça tu pourras faire avancer la grille du vaisseau, la faire pivoter, etc.

Pour le problème des blocs manquants d'un vaisseau j'ai du mal à comprendre ce que tu veux dire
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 19:10

Tu a tout compris , pour le premier problème il faut ce que tu a dis mais aussi il faut prendre en compte que le joueurs puisse créer lui meme son propre vaisseau .

Pour les blocs manquant c'est tout simple , je veut faire comme dans la vie , si sur un vaisseau spatial il manque un mur a ton vaisseau , il aura des problèmes , la je veut faire pareil , sois si il manque un blocs je veut que le vaisseau ne bouge pas , ou du moin que je puisse le savoir avec genre une variable qui passe a 1 si il manque un mur pour par la suite dire au joueurs de réparer son vaisseau .
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 19:11

Sous GM, le plus simple est de faire une espèce d'objet contrôleur qui déplace chaque morceau du vaisseau quand le vaisseau avance.

Petit exemple a l'arrache histoire de montrer le principe:
http://simpleupload.fr/?c=A0V36SY!1FZ9vLDh

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 19:16

C'est sa exactement , sa a l'air chaud quand meme ^^
Je vois sa ce soir , merci . Je vais tenter de le simplifier ^^
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 19:40

J'ai vite fait amélioré le tout, tu devrais trouver au moins les bases de ce que tu veux:
http://host-a.net/u/onilink_/ship_blocks.gmk

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 20:17

Merci énormément tu a vraiment fait ce que je voulais en rajoutant même le bloc de speed avec espace ^^

Je vais apprendre comment magner des listes , a ce que j'ai compris tu a beaucoup travailler avec donc je vais me pencher sur le sujet , après il y a quelque bout de code qui me semble flou avec les ii et les variable contrôler mais je vais essayer de décortiquer tout sa , merci beaucoup de ton travail si rapide .

Je pense que le premier problème qui a été résolu va me prendre pas mal de temps a mettre en place mais pour le second problème je ne vois pas trop comment le résoudre , savez vous comment je peut le résoudre ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 20:41

J'ai pas trop compris le second soucis. Le vaisseau est construit par le joueur, donc y a pas vraiment de notions de trou du coup... s'il le fait d'une forme chelou.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 20:50

Oui mais ce que je veut dire c'est que le joueurs va placer des mur sois tout ces murs formeront des pièces mais si une pièce est ouverte alors il faut que le vaisseau s’endommage comme dans la vraie vie .
Exemple : http://www.gamesidestory.com/wp-content/gallery/jeu_ftl/ftl-33.jpg
Si dans FTL le vaisseau est endommager cela va prendre feu , de même si il y a un trou dans le vaisseau ( comme dans la coque d'un bateau ) le vaisseau va subir des dommage car la pression va aspirer ( si je dis pas de bêtise ) .

Sois un trou dans un vaisseau = des dégâts . Si dans FTL il y a un trou dans le vaisseau les personnages a l’intérieure vont tout simplement mourir .
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Jeu 19 Fév 2015 - 22:11

Pour ça faut que tu fasses une seconde représentation des murs dans une matrice contenue par le ShipCore, puis t'utilise l'algo de flood fill pour vérifier que chaque pièce est bien fermée.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 11:59

Je vais voir sa alors .

Je suis en train de faire mon propre système ( le tien est super mais il y a des lignes que je ne comprend pas trop c'est assez compliquer pour moi :/) en utilisant quelques une de tes lignes , j'ai trouvé comment faire pour faire peut etre plus simple :

Code:
if(place_meeting(x+1, y, ship) || place_meeting(x-1, y, ship)
|| place_meeting(x, y+1, ship) || place_meeting(x, y-1, ship))
    {
    with(instance_place(x,y,all))
        {
        shippart.master=object_get_name(object_index);
        x=object_get_name(object_index).x;
        }
        
    }
    

Le truc c'est que j'ai une érreur pour :

Code:
x=object_get_name(object_index).x;

Sois en gros je veut que c'est qu'un objet a une collision alors son axe X change entre sa position et celle de l’objet qui la touché .
Mais il ne reconnais pas l'objet .
Si vous ne comprenez pas ce que je veut faire , c'est de poser un objet a 1 pixel plus loin afin que dès que l'objet est posé alors il "s'agrippe" au bloc qui touche pour la premier fois .

Du coup je ne sais pas comment je pourrai résoudre ce problème :/
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 14:08

T'as rien compris a l'utilisation de with et object_index je pense.

Déjà object_get_name(object_index), ça te retourne une chaine de caractère, c'est totalement inutile.
Ensuite, object_index, ça te donne pas un id d'instance, mais un type d'objet, et c'est encore une fois bien inutile.

Déjà, si tu veux connaitre l'id d'une instance, bah c'est juste id.
Ensuite, si tu veux l'id de l'instance qui a lancé un with dans le with, il faut utiliser other.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 14:20

Bah ce que je voulais c'est mettre le nom de l'objet qui a eu une collision dans une variable et après invoquer la variable et mettre un .x et .y a la fin afin que sa donne par exemple : bloc.x

Soit si l'objet bloc le percute alors le nom de l'objet ( sois object_get_name(object_index) ) est utilisé afin d'utiliser son axe X et Y , soit si bloc le percute alors object_get_name(object_index) sera égale a -> bloc et donc pour connaitre sa position je fais = object_get_name(object_index).x sois le nom de l'object et le .x a la fin pour jouer avec sa position , sois si bloc le tape alors object_get_name(object_index) sera égale a block donc selon ma logique :
si object_get_name(object_index)=block alors
object_get_name(object_index).x = block.x
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 14:28

Oui bah justement non, ça marche pas comme ça Razz

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 15:17

J'ai remarqué ^^

Mais justement sais tu comment je peux faire quelque chose de similaire ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 15:27

Avec les id d'instances. Sachant que instance_place retourne un id.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 16:05

Je me penche sur ça alors merci bien.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Ven 20 Fév 2015 - 16:13

Penses aussi à revoir ton orthographe ou au moins te relire car confondre les ça/sa ou é/er, c'est vraiment limite.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Sam 21 Fév 2015 - 10:57

Oui je n'écris pas très bien , chacun ses défauts triste

J'ai parlé avec nolialsea et comme il a dit une méthode comme tu a fais est la meilleur .
Du coup je pense que je vais faire comme tu l'as fais , le problème c'est qu'il y a des parties que je ne comprend pas , pourrais tu m'expliquer si cela ne te dérange pas les deux petit code ci dessous :

Code:
if(!place_meeting(x, y, Ship))
{
if(place_meeting(x+1, y, Ship) || place_meeting(x-1, y, Ship)
|| place_meeting(x, y+1, Ship) || place_meeting(x, y-1, Ship))
{
    controler = instance_place(x+1, y, Ship)
    if(!instance_exists(controler)) controler = instance_place(x-1, y, Ship)
    if(!instance_exists(controler)) controler = instance_place(x, y+1, Ship)
    if(!instance_exists(controler)) controler = instance_place(x, y-1, Ship)
    
    ii = instance_create(x, y, ShipPart)while(controler.controler != -1)
    {
        controler = controler.controler
    }
    ii.controler = controler
    ii.frame = frame
    ds_list_add(controler.particles, ii)
    
    if(frame == 1)
    {
        ii.vx = 1
    }
}
}

et

Code:
// insert collisions tests

for(i=0; i<ds_list_size(particles); i+=1)
{
    ii = ds_list_find_value(particles, i)
    vx += ii.vx
    vy += ii.vy
}

for(i=0; i<ds_list_size(particles); i+=1)
{
    ii = ds_list_find_value(particles, i)
    ii.x += vx
    ii.y += vy
}
x += vx
y += vy

Merci d'avance et merci pour le code ^^
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Sam 21 Fév 2015 - 22:08

Code:
if(!place_meeting(x, y, Ship))
{
Tout d'abord, je vérifie que le bloc n'est pas sur le vaisseau (je veux qu'il soit collé, pas dessus).

Code:
if(place_meeting(x+1, y, Ship) || place_meeting(x-1, y, Ship)
|| place_meeting(x, y+1, Ship) || place_meeting(x, y-1, Ship))
{
La, je vérifie qu'il est collé au vaisseau (a une de ses partie tout du moins).

Code:
    controler = instance_place(x+1, y, Ship)
    if(!instance_exists(controler)) controler = instance_place(x-1, y, Ship)
    if(!instance_exists(controler)) controler = instance_place(x, y+1, Ship)
    if(!instance_exists(controler)) controler = instance_place(x, y-1, Ship)
Je sais que le morceau que j'essaye de placer est collé a un bout du vaisseau, je récupère donc l'id de ce fameux bout.
S'il n'est pas d'un coté il est forcément d'un autre...

Code:
    while(controler.controler != -1)
    {
        controler = controler.controler
    }
Le "bout maître" est le morceau dont la variable controler vaux -1 (elle ne pointe sur aucune instance, car c'est elle le controler).
Donc pour récupérer son id il me suffit de récupérer le controler.controler...
Ce code est d'ailleurs un peu con car dans tous les cas de l'exemple que j'ai filé, on a que deux situations:
-controler == -1 => morceau maître
-controler == id_maitre => bout de vaisseau

Tu peux donc simplifier ça en
Code:
    if(controler.controler != -1)
        controler = controler.controler

Code:
    ii = instance_create(x, y, ShipPart)
    ii.controler = controler
    ii.frame = frame
Je crée le bout a coller au vaisseau, lui assigne son controler.

Code:
    ds_list_add(controler.particles, ii)
J'ajoute ce bout a la liste des morceaux du vaisseau (le bout maître).

Code:
    if(frame == 1)
    {
        ii.vx = 1
    }
}
}
Ça c'est juste pour dire qu'un morceau "réacteur" a une vitesse en x de 1.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8896
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Aide jeux vaisseau spatial   Sam 21 Fév 2015 - 22:12

Code:
for(i=0; i<ds_list_size(particles); i+=1)
{
    ii = ds_list_find_value(particles, i)
    vx += ii.vx
    vy += ii.vy
}
Ici rien de bien folichon, je dis que la vitesse du vaisseau est la somme des vitesses de ses constituants.

Code:
for(i=0; i<ds_list_size(particles); i+=1)
{
    ii = ds_list_find_value(particles, i)
    ii.x += vx
    ii.y += vy
}
x += vx
y += vy
Et ici j'applique juste le déplacement en fonction de la vitesse a chaque constituant du vaisseau, puis a lui même.

Un déplacement c'est juste:
position += vitesse

On peut aussi faire un déplacement en fonction du temps:
position += vitesse * dt
Cela peut être très utile si on veut un jeu dont la vitesse des objets in game est constante quel que soit le fps.

_________________
                 
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 228

MessageSujet: Re: Aide jeux vaisseau spatial   Sam 21 Fév 2015 - 22:45

Merci beaucoup ceci m’aide pas mal car les lignes ou y a controler = controler.controler je comprenais rien ! Mais en fait c'est "logique" mais un peut tordu ^^
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Aide jeux vaisseau spatial   

Revenir en haut Aller en bas
 
Aide jeux vaisseau spatial
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment bien débuter en graphisme. Conseil ?
» Aide à la lactation
» Mon jeu de tarot (demande aide pour interprétation)
» HENRY (ENSEIGNE DE VAISSEAU) - F749 (1965-1996) : généralités
» Demande aide lecture acte mariage 1742 Cormeilles Eure

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: