Posts filed under 'programmazione'

GORC - editor Map?

Hanno il problema del timer ieri in qualche modo avere risolto e ora posso dedicare le scene. Qui vorrei lasciare, ma non facile da programmare su di esso si lasciano andare e passare il tutto un paio di volte piuttosto Bedenkminuten xD

La prima volta che sono stato alla ricerca di un editor di mappe carino e piastrelle trovato. È scritto in Java e gira così bello anche seriamente che partecipano a qualsiasi sistema operativo. Che Trovo anche molto pratico, le carte vengono memorizzati in formato XML e possono essere assegnati a oggetti all'interno del editor di mappe le sue proprietà.

Quest'ultimo è ad esempio utile se ad esempio si inserisce un pezzo di carta. Potrebbe essere così anche quando si progetta la carta mancante il contenuto. Oppure Teleport Teleporter loro campi di destinazione ... bella cosa:)

Internamente, mi salverà la scena in circa tre matrici 2D. In primo piano ci sono le piastrelle. Perché? Ho notato in Robot 3, che non sembra molto bello, se un muro nel wegätzt foresta, perché poi c'è una mattonella bianca al centro della foresta. Sarebbe bello se ci appare sul mio conto suolo bruno forestale. Questo è esattamente ciò che mi permette di essere il mio primo array (che io chiamo solo layer 0 volte xD).

Livello 1 conterrà tutti gli altri oggetti di gioco non-NPC. E a livello 2 sono poi i tetti e tutto il resto poteva correre sotto il lungo Charlie. Charlie Tu sei sul mio conto in una casa proprio non si disegna più Layer 2 e abbiamo lo stesso effetto di Robot in gioco i tetti:)

NPC e tutti gli oggetti vengono memorizzati in una lista ciascuno. Queste sono quindi non sooooo tempo è in ritardo e devo avere, nonostante tutti la possibilità di più oggetti in una sola e stessa. Perché si verifichi questa situazione, credo, solo se il giocatore scarta oggetti. O perché mi mancava cosa?

Attualmente ho per ogni oggetto il suo PNG proprio compatibile, ma purtroppo non con piastrelle così grande. Così qui si riporta una singola immagine per un tileset pieno. Uno o due modifiche alla classe di base dell'oggetto e anche questo piccolo problema sarebbe risolto.

Spero volte, ho ancora creare tutto questo all'interno di questa settimana, perché poi ho la possibilità di divertirsi di nuovo nella GUI;)

12 commenti 8 Febbraio 2009

GORC - ma faccio stupido per essere: (

Perché era tutto amore funziona così bene, ho copiato il timer di accensione e per precauzione tutti i float a variabili intere. Questo ha portato una bella raffica di velocità e sbatté la mia animazioni perfette. Ma volevo solo usare i movimenti oggetto liquido e tutto ha iniziato a spuntare. Quindi tutto riconvertiti a stare a galla. Ora sono più fluide, ma si aspetta di essere stupido e muto, 20 FPS perdita: (

, Ci deve essere meglio ... noi lo sguardo ...

7 Febbraio, 2009

GORC - Prossima fermata: classe Object

La maggior parte delle funzioni di base senza fiatare nelle loro nuove case Singleton (schermo, Timer, Image) scomparsi. La classe Game prende anche forma lentamente:)

Il passo successivo è la classe base per oggetto gli elementi di gioco. Prima voglio vedere come si comporta in natura, perché deve anche la cura di eventuali animazioni. Without Love dovrei preoccuparmi di me stesso in modo da questo momento * lol *

Quello che ho notato nella versione Love GORC di ogni istanza di oggetto ha una propria istanza di immagine ... che ovviamente non era necessariamente risorse. Questa volta mi sono prese per garantire che l'immagine viene caricata una sola volta e saranno adottate in qualsiasi altro "store" dalla cache.

Così ho farsi avanti ... e nonostante il freddo ed estremamente lento processo di pensiero xD

6 febbraio 2009

GORC - C + +

Qualche tempo fa io non era ancora così sicuro. Ma non appena ho risposto al commento Herc, c'era D (di nuovo), piuttosto impressionato dalla mia idea della successione di variabili e funzioni di una classe genitore al loro bimbi.

Sì lo ammetto a che io non so cosa devo fare con cose come "virtuale" e "protette". Ma se io come:

  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 ) ; } ... } Immagine di classe (... disegnare void (uint x, y uint) (...) ...) Animazione classe: Image (... disegnare void () (draw (1, 1);)) ... 

