Games im "Retro"-Stil

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Taxicomics

Betreff: Games im "Retro"-Stil

BeitragSo, Nov 21, 2010 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hej Leute!

Ich gehöre ehrlich gesagt zu der Sektion: Ich fange jetzt ein tolles großes Spiel an- und 2 Monate später liegt es auf Eis. Deswegen wollte ich mich jetzt an Spiele mit einem "traditionellem" Spielprinzip wagen und den Retro-Look nachbauen. Jetzt hab ich allerdings ein paar Fragen:

1. In welcher Auflösung waren Spiele wie Mortal Kombat, Mario und Co.? Ich finde es besonders interessant mit weniger Pixeln klar zu machen wie ein Düsenjäger aussieht oder das der Haufen aus 4 Pixeln ein geniales Powerup ist.

2. Was sind für euch zentrale Spielelemente? Ich will kleine Spiele machen, keine Mammutprojekte,welche wo man mit Raumschiffen die von Links nach Rechts fliegen gegner zerballert und Endgegner bezwingt, und keine riesigen Beatemups wie das grade gennante Mortal Kombat^^

3.Wie mache ich das mit den Farben am authentischten? Die Grellen Farben ohne weiche Übergänge um alles schön deutlich zu machen. Ich will ein buntes Pixel-Spektakel!

Ich hoffe ich hab die richtige Kategorie erwischt und mich nicht zu oft vertippt.
Schonmal danke im Vorraus,
Taxicomics

Xeres

Moderator

BeitragSo, Nov 21, 2010 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Von welcher Plattform sprichst du denn? NES, SNES, Gameboy, Arcade?
Du musst nicht unbedingt eine Original-Auflösung benutzen. Solange dein eigener Pixel-Stil einheitlich ist, sehe ich da kein Problem.
Für Jump'n'Runs ist die Steuerung sehr wichtig, ansonsten befriedige den Sammler und Forscher Instinkt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragSo, Nov 21, 2010 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Auflösung ist meist 640 x 480. Das ganze im Vollbild und schon ist der erste wichtige Schritt Richtung Retro getan.

Das was einen an diese recht einfachen Spiele so fesselt ist meist gerade die Einfachheit. Ich muß nicht viel wissen, ein paar Tasten die oft noch von Spiel zu Spiel dasselbe bewirken und los. Was ich damit sagen will ist, keiner würde auf die Idee kommen mit Mario in eine fleischfressende Pflanze zu springen, aber das Goldmünzen zum sammeln da sind weiß auch jeder sofort ohne nachdenken. Du verstehst was ich meine? Ich bin als Spieler auf einer einfachen Map und erkenne sofort Ziel und Richtung, keine Strategie, nur wenige Zusammenhänge die zudem nur den Spieler betreffen.

Bei den Farben ist bunt wichtig. Schau Dir mal Super Mario an. Grün, rot, scharf abgegrenzt. Knallig, auffällig, ich weiß sofort wer der Hauptcharakter ist. Dazu noch runde Kanten für den Knuddel-Look und die Spielfigur ist fertig.

Meine 2 Cent's dazu Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

InFaIN

BeitragSo, Nov 21, 2010 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Inspiration...

Abrexxes

BeitragSo, Nov 21, 2010 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht noch einfacher !

cu
 

Taxicomics

BeitragMo, Nov 22, 2010 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank erstmal für die Antworten!

Ich hab jetzt einen Sidescroller angefangen, mit einer Auflösung 128x96, allerdings bekommt Blitzbasic das nicht so auf die Reihe. Werd wohl oder übel hochdrehen müssen^^ Was ist überhaupt die minimale Auflösung von Blitz?

@Abrexxes: Bei Google hab ich auch schon geguckt-wie sich so ein spiel anfühlt weiß ich auch, aber wie bringe ich dieses Feeling rüber, das war die Frage.

@InFain:Danke für den Link zum Retro-Contest,sehr hilfreich!

Hubsi

BeitragMo, Nov 22, 2010 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/help/CountGfxModes

Blitz unterstützt erstmal alles, ob es die Grafikkarte des Spielers auch tut ist wieder eine andere Frage Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Thunder

BeitragMo, Nov 22, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Prüfen der Grafikmodi ist natürlich das sinnvollste. Die kleinste Auflösung, die noch jede Grafikkarte unterstützen dürfte, wären 320x200 Pixel. Mode 13h
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Xeres

Moderator

