PlanetSwitch Planet3DS PlanetVita PSP.de PlanetiPhone Classics Forum Handheld-Wiki

PGN-ID:[?] (Nicht eingeloggt)
Login
Registrieren
PlanetDS PlanetGameboy N-Page.de
portablegaming.de  

Zurück   portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung


Development Abteilung Ihr wollt für euren Lieblingshandheld Spiele oder Tools entwickeln?
Bitte die Präfixe benutzen!

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 01.03.2007, 17:19   #1
 
Benutzerbild von Dygera
 
Registriert seit: 07.02.2007
Ort: Hamburg
Alter: 31

Dygera wird schon bald berühmt werden

Dygera eine Nachricht über ICQ schicken Dygera eine Nachricht über MSN schicken
Standard Beispiel Quellcode

Hi,
ich vermute zum Programmieren für den GBA gibts viele Tricks und Kniffe, um Probleme besonders effizient oder Ressourcensparend zu lösen (Einsparmaßnahmen von Abfragen). Bestimmte Lösungswege, auf die man als Anfänger nicht so ohne wetieres kommt. Deshalb wäre es mal sehr interessant zu sehen, wie Profis ein Spiel programmieren.
Mich interessieren dabei besonders Rollenspiele wie Pokemon.
Ich will da ja nix klauen oder so; nur zum lernen.
Dummerweise finde ich nirgends Quellcodes zu Spielen. Auch bei emule wird man nicht fündig.

Am liebsten hätte ich natürlich mal den Source-Code von einem richtig großen, professionellen Spiel gesehen. Aber ich wäre schon sehr froh überhaupt was zu finden.

Kennt ihr Quellen für sowas?
Dygera ist offline   Mit Zitat antworten
Sponsored Links
Alt 04.03.2007, 16:22   #2
 
Benutzerbild von Dygera
 
Registriert seit: 07.02.2007
Ort: Hamburg
Alter: 31

Dygera wird schon bald berühmt werden

Dygera eine Nachricht über ICQ schicken Dygera eine Nachricht über MSN schicken
Standard AW: Beispiel Quellcode

Ich habe schon sehr oft gelesen, dass es hier Sources geben soll:
gameboy advance development
Aber da ist nix.
Auch bei den ganzen Demos, die man dort runterladen kann, sind keine dabei.
Es geht mir eigentlich nur darum, zu verstehen, wie das mit dem Scrollen abläuft. Dass, wenn ich zur Seite gehe, nicht mein Char geht, sondern quasi die Welt.
Das Prinzip von die-Welt-steht-und-wenn-ich-über-den-Levelrand-laufe-kommt-das-neue-Gebiet, ist ja noch einfach. Da würde ich einfach nen neuen Tile-Background reinladen, wenn die Pos. überschritten wird, aber dieser frei-Scrollbare Hintergrund ist mir ein Rätsel.
Außderdem wüsste ich gerne (und ich würde nicht fragen, wenn es in einem meiner zig Tutorials stehen würde), wie die Kollisionsabfrage läuft.
Wenn man eine riesige Welt (Pokemon) hat, dann kann man doch nicht bei jedem Schritt ALLE auf der Welt nciht begehbaren Punkte abfragen !?!
Man bräuchte eher sowas wie Tile-Abfragen (dass man eine bestimmte Tileart nie betreten kann). Das käme schon ressourcensparender. Aber wie wird das in echt gemacht; von den Profis?
Dygera ist offline   Mit Zitat antworten
Alt 04.03.2007, 16:53   #3
Moderator
 
Benutzerbild von O-bake
 
Registriert seit: 30.09.2002
Alter: 40

O-bake genießt hohes Ansehen
O-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes AnsehenO-bake genießt hohes Ansehen

Standard AW: Beispiel Quellcode

