Posts filed under 'programmation'

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. Obtenez dans cette affaire est renvoyée à 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. Without Love devrais-je même, prendre soin de lui-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
 void draw ( uint x , uint y ) { ... } ... } class Animation : Image { ... void draw ( ) { draw ( 1 , 1 ) ; } ... } Image de classe (tirage au vide ... (uint x, y uint) (...) ...) Animation de classe: Image (tirage au vide ... () (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 # 0, alors * Champs == auto: setTarget (dx 16, dy * 12) de retour fin vrai pour i, e 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 articles sur le même terrain. Quand on entre dans une scène pour la première fois, est généralement 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

Classes en Lua

J'ai eu quelques jours de départ des mouvements de fluide dans GORC installé et essayé le code un peu plus facile à faire. Depuis, par exemple Charlie et les robots ont été assez similaires en bonneterie, rien n'a été plus de deux objets également attirer les mêmes fonctions (déplacement, à l'emploi ...) Soit. Il était venu à quelque chose comme ceci:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
  movable_create fonction ()
     = (M)
     x = 0
     ma = 0
     m retour
 fin

 m, x, y ) fonction movable_setPosition (m, x, y)
     x = x
     ma = y
 fin

 - Exemple:
 joueur = movable_create ()
 , 2 ) movable_setPosition (joueur, 2, 2) 

Tout a bien fonctionné. Mais tout à l'heure que je pensais. Ne serait-il intéressant de construire l'objet entier? Mais comment fait-on dans le Lua? Après beaucoup de googler et violon, je suis venu à la conclusion suivante:

  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
  - Class.lua

 baseClass ) classe de fonction (BaseClass)
	 locales new_class = ()
	 __index = new_class } class_mt = __index () = new_class locales

	 self, ... ) fonction new_class: nouvelle (auto, ...)
		 locales Newin = ()
		 newinst, class_mt ) setmetatable Newin (class_mt)
		 Newin: init ()
		 retour Newin
	 fin

	 baseClass then si ~ = nil alors BaseClass
		 new_class, { __index = baseClass, __call = function ( self,... ) return self:new ( ... ) end } ) setmetatable (new_class, __index = (BaseClass, __call = function (auto, ...) à retour automatique: fin (...) nouveau))
	 fin

	 fonction new_class: la classe ()
		 new_class retour
	 fin

	 new_class fonction: super ()
		 BaseClass retour
	 fin

	 new_class fonction: init ()
	 fin

	 theClass ) fonction new_class: est (theClass)
		 false b_isa local = false

		 new_class cur_class local = new_class

         nil ~ = cur_class ) and ( false == b_isa ) do while (~ = nil cur_class) et (false == b_isa) ne
             theClass then si cur_class == theClass puis
                 b_isa = true
             d'autre
                 cur_class = cur_class: super classe ()
             fin
         fin

         b_isa retour
	 fin

	 new_class retour
 fin 

Le meilleur dans son propre fichier, par exemple "class.lua sauver. Dans l'action voit l'ensemble, nous avons:

  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
 "class.lua" ) -- Standard Objekt Object = Class ( nil ) function Object:init ( ) -- Gridposition self.x = 0 self.y = 0 -- Sprite / Animation self.ani = 0 end function Object:setPosition ( x, y ) self.x = x self.y = y end -- Bewegliche Objekte Moveable = Class ( Object ) function Moveable:init ( ) self.super ( ) :init ( ) -- Ziel Gridposition self.nx = 0 self.ny = 0 -- Bewegungsrichtung (entfernen!) self.dir = 0 self.ani_x = 0 self.ani_y = 0 -- Felder pro Sekunde self.speed = 4 self.last_update = 0 end function Moveable:draw ( ) local x, y x = ( self.x - 1 ) * 16 + self.ani_x y = self.y * 12 + self.ani_y love.graphics.draw ( self.ani, x, y ) end ... -- Beispiel: mauer = Objekt ( ) mauer:setPosition ( 10 , 15 ) spieler = Movable ( ) spieler:setPosition ( 2 , 2 ) love.filesystem. require ("class.lua") - Standard objet de la classe Object = (nil) fonction de l'objet: init () - Gridposition self.X self.y = 0 0 = - Sprite / self.ani Animation = 0 End Function objet: setPosition (x, y) x = y self.X self.y fin = - mobiliers objets mobiliers = classe (objet) fonction de meubles: init () self.super (): init () - Objectif Gridposition self.ny self.nx = 0 = 0 - retirer la direction du mouvement (!) 0 = self.dir self.ani_x = 0 = 0 self.ani_y - trames par seconde = self.last_update self.speed 4 = fin fonction 0 meubles: draw () locale x, y x = (self.X - 1) 16 = y + self.ani_x self.y * 12 + * self.ani_y love.graphics.draw (self.ani, x, y) fin ... - Exemple: mur = Object () mur: setPosition (10, 15) joueurs mobile = () joueurs: setPosition (2, 2) 