ha fatto, perché lamentarsi alla volontà di Dio è il compilatore D, la classe non attirare l'uint animazione ("uint) funzione ha? La mia comprensione è che essi dovrebbero comunque avere ereditato dalla classe Image, giusto? Ok, grazie a Google, lo faccio in questo modo di vedere:

  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 ) ; } ... } Immagine di classe (... disegnare void (uint x, y uint) (...) ...) Animazione classe: Image (Immagine ... aka. Trarre disegnare, disegnare void () (draw (1, 1); ...)) 

Accidenti! Lentamente, credo davvero di che non trattano con i principi OOP nel sonno, dovrebbe consentire alle dita di D: (

Quindi ... prendo C + +, che riguarda la mia ignoranza, un grazioso piccolo e cercare di imparare;)

3 commenti 5 FEBBRAIO 2009

GORC - Nuovo Inizio? C, C + +, BASIC gratuito o D?

Qui sul mio portatile GORC vecchio corre troppo lentamente. Ciò è in gran parte perché l'amore usa OpenGL. SDL per un motore di gioco 2D sarebbe bastato perfettamente. Naja. Ma cosa devo fare?

In realtà un tempo abbastanza buono per GORC in una lingua "reale" di programmazione per scrivere nuovi e come utilizzare la libreria SDL. Infine, non ho bisogno di più di SDL, SDL_mixer e SDL_image. Più tardi ancora per lo scripting Lua, ma fino ad allora è ancora in tempo ...

A breve qui elencati sono quattro lingue: C, C + +, BASIC e Free Digital Mars D. Quest 'ultima che ho sempre voluto annusare un po' più da vicino. Le librerie di tutto il sostegno la mia scelta.

Per C e C + + non come ho scritto troppo. Può tranquillamente essere compilato per ogni cosa e mi piace la sintassi:)

Base gratuito è come una sintassi C con Quick Basic. Può compilare, ma purtroppo solo per Windows e Linux.

D sarà probabilmente "migliore" di C + +. In che misura la facile su un progetto come impatto GORC, nessuna idea. Compilazione DSSS progettato, grazie molto più facile che in C / C + +. Perché io non sono mai riusciti ancora veramente, è il mio programma per la compilazione lasciare da. / Configure & & make. È semplicemente troppo costoso tutti lol * *

Anche qui, un tempo piccolo sguardo in direzione 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 ( ) ; } derelitto di importazione. SDL. SDL; tango di importazione. IO. console; void main () (prova (carico DerelictSDL. ();) catch (Exception e) (giudice ("Impossibile caricare la libreria condivisa SDL. \ n"); ritorno;) SDL_Init (SDL_INIT_VIDEO); SDL_SetVideoMode (640, 348, 24, SDL_SWSURFACE); SDL_WM_SetCaption (GORC ", null); mainloop: while (true) (event SDL_Event while (SDL_PollEvent (& event)) (switch (evento . tipo) (SDL_QUIT caso: mainloop break; default: break;)) SDL_Delay (10);) tribunale ("Oki Dokili. \ n"); SDL_QUIT (); DerelictSDL. unload ();) 

E allora? Quello che mi prendo adesso?

4 commenti 3 Febbraio 2009

GORC - pixel senza biglietto

Ciò che ho oggi tutto il giorno in cerca di scuotere la testa * morto *

Quadro per i menu e finestre di dialogo sono state elaborate senza problemi, ok ... abbiamo ancora il menu principale rapidamente finito, e quindi dopo il lavoro. Nix fit lì ... In qualche modo entrambi gli elementi non menu della finestra o la finestra era troppo grande. Ma cosa si può andare storto quando una parte del telaio esattamente 8 × 10 pixel è large e una lettera del the è la dimensione del font stesso? La sola matematica, ma non va bene niente!

In realtà avevo solo alcune lettere delle risorse font Paint mancare un quadro per vedere l'errore. Fino ad allora avevo la mia fonte, probabilmente già letto mille volte senza correzione risultato. La funzione standard per i font bitmap inserti Love (che ovviamente non conoscevo) è un emergente di un pixel tra due lettere. Ma per fortuna c'erano anche una funzione, grazie al quale ho potuto lasciare questo stupido pixel;)

Bene, ora ho avuto abbastanza di programmazione. Il menu può attendere Ora che è finalmente oggi, che è di 18 ed è già forte senza di me nelle celebrazioni.

Congratulazioni, fratello!

2 commenti 24 gennaio 2009

GORC - classi di oggetti del gioco finito, e poi?

Premessa: ho notato che mi GORC mio thread nel gioco del Robot Forum ora abusato come DevBlog. I tempi Passo ora a lavorare contro di essa, e il mio progresso e pensieri in questo post del blog ... dove in realtà appartengono anche;)