So eine Weltkarte ist sehr leicht zu realisieren (Das gilt übrigens auch für Jump n'Runs und so ziemlich alle anderen Spiele).

Deine Weltkarte ist ein zweidimensionales Array.
z.B
byte Weltkarte[100][100]

Dann hast du ein Feld aus 100 mal 100 Kästchen, über das du dich bewegen kannst.
Ein solches Kästchen (Textur) sollte etwa so groß wie dein Charakter sein, hier einfach mal als Beispiel 20x20 Pixel.
Du kannst nun jede Koordinate dieses Arrays mit Werten füllen, wobei du selbst festlegst, welche Zahl welcher Textur entspricht. Dafür legst du am besten noch ein eindimensionales Array als Texturbibliothek an.

So kann dann z.B bedeuten, dass 1=Berg, 2=Wiese, 3=Wasser, etc. ist.

Wie groß ist der GBA-Screen nochmal? Ich weiss es gerade nicht und behaupteeinfach, er ist 200x200 groß (dann passen genau 10x10 dieser Texturen drauf).
Deine Weltkarte kannst du dann einfach mit einer Schleife zeichnen:

for (x=0;x<=9;x++)
for (y=0;y<=9;y++)
{
DrawTexture(x*20,y*20,Weltkarte[x+PlayerPositionX][y+PlayerPositionY])
}

wobei es natürlich die Funktion DrawTexture(int x,y,TextureNummer) geben muss, in der dann die Texture mit der entsprechenden Indexnummer auf die Position x,y geschrieben wird.

Wenn sich dein Charakter jetzt über die Weltkarte bewegt, fügst du ihm noch Werte hinzu. Nämlich einmal seine Postion auf dem Raster der Karte (PlayerPositionX,PlayerPositionY) und sofern er sich flüssig und nicht schrittweise bewegen soll, auch noch einen Scroll-Wert zwischen 0 und 19 hinzu (bei 20 ist ein Schritt komplett und die Position auf der Karte wird um 1 erhöht).

Ich hoffe das war jetzt einigermaßen verständlich, aber die Vorteile liegen auf der Hand. Deine Weltkarte kann groß sein und besteht nur aus Zahlen, d.h., sie nimmt praktisch keinen Speicher weg. Jede Textur liegt im Speicher nur einmal und wird je bei bedarf auf den Bildschirm gezeichnet.

Du kannst das Weltkarte-Array natürlich auch aus einer eigenen Struktur machen, der du Eigenschaften wir durchlässig, tödlich, usw. hinzufügst.
Bei jedem neuen Schritt fragst du erstmal, ob die Textur auf der Weltkarte, auf die du gehen möchtest, überhaupt die Eigenschaft "durchlässig" hat, ansonsten kannst du überhaupt nicht in diese Richtung gehen.

Um das alles zu realisieren, solltest du dir einen Karten/Texture-Editor für Windows (oder dein Betriebsystem) schreiben. Da kannst du die dann einfach dein Spiel zusammenklicken und das GBA-Programm kann diese fertigen Karten dann lesen und wiedergeben.

Das klingt bestimmt nach sehr viel Arbeit, aber wenn du das Grundprinzip erstmal begriffen hast, geht das sehr leicht.

Geändert von O-bake (04.03.2007 um 16:56 Uhr)
O-bake ist offline   Mit Zitat antworten
Alt 04.03.2007, 18:49   #4
 
Benutzerbild von Dygera
 
Registriert seit: 07.02.2007
Ort: Hamburg
Alter: 31

Dygera wird schon bald berühmt werden

Dygera eine Nachricht über ICQ schicken Dygera eine Nachricht über MSN schicken
Standard AW: Beispiel Quellcode

Wow, das ist ja interessant.
Ich glaube, dann muss man wohl mit einem ziemlich großen Array arbeiten (wenn man mal an Pokemon denkt).
Und die Spielfiguren bräuchten alle "Globale"-Positionen, die dann von der oberen linken Ecke der ganzen Welt aus zählt.
Das werde ich gleich als nächstes versuchen.
Dygera ist offline   Mit Zitat antworten
Antwort

  portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PG.de mehr fehler im Quellcode wie microsoft.com Tarlah Sonstiges 18 23.06.2004 05:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:12 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0
Template-Modifikationen durch TMS
PortableGaming.de © bk 2000 - 2010

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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117