Demandez-moi maintenant, mais pas exactement comment tout cela fonctionne;) Pour moi, c'est celui-là. Qui est toujours intéressé par le fonctionnement peut être si intelligent de lire les pages suivantes:

19 janvier 2009

iPhone App multilingue

Imaginez-vous en face d'elle juste un petit jeu pour l'iPhone et que rédigé en allemand. Mais parce que vous voulez faire appel au plus large public possible, il devrait y avoir une version anglaise. Mais comment allez-vous faire à ce problème? Une fois, j'ai googlé un peu.

Dans votre répertoire de projet Xcode vous soumettez à deux répertoires: "de.lproj" et "en.lproj"

crusher_locale_dirs.jpg

Maintenant, il s'adapte à votre projet en utilisant Ajouter -> Nouveau dossier ... -> Autres -> Fichier des chaînes Deux nouveaux fichiers ajoutés Localizable.strings ". Un dans la de.lproj »et l'autre dans le" en.lproj "répertoire.

crusher_locale_newfile.jpg crusher_locale_newfile_en.jpg crusher_locale_newfile_de.jpg

Votre projet vue devrait ressembler à ceci:

crusher_locale_xcode_0.jpg

J'ai parfois considérée comme un exemple de menu principal, le code ressemble toujours à ceci:

  1
 2
 3
 4
 5
 6
 7
 MenuItemFont itemFromString : @ "Starte Spiel" target : self selector : @selector ( startGame : ) ] ; MenuItem * help = [ MenuItemFont itemFromString : @ "Hilfe" target : self selector : @selector ( help : ) ] ; MenuItem * start = [MenuItemFont itemFromString: @ "début du match" target: sélecteur de soi: @ commencer sélecteur de jeu (:)]; MenuItem * Aide = [MenuItemFont itemFromString: @ "Aide" cible: sélecteur de soi: @ selector (aide:)] ; 

Les chaînes de "début de la partie» et «aider à remplacer« Nous, les NSLocalizedString () la fonction. StartGameKey et HelpKey faire maintenant ce que nous voulons chaîne ont indiqué l'agence dans traduit, bien sûr;)

  1
 2
 3
 4
 5
 6
 7
 8
 9
 MenuItemFont itemFromString : NSLocalizedString ( @ "StartGameKey" , @ "" ) target : self selector : @selector ( startGame : ) ] ; MenuItem * help = [ MenuItemFont itemFromString : NSLocalizedString ( @ "HelpKey" , @ "" ) target : self selector : @selector ( help : ) ] ; MenuItem * start = [MenuItemFont itemFromString: NSLocalizedString (@ "StartGameKey", @ ") cible: sélecteur de soi: @ commencer sélecteur de jeu (:)]; MenuItem * Aide = [MenuItemFont itemFromString: NSLocalizedString (@" HelpKey ", @" ): auto: sélecteur @ sélecteur de cible (aide:)]; 

Même nos deux Localizable.strings éditer des fichiers, pour de ce programme se traduit nos cordes plus tard.

Pour l'allemand:

  1
 2
  "Starte Spiel" ; "StartGameKey" = jeu de "start";
 "Hilfe" ; "HelpKey" = "Aide"; 

et en anglais:

  1
 2
  "Start Game" ; "StartGameKey" = Start Game ";
 "Help" ; "HelpKey" = "Aide"; 

Et déjà nous ayons jamais livrés à l'iPhone les meilleures traductions de langue:) est une langue devrait être fixé, pour laquelle nous vous proposerons pas de traduction semble être la traduction en anglais ce qui est pris, dans la plupart des cas, complètement autorisé.

13 janvier 2009

Design d'interface pour iPhone RPG

Même si je suis toujours essayer de trouver comment rendre OpenGL ES dans une texture, la question s'est posée la façon de concevoir l'interface?

Il ya assez de place ici des exemples fois classique:

964203001-00.gif

m_4878_1088181171_snap0011.png

Ou comme je l'ai vu dans un RPG sur mon Elf:

1.jpg

D'une certaine manière, il serait très important pour moi, mais quelques-unes des façons que nous offrons à intégrer à terme l'iPhone. Moins de boutons visibles de façon permanente, ce qui réduit la vue 3D inutilement, et qui servira éventuellement mal avec les doigts légèrement plus grand. Motion du parti dans la vue 3D des zones définies, changer l'establishment du parti par glisser-déposer, etc Une structure très approximative pourrait ressembler à ceci:

screenshot_01.jpg

Que pensez-vous de l'idée? Ou vous pourriez avoir de meilleures suggestions?

10 janvier 2009


Traducteur

Pages

Derniers articles

Catégories

Archives

Meta


Page optimisée par WP rapetisser WordPress Plugin