Quindi ... ho usato la scorsa settimana e farcite tutti gli elementi di gioco in classi. Il contenuto di una scena non è più in una matrice 2D, ma in due tabelle Lua. Uno dei robot, allora forse tutti gli altri NPC entrare qui. E nel foglietto altra tabella tutti gli altri elementi (pareti, oro, ecc.)

Lo scopo della procedura è quello di rendere la logica di gioco gestibile. Invece di un lungo blocco if-then-else ora mettere tutta la logica per un oggetto particolare nella sua istanza di classe. Un esempio:

  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 = Classe Oro ("Gold", Object) love.graphics.newImage oro immagine = ("images/gold-0.png") Gold Image: setCenter (0, 0) = love.audio.newSound Gold Sound ("suoni / gold.wav "), Gold funzione: init (x, y, params) self.super: init (x, y) = Oro self.ani fine funzione Image Oro: canEnter (obj) - può essere inserita dal giocatore, non solo se il giocatore: (fatto obj) per poi tornare restituire fine false true Oro funzione del fondo: onEntered (obj), se non giocatore: fatto (obj) per poi tornare self fine: remove () = spieler.gold spieler.gold love.audio.play + 1 (Gold Sound) end 

Ok. Un oggetto da collezione è ora nessuno script vera sfida tecnica. Ma come di qualcosa di più complicato?

  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 Isolante = Classe ("isolatore", movimento) love.graphics.newAnimation isolante = Immagine (love.graphics.newImage ("images/isolator-0.png"), 16, 12, 0.1, 0) Immagine isolante: setCenter (8, 6 ) funzione isolante: init (x, y, params) self.super: init (x, y) = isolante self.ani Immagine self.speed = spieler.speed fine funzione Isolante: canEnter (obj) dx locale, dy - può solo non sono accessibili da parte dei giocatori se il giocatore: fatto (obj) per poi tornare fine false - l'isolante si muove già - non possiamo entrare, o la sua direzione per andare in - altrimenti corriamo per mezzo di lui di sé se: isMoving () per poi tornare fine dx = false self.X - dy obj.x = self.y - obj.y ritorno sé: canMoveTo (dx, dy) End Function Isolante: canMoveTo (dx, dy) = campo locale scene di corrente (): get (self.X + dx, dy self.y +) se il campo == 0 then # * sé: setTarget (DX 16, dy * 12) di ritorno vero fine per i, s in coppia (campo) fare in caso di non Isolante: Made (e.obj) e non filo spinato: (e.obj) per poi tornare false else if e.obj: canMoveTo (dx, dy) allora sé: setTarget fatto (dx * 16 12 * dy) return vero fine ritorno end end end false 

Un altro vantaggio collaterale è la possibilità ora di avere più elementi sullo stesso campo. Quando si entra in una scena per la prima volta, è di solito un solo oggetto in un campo. Ma chi ha giocato gioco Robot sanno già che alcuni è giunto il momento di pulire il suo inventario. Tada! Cosa potrebbe esserci di meglio di tutto ciò che non è necessaria in questo momento, solo per terra in un mucchio? E quando serve di nuovo, basta eseguire sul campo e automagicamente si raccolgono tutto.

