Posts filed under 'projets'

GORC - éditeur de carte?

Le problème minuterie hier en quelque sorte se résoudre et je peux maintenant consacrer les scènes. Je voudrais ici, mais ne soyons pas facile à programmer sur elle s'emballe et passer le tout à quelques reprises plutôt Bedenkminuten xD

La première fois que j'ai été à la recherche d'un éditeur de carte mignon et carrelée trouvé. Est écrit en Java et fonctionne aussi tellement agréable de sérieux participants dans tout système d'exploitation. Ce que je trouve également très pratique, les cartes sont stockées en XML et peuvent être assignés à des objets dans l'éditeur de cartes de ses propriétés.

Ce dernier est par exemple utile que si elle s'inscrit comme un bloc-notes. Cela pourrait être le cas même lorsque vous concevez la carte manquante de son contenu. Ou des champs Teleport Teleporter cibler leurs ... belle chose:)

En interne, je vais mettre la scène en trois tableaux 2D. Au premier étage sont des tuiles. Pourquoi? J'ai remarqué dans Robot 3, dont il n'a pas l'air très gentil, si un mur dans le wegätzt forêt, car alors il ya un carreau blanc au milieu de la forêt. Ce serait bien s'il y aurait apparaître sur mon compte des sols bruns forestiers. C'est exactement ce qui me permet d'être mon premier tableau (je l'appelle simplement la couche 0 fois xD).

Couche 1 contiendra tous les autres objets de jeu non-NPC. Et dans la couche 2 sont alors les toits et tout le reste pouvait s'exécuter sous le long Charlie. Charlie Vous êtes sur mon compte dans une maison n'est tout simplement pas attiré plus de couche 2 et nous avons le même effet que dans le jeu Robot sur les toits:)

PNJ et tous les objets sont stockés chacun dans une liste. Ces derniers sont alors pas sooooo de temps il est retardé et que je dois avoir, en dépit de tous la possibilité de plusieurs objets en un seul et même domaine. Parce que cette situation se produit, je crois, que si le joueur se défausse objets. Ou parce que j'ai manqué quelque chose?

Actuellement, j'ai pour chaque objet de sa propre compatible PNG, mais malheureusement avec carrelage pas si grand. Donc ici revenir à une image unique pour un tileset intégral. Un ou deux changements à la classe d'objet de base et aussi ce petit problème serait résolu.

J'espère fois, je continue de créer tout cela au sein de cette semaine, parce que je peux me défouler à nouveau dans l'interface graphique;)

12 commentaires Février 8th, 2009

GORC - je faire pour être stupide: (

Parce que a l'amour Tout fonctionne tellement bien que j'ai copié la minuterie et tension par mesure de précaution tous les flottent à variables entières. Cela porte un éclat de Nice de la vitesse et claqué mes animations parfait. Mais je voulais juste d'utiliser les mouvements objet liquide et tout a commencé à cocher. Donc, tout reconverti à flotter. Maintenant, ils sont plus fluides, mais il s'attend à être stupide et muet, 20 pertes FPS: (

, Il faut être le meilleur ... nous allons regard ...

7 février 2009

GORC - Prochain arrêt: la classe Object

Les fonctions les plus élémentaires, sans un murmure dans leurs nouveaux foyers Singleton (écran, minuterie, Image) ont disparu. La classe du jeu prend également la forme lentement:)

L'étape suivante est la classe de base d'objet pour les éléments du jeu. Je veux d'abord voir comment il se comporte à l'état sauvage, car il doit s'occuper aussi de toute animation. Sans amour devrait Je me soucie de moi-même cette fois * lol *

Ce que j'ai remarqué dans la version Löve GORC de chaque instance de l'objet a sa propre instance de l'image ... ce qui bien sûr n'est pas nécessairement des ressources. Cette fois, je dois veiller à ce que l'image n'est chargé qu'une fois et seront prises à tout autre "store" à partir du cache.

Alors je me présente ... et malgré le froid et extrêmement lent processus de réflexion xD

6 février 2009

GORC - C + +

Il ya quelques temps je n'étais pas encore sûr. Mais à peine avais-je répondu à un commentaire Herc, il y avait D (nouveau) plutôt impressionné par mon idée de l'héritage de variables et les fonctions d'une classe parent à leurs gosses.

J'avoue oui à je ne sais pas vraiment ce que je dois faire avec des choses comme «virtuel» et «protégés». Mais si je en tant que:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
  Image de classe
 (
     ...
     uint x , uint y ) tirage nul (uint x, y)
     (
         ...
     )
     ...
 )

 Image Classe Animation: Image
 (
     ...
     void dessiner ()
     (
         , 1 ) ; tirage (1, 1);
     )
     ...
 ) 

