Posts filed under 'progetti'

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à.

La seconda è utile ad esempio se si inserisce come un blocco note. 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 il mio account non sembra 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é ho mancato qualcosa?

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 di oggetti

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 quindi questa volta * 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 adottate per assicurare 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 non ero 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.

Ammetto di sì a io non so bene 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 (... void disegnare 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 - un 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 a 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 della mia scelta tutti d'accordo.

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 testa * * morti

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 è grande e una lettera del tipo di carattere è la stessa dimensione? La sola matematica, ma non va bene niente!

In realtà avevo solo poche lettere delle risorse font Paint manca un quadro di 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 ha 18 anni e già forte senza di me nelle celebrazioni.

Congratulazioni, fratello!

2 commenti 24 gennaio 2009

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

Prefazione: Ho notato che mi GORC il mio thread nel gioco del Robot Forum ormai 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 un array 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 ) = Classe Oro ("Gold", Object)

 "images/gold-0.png" ) Immagine love.graphics.newImage Gold = ("images/gold-0.png")
 , 0 ) Gold Image: setCenter (0, 0)

 "sounds/gold.wav" ) Gold Sound love.audio.newSound = ("suoni / gold.wav")

 x, y, params ) funzione init Oro: (x, y, params)
	 self.super: init (x, y)

	 self.ani = Gold Image
 fine

 obj ) funzione Oro: canEnter (obj)
	 - Può essere inserita dal giocatore solo
	 obj ) then return false end se non giocatore: fatto (obj) per poi tornare fine false
	 return true
 fine

 obj ) funzione Oro: onEntered (obj)
	 obj ) then return end se non giocatore: fatto (obj) per poi tornare end

	 sé: remove ()
	 spieler.gold spieler.gold + 1 =
	 love.audio.play (Gold Sound)
 fine 

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 poi # * 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


Traduttore

Pagine

Ultimi articoli

Categorie

Archivio

Meta


Pagina ottimizzata per WP minify Wordpress Plugin