Purtroppo non posso davvero contento del mio piccolo "successo" perché è il costo frame: (L'intro con poco meno di 1000 di 60 FPS su pareti è appena sceso sotto 50 nelle scene che ancora detiene alla frontiera ( 300-400 oggetti) ma una volta che li spingono in tutto il isolatori, in grado di scomparire di nuovo fino a 10 fotogrammi.

Ma ho ancora una o l'altra idea come posso limitare la perdita. Ma nel lungo periodo, sarei più bello di qualcosa di una soluzione performante. Ciò che complica ma non gli script Quick centrale degli oggetti ...

Ora vorrei, ma non preoccuparti, e mi aveva pensando alla GUI per widment GORC. Infine, il gioco sarebbe il menu, finestre di messaggio, e soprattutto l'inventario. Vedremo, la notte è appena iniziata xD

22 GENNAIO 2009

Le classi in Lua

Ho avuto un paio di giorni di partenza movimenti fluidi in GORC installato e provato il codice un po 'più facile da fare. Dal momento che ad esempio Charlie e il robot si sono molto simili a maglia, nulla era più di due oggetti anche richiamare le stesse funzioni (movimento, da usare ...) let. Era uscito in qualcosa come questo:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
  movable_create function ()
     = (M)
     x = 0
     il mio = 0
     ritorno m
 fine

 m, x, y ) movable_setPosition funzione (M, x, y)
     x = x
     il mio = y
 fine

 - Esempio:
 giocatori movable_create = ()
 , 2 ) movable_setPosition (, player 2, 2) 

Tutto ha funzionato piuttosto bene. Ma proprio adesso che stavo pensando. Non sarebbe interessante per costruire tutto l'oggetto? Ma come si fa in Lua? Dopo un sacco di googling e trafficando, sono arrivato alla seguente conclusione:

  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 ) funzione di classe (BaseClass)
	 locale new_class = ()
	 __index = new_class } locale __index class_mt = () = new_class

	 self, ... ) new_class funzione: nuovi (auto, ...)
		 locale Newin = ()
		 newinst, class_mt ) setmetatable Newin (class_mt)
		 Newin: init ()
		 Newin ritorno
	 fine

	 baseClass then se ~ = nil poi BaseClass
		 new_class, { __index = baseClass, __call = function ( self,... ) return self:new ( ... ) end } ) setmetatable (new_class, __index = (BaseClass, __call = function (auto, ...) ritorno di auto: (...) termine nuovo))
	 fine

	 new_class funzione: di classe ()
		 ritorno new_class
	 fine

	 new_class funzione: super ()
		 ritorno BaseClass
	 fine

	 new_class funzione: init ()
	 fine

	 theClass ) new_class funzione: è (theClass)
		 false b_isa locale = false

		 new_class cur_class locale = new_class

         nil ~ = cur_class ) and ( false == b_isa ) do mentre (~ = nil cur_class) e (false == b_isa) non
             theClass then se poi cur_class == theClass
                 b_isa = true
             altro
                 cur_class = cur_class: super classe ()
             fine
         fine

         ritorno b_isa
	 fine

	 ritorno new_class
 fine 

Il meglio del meglio proprio file, ad esempio "class.lua salvare. In azione vede il tutto, abbiamo:

  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 classe Object Object = (zero) la funzione di oggetto: init () - Gridposition self.y self.X = 0 = 0 - Sprite / self.ani Animazione = 0 End Function oggetto: setPosition (x, y) x = self.X self.y y = fine - Moveable oggetti mobili = Classe (Object) funzione mobile: init () self.super (): init () - Obiettivo self.nx self.ny Gridposition = 0 = 0 - togliere direzione del movimento (!) self.ani_x self.dir = 0 = 0 = 0 self.ani_y - campi al secondo self.last_update self.speed = 4 = 0 End Function mobile: 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) fine ... - Esempio: muro oggetto = () della parete: setPosition (10, 15) i giocatori mobili = () giocatori: setPosition (2, 2) 