BeitragMo, Nov 22, 2010 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das Format 4:3 wählst, nimm 800x600 als mögliche Option mit auf, das sollte wirklich jede Grafikkarte hin bekommen (also, im Vollbild). Deine Grafiken müssten du dann nur ggf. hochskalieren. Bei BlitzMax gibt es Virtuelle Auflösungen bei denen man sich keinen großen Kopf machen muss, für BlitzBasic kann man auf 3D Beschleunigung setzen (z.B. Draw3D) oder als letzte Möglichkeiten a) vor dem Start hochskalieren (Ladezeit) b) die passende Größe Laden (Speicherplatz).

Nachtrag: 320x200 ist bei mir nicht drin (640x480 ist das Minimum).
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

undefined

BeitragMo, Nov 22, 2010 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn es nicht anders geht, dann Arbeite mit einem Rahmen und Skalierung (letzteres vorallem im Fenstermodus sehr wichtig! - man will ja trotzdem noch was erkennen Wink)

Firstdeathmaker

BeitragMo, Nov 22, 2010 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal unter uns: Die physikalische Auflösung sollte für das Spiel selbst schnurzpiepegal sein. Worauf es ankommt ist, dass die Grafiken selbst pixelig aussehen. Wenn man auf Full-HD stellt, sollte der Pixelblock genau so groß sein wie auf 800x600. Das Zauberwort heisst skalieren.

Ich z.B. habe mir ein kleines Framework gebastelt, das es mir erlaubt:

1. Eine physikalische Auflösung anzugeben (diese Option kann der Spieler selbst bestimmen)
2. Eine virtuelle Auflösung anzugeben (diese stelle ich für mein Spiel ein, z.B. 480x300)
3. Automatisch schwarze Balken links/rechts oder unten/oben anzuzeigen, damit ein Breitbildschirm 4:3 nicht verzerrt darstellen muss.


Beim Programmieren gebe ich nun immer die Positionen über die Virtuelle Auflösung an, und das Framework macht den Rest. Ich schreibe z.B.

Drawrect 470,290,10,10

wenn ich ein Rechteck unten rechts einzeichnen möchte.


Ausschnitt aus der Engine:

Code: [AUSKLAPPEN]

Rem
   bbdoc:TScreen, manages resolutions
End Rem
Type TScreen
   Field width:Int
   Field height:Int

   Field virtualOffset:Int[2]
   Field virtualSize:Int[2]
   Field virtualScaledSize:Int[2]
   Field physicalSize:Int[2]
   Field bar_color:Byte[3]
   Field bar_draw:Byte
   Field gfx:TGraphics
   
   Field basic_color:Byte[3]
   Field basic_alpha:Float
   Field basic_rotation:Float
   Field basic_blend:Byte
   
   Field layerList:TList = New TList
   Field layer_priorityDirty:Byte
   
   Method addRenderLayer(rl:TRenderLayer)
      Assert rl, "TScreen.addRenderLayer(rl=NULL)"
      rl.m_screenLink = layerList.AddLast(rl)
      rl.screen = Self
      Self.setLayer_PriorityDirty()
   End Method

   
   Method setVirtualSize(width:Int, height:Int)
      virtualSize[0] = width
      virtualSize[1] = height
   End Method
   
   Method setPhysicalSize(width:Int, height:Int)
      physicalSize[0] = width
      physicalSize[1] = height
   End Method
   
   Method SetBar_draw(on:Byte = True)
      bar_draw = on
   End Method
   
   Method setBar_Color(r:Byte = 0, g:Byte = 0, b:Byte = 0)
      bar_color[0] = r
      bar_color[1] = g
      bar_color[2] = b
   End Method
   
   Method setBasic_color(r:Byte = 255, g:Byte = 255, b:Byte = 255)
      basic_color[0] = r
      basic_color[1] = g
      basic_color[2] = b
   End Method
   
   Method setBasic_alpha(a:Float = 1)
      basic_alpha = a
   End Method
   
   Method setBasic_rotation(angle:Float = 0)
      basic_rotation = angle
   End Method
   
   Method setBasic_blend(mode:Byte = ALPHABLEND)
      basic_blend = mode
   End Method
   
   Method setLayer_PriorityDirty()
      layer_priorityDirty = True
   End Method
   
   Method init()
      calcScreensize()
      restartGraphics()
      SetBar_draw()
      setBar_Color()
      setBasic_alpha()
      setBasic_blend()
      setBasic_color()
      setBasic_rotation()
   End Method
   
   Method restartGraphics()
      remove_graphics()
      gfx = Graphics(physicalSize[0], physicalSize[1])
      SetVirtualResolution(virtualScaledSize[0], virtualScaledSize[1])
      SetOrigin(virtualOffset[0], virtualOffset[1])
   End Method
   
   Method render()
      startRender()
      If layer_priorityDirty Self.layerList.Sort()
      For Local l:TRenderLayer = EachIn layerList
         applyBasicRenderSettings()
         l.render()
      Next
      finishRender()
   End Method
   
   Method startRender()
      Cls
      applyBasicRenderSettings()
   End Method
   
   Method finishRender()
      If bar_draw renderBars()
      Flip
   End Method
   
   Method applyBasicRenderSettings()
      SetColor basic_color[0], basic_color[1], basic_color[2]
      SetAlpha basic_alpha
      SetRotation basic_rotation
      SetBlend basic_blend
   End Method
   
   Method renderBars()
      SetOrigin(0, 0)
      SetColor bar_color[0], bar_color[1], bar_color[2]
      'left bar
      DrawRect 0, 0, virtualOffset[0], virtualScaledSize[1]
      'right bar
      DrawRect virtualScaledSize[0] - virtualOffset[0], 0, virtualOffset[0], virtualScaledSize[1]
      'upper bar
      DrawRect 0, 0, virtualScaledSize[0], virtualOffset[1]
      'lower bar
      DrawRect 0, virtualScaledSize[1] - virtualOffset[1], virtualScaledSize[0], virtualOffset[1]
      SetOrigin(virtualOffset[0], virtualOffset[1])
   End Method
   
   Method calcScreensize()
      Local scale:Float = Max(Float(virtualSize[0]) / physicalSize[0], Float(virtualSize[1]) / physicalSize[1])
      virtualScaledSize[0] = physicalSize[0] * scale
      virtualScaledSize[1] = physicalSize[1] * scale
      
      virtualOffset[0] = (virtualScaledSize[0] - virtualSize[0]) / 2
      virtualOffset[1] = (virtualScaledSize[1] - virtualSize[1]) / 2
      
      width = virtualSize[0]
      height = virtualSize[1]
   End Method
   
   Method remove()
      remove_graphics()
      remove_renderLayers()
   End Method
   
   Method remove_graphics()
      If gfx = Null Return
      CloseGraphics(gfx)
      gfx = Null
   End Method
   
   Method remove_renderLayers()
      For Local rl:TRenderLayer = EachIn Self.layerList
         rl.remove()
      Next
   End Method