fait, pourquoi se plaindre à Dieu sera le compilateur D, la classe ne tire pas les uint animation ("uint) fonction ne? Ma compréhension est que ces dernières devraient néanmoins avoir hérité de la classe Image, non? Ok, Merci à Google, je le fais comme ça pour voir:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 void draw ( uint x , uint y ) { ... } ... } class Animation : Image { ... alias Image. draw draw ; void draw ( ) { draw ( 1 , 1 ) ; } ... } Image de classe (tirage au vide ... (uint x, y uint) (...) ...) Animation de classe: Image (Image ... aka. Tirage au sort; tirage nul () (tirage (1, 1); ...)) 

Ouf! Lentement, je pense vraiment de qui ne traitent pas avec les principes POO dans son sommeil, doit permettre aux doigts de D: (

Alors ... je vais prendre C + +, qui traite de mon ignorance un gracieux petit et essayez de l'apprendre;)

3 commentaires Février 5th, 2009

GORC - nouveau départ? C, C + +, base gratuite ou D?

Ici, sur mon vieux portable GORC va beaucoup trop lentement. C'est en grande partie parce que l'amour utilise OpenGL. SDL pour un moteur de jeu 2D aurait suffi à la perfection. Naja. Mais que faire?

En fait, un temps assez bon pour GORC dans un "vrai" langage de programmation pour écrire de nouveaux et, comme d'utiliser la bibliothèque SDL. Enfin, je n'ai pas besoin de plus de SDL, SDL_image et SDL_mixer. Plus tard encore pour les scripts Lua, mais jusque-là en est encore temps ...

À court énumérées ici sont quatre langues: C, C + +, BASIC et Free Digital Mars D. Celui-ci j'ai toujours voulu renifler un peu plus près. Les bibliothèques de mon choix tout le soutien.

Pour C et C + + n'est pas comme si j'avais trop écrire. Peut-être compilées à peu près pour tout et j'aime vraiment la syntaxe:)

De base gratuite est comme un C avec Quick La syntaxe de base. Pouvez compiler mais malheureusement seulement pour Windows et Linux.

D sera probablement "mieux" que C + +. Dans quelle mesure la facilité d'un tel projet GORC impact, aucune idée. Compiler SSD conçus, Merci beaucoup plus facile que dans C / C + +. Car je n'ai encore jamais réussi vraiment, c'est mon programme pour compiler laisser passer. / Configure & & make. C'est trop cher tous lol *

Ici aussi, une fois un coup d'œil en direction des petites D:

  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
 . sdl ; import tango. io . Console ; void main ( ) { try { DerelictSDL. load ( ) ; } catch ( Exception e ) { Cout ( "Could not load the SDL shared library. \n " ) ; return ; } SDL_Init ( SDL_INIT_VIDEO ) ; SDL_SetVideoMode ( 640 , 348 , 24 , SDL_SWSURFACE ) ; SDL_WM_SetCaption ( "GORC" , null ) ; mainLoop : while ( true ) { SDL_Event event ; while ( SDL_PollEvent ( & event ) ) { switch ( event. type ) { case SDL_QUIT : break mainLoop ; default : break ; } } SDL_Delay ( 10 ) ; } Cout ( "Oki Dokili. \n " ) ; SDL_Quit ( ) ; DerelictSDL. unload ( ) ; } abandonnés à l'importation. SDL. SDL; tango à l'importation. io. Console; void main () (essayez (charge DerelictSDL. ();) catch (Exception e) (le tribunal ("Impossible de charger la bibliothèque partagée SDL. \ n"); retour;) SDL_Init (SDL_INIT_VIDEO); SDL_SetVideoMode (640, 348, 24, SDL_SWSURFACE); SDL_WM_SetCaption (GORC ", null); mainloop: while (true) (événement SDL_Event while (SDL_PollEvent (& event)) (switch (event . type) SDL_Quit cas (: mainloop break; default: break;)) SDL_Delay (10);) tribunal ("Oki Dokili. \ n"); SDL_Quit (); DerelictSDL. unload ();) 

Alors? Ce que je vais le prendre maintenant?

4 commentaires Février 3rd, 2009

GORC - pixel sans billet

Ce que j'ai aujourd'hui la journée à chercher la tête secouer * morts *

Cadre pour les menus et les dialogues ont été élaborés sans aucun problème, ok ... nous faisons encore le menu principal vite fini, et puis après le travail. Nix bon là ... D'une certaine manière, soit les éléments de menu n'est pas dans la fenêtre ou la fenêtre était trop grande. Mais que pouvez-vous aller mal quand une partie de la trame exactement 8 × 10 pixels est grand et une lettre de la police est la même taille? mathématiques simples, ne correspond pas encore tout!

Je n'avais en fait que quelques lettres des ressources de la police de peinture manquez un cadre pour voir l'erreur. Jusque-là, j'ai eu ma source sans doute déjà lu mille fois sans correction résultat. La fonction standard pour les polices bitmap inserts Löve (qui bien sûr, je ne sais pas) est une nouvelle d'un pixel entre deux lettres. Mais heureusement il y avait aussi une fonction, Merci à laquelle je ne pouvais laisser cette pixels stupide;)

Eh bien, j'ai maintenant assez de programmation. Le menu peut attendre Maintenant qu'elle est enfin aujourd'hui, qui a 18 ans et est déjà forte sans moi à la fête.

Félicitations, mon frère!

2 commentaires Janvier 24th, 2009

- Jeu de classes d'objets GORC terminé, et après?

Préface: J'ai remarqué que je GORC mon fil dans le jeu Robot Forum maintenant abusé DevBlog. Les temps je vais maintenant travailler contre elle, et mes progrès et pensées dans ce blog ... où ils appartiennent en fait trop;)

Alors ... j'ai utilisé la semaine dernière et farcie de tous les éléments du jeu dans les classes. Le contenu d'une scène n'est plus dans un tableau 2D, mais sur des tables Lua deux. L'un des robots, alors peut-être tous les PNJ d'autres viennent ici. Et dans le tableau, ajouter d'autres tous les autres éléments (murs, or, etc.)

Le but de la procédure est de rendre le jeu de logique gérable. Au lieu d'un long blocs if-then-else maintenant mettre toute la logique d'un objet particulier dans son instance de classe. Un exemple:

  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
 "Gold" , Object ) GoldImage = love.graphics.newImage ( "images/gold-0.png" ) GoldImage:setCenter ( 0 , 0 ) GoldSound = love.audio.newSound ( "sounds/gold.wav" ) function Gold:init ( x, y, params ) self.super:init ( x, y ) self.ani = GoldImage end function Gold:canEnter ( obj ) -- kann nur vom Spieler betreten werden if not Player:made ( obj ) then return false end return true end function Gold:onEntered ( obj ) if not Player:made ( obj ) then return end self: remove ( ) spieler.gold = spieler.gold + 1 love.audio.play ( GoldSound ) end Gold Class = ("Gold", Object) Image love.graphics.newImage Gold = ("images/gold-0.png") or Image: SetCenter (0, 0) = Gold Sound love.audio.newSound ("sons / gold.wav fonction d'or) ": init (x, y, params) self.super: init (x, y) = Gold fin self.ani fonction Image d'or: canEnter (obj) - peut être inscrit par le joueur uniquement s'il n'a pas joueur: (a obj) puis return false end return true or End Function: onEntered (obj) s'il n'est pas joueur: faites (obj) puis retour auto fin: remove () = spieler.gold spieler.gold love.audio.play + 1 (Gold Sound) fin 

Ok. Un objet de collection est maintenant aucun script réel défi technique. Mais comment quelque chose de plus compliqué?

  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
 "Isolator" , Moving ) IsolatorImage = love.graphics.newAnimation ( love.graphics.newImage ( "images/isolator-0.png" ) , 16 , 12 , 0.1 , 0 ) IsolatorImage:setCenter ( 8 , 6 ) function Isolator:init ( x, y, params ) self.super:init ( x, y ) self.ani = IsolatorImage self.speed = spieler.speed end function Isolator:canEnter ( obj ) local dx, dy -- kann nur vom Spieler betreten werden if not Player:made ( obj ) then return false end -- bewegt sich der Isolator bereits, -- können wir ihn nicht betreten, bzw. in seine Richtung gehen -- da wir sonst durch ihn hindurch laufen if self:isMoving ( ) then return false end dx = self.x - obj.x dy = self.y - obj.y return self:canMoveTo ( dx, dy ) end function Isolator:canMoveTo ( dx, dy ) local feld = Szenen:current ( ) :get ( self.x + dx, self.y + dy ) if #feld == 0 then self:setTarget ( dx * 16 , dy * 12 ) return true end for i, e in pairs ( feld ) do if not Isolator:made ( e.obj ) and not Barbwire:made ( e.obj ) then return false else if e.obj:canMoveTo ( dx, dy ) then self:setTarget ( dx * 16 , dy * 12 ) return true end end end return false end Isolant = classe («isolateur», déménagement) = isolant love.graphics.newAnimation Image (love.graphics.newImage ("images/isolator-0.png"), 16, 0,1, 0) isolant Image 12,: SetCenter (8, 6 ) la fonction d'isolateurs: init (x, y, params) self.super: init (x, y) self.ani Image isolant = = self.speed spieler.speed End Function Isolant: canEnter (obj) dx locales, dy - ne peut ne sont pas accessibles par les joueurs si le joueur: faites (obj) puis retour fin fausse - de l'isolant se déplace déjà - nous ne pouvons pas y entrer, ou de sa direction pour aller en - sinon nous courons à travers lui l'auto si: isMoving (), puis retour dx = False End self.X - dy = obj.x self.y - auto retour obj.y: canMoveTo (dx, dy) End Function Isolant: canMoveTo (dx, dy) = champ local scènes: en cours (): get (self.X + dx, dy self.y +) si le champ == 0 then # * auto: setTarget (dx 16, dy * 12) de retour fin vrai pour i, s par paires (champ) faire si pas Isolant: Made (e.obj) et non barbelé: (e.obj) alors return false else if e.obj: canMoveTo (dx, dy), puis l'auto: setTarget fait (dx * dy * 16 12) retour vraie fin fausse déclaration end end end 

Un autre avantage est la capacité côté maintenant avoir plusieurs objets sur le même terrain. Lorsque l'on pénètre dans une scène la première fois, est normalement un seul objet dans un champ. Mais qui a joué le jeu de robot sait déjà que certains le temps est venu pour nettoyer son inventaire. Tada! Quoi de mieux que tout ce qui n'est pas nécessaire pour le moment, il suffit de jeter dans un tas? Et quand il est à nouveau nécessaire, il suffit de lancer sur le terrain et recueillir tout ce que vous automatiquement.

Malheureusement je ne peux pas vraiment content de ma petite "réalisation", car le coût de cadres: (L'intro avec un peu moins de 1000 de 60 FPS sur les murs est juste tombé en dessous de la 50e scènes qu'elle détient encore à la frontière ( 300-400 objets), mais une fois que vous les pousser les isolateurs, pouvez-vous disparaître à nouveau jusqu'à 10 images.

Encore une ou l'autre idée comment je peux limiter la perte. Mais à la longue, je serais mieux à la recherche d'une solution performante quelque chose. Ce qui complique, mais en aucun cas les scripts rapide central des objets ...

Je voudrais maintenant, mais vous inquiétez pas, et me fit penser à l'interface graphique pour widment GORC. Enfin, le jeu serait les menus, boîtes de message, et surtout l'inventaire. Nous allons voir, la nuit ne fait que commencer xD

22 janvier 2009


Traducteur

Pages

Derniers articles

Catégories

Archives

Meta


Page optimisée par WP rapetisser WordPress Plugin