Ask me adesso, ma non esattamente come tutto questo funziona;) Per me è quello. Chi è ancora interessato nel funzionamento può essere così intelligente da leggere le seguenti pagine:

19 gennaio 2009

Multilingue iPhone App

Immaginate di essere davanti a lei solo un piccolo gioco per iPhone e che la scritta in tedesco. Ma perché tu vuoi fare appello al pubblico più vasto possibile, ci dovrebbe essere una versione inglese. Ma come si fa a fare questo problema? Una volta ho googled un po '.

Nella directory del progetto Xcode inviati a due directory: "de.lproj" e "en.lproj"

crusher_locale_dirs.jpg

Ora si inserisce il progetto utilizzando Add -> New File ... -> Altro -> File Strings due nuovi file aggiunti Localizable.strings ". Uno in "de.lproj" e l'altro nella "directory en.lproj".

crusher_locale_newfile.jpg crusher_locale_newfile_en.jpg crusher_locale_newfile_de.jpg

Il vostro progetto vista dovrebbe essere simile a questa:

crusher_locale_xcode_0.jpg

A volte ho preso come un esempio di menu principale, il codice è ancora in questo modo:

  1
 2
 3
 4
 5
 6
 7
  MenuItem * start =
     @ "Starte Spiel" [ItemFromString MenuItemFont: @ "start game"
     @selector ( startGame : ) ] ; target: selettore di auto: @ selettore (inizio del gioco:)];

 * MenuItem aiuto =
     @ "Hilfe" [ItemFromString MenuItemFont: @ "Aiuto"
     @selector ( help : ) ] ; target: selettore di auto: @ selettore (help:)]; 

Le stringhe "start game" e "help sostituire" siamo i NSLocalizedString () funzione. StartGameKey e HelpKey dare adesso quello che stringa vogliamo avere l'agenzia ha detto in traduzione, ovviamente;)

  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 = [itemFromString MenuItemFont: NSLocalizedString (@ "StartGameKey", @ "") obiettivo: Selettore di auto: @ start selettore del gioco (:)]; MenuItem * aiutare = [itemFromString MenuItemFont: NSLocalizedString (@ "HelpKey", @ " ) obiettivo: Selettore di auto: @ selettore (help:)]; 

Anche i nostri due Localizable.strings modificare i file, per questo il nostro programma viene tradotto corde più tardi.

Per il tedesco:

  1
 2
  "Starte Spiel" ; "StartGameKey" = "Comincia il gioco";
 "Hilfe" ; "HelpKey" = "Help"; 

e inglese:

  1
 2
  "Start Game" ; "StartGameKey" = "Avvia partita";
 "Help" ; "HelpKey" = "Help"; 

E già ci hanno mai consegnato agli iPhone le traduzioni lingua migliore:) è uno lingua dovrebbe be set, per which ci offrirà nessuna traduzione sembra essere la traduzione in inglese prese what è, in molti casi, completely ok.

13 Gennaio 2009

design di interfaccia per iPhone RPG

Mentre sto ancora cercando di scoprire come rendere OpenGL ES in una struttura, posta la questione di come progettare l'interfaccia?

Qui ci sono abbastanza classici esempi di una volta:

964203001-00.gif

m_4878_1088181171_snap0011.png

Oppure, come ho visto in un RPG sul mio elfo:

1.jpg

In qualche modo, sarebbe molto importante per me, ma alcuni dei modi che offriamo alla fine di integrare l'iPhone. Meno tasti costantemente visibile, che riducono la vista 3D inutilmente, e che alla fine servono poco con le dita leggermente più grandi. Motion dalla parte entro la vista 3D di aree definite, cambiare la costituzione da parte di drag'n'drop, ecc Una struttura molto approssimativo potrebbe apparire come segue:

screenshot_01.jpg

Cosa ne pensate dell'idea? Oppure si potrebbero avere migliori suggerimenti?

10 gen 2009


Traduttore

Pagine

Ultimi articoli

Categorie

Archivio

Meta


Pagina ottimizzata per WP minify Wordpress Plugin