End Type
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Taxicomics

BeitragDi, Nov 23, 2010 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erneut für die Antworten.
Hab jetzt die Auflösung hochgeschraubt, werde wohl die Grafiken neu und doppelt so groß machen, sprich von 16*16 auf 32*32, denn soviele Grafiken sinds noch nicht und die sind eher dummys.

@Firstdeathmaker
Danke erstmal für das Beispiel.
In deinem Framework sind Befehle die ich nicht kannte, ist das BMax?
Ich denke ich werde kein Extra Framework programmieren denn es soll ja ein kurzes Projekt bleiben Smile
Hoffe und denke das ich bald mal meine Ergebnisse zeige-bin gespannt was ihr dazu sagen werdet.

Taxicomics

Abrexxes

BeitragMi, Nov 24, 2010 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
So ganz nebenbei....das ist Retro für mich:
http://www.youtube.com/watch?v...re=related

und das wäre wohl das was sich einer denkt der das nie erlebt hat (oder zuviel davon!):
http://www.youtube.com/watch?v...re=related

Wink

Also...Retro ist unfär und fies. Wink
PS: Die Taste T galt der Hose, drückte man die im Original, liesen die Helden die Hosen runter, unser Held im remake verweigert das. (Die Auflösung ist im wohl zu hoch Cool )

cu
 

undefined

BeitragDo, Nov 25, 2010 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
@Abrexxes
Wuah, im Gegensatz zu manch anderem Retro-Klassiker war dieses Spiel aber schon damals grauenhaft! *schüttel* ... allerdings muss ich zugeben: die Amiga-Version sieht immerhin schon um einiges besser aus, als die Atari-Verion, die ich damals hatte ... Rolling Eyes *hehe*

Abrexxes

BeitragDo, Nov 25, 2010 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Als Vertreter der alten Schule (C+4, C64, Amiga 500+Extension,AtariSt4M-File40,286) müsste ich dir widersprechen, Ich tu es aber nicht da es die Geschichte schon getan hat. Wink

cu

Arrangemonk

BeitragDo, Nov 25, 2010 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
640x480/800x600 != retro

320x240 bzw 256x200 is retro (sogar der snes hatte noch solchne auflösungen)
ingeneur

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group