Wie programmiert man ein Inventar???

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

BB-Freak

Betreff: Wie programmiert man ein Inventar???

BeitragSo, Mai 09, 2010 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute ich programmier grad ein Spiel bei dem es ein Inventar gibt ich weiß aber nicht genau wie ich das machen soll ich habs so lidrig gemacht aber es ist nicht so der Brüller. Ich würde gerne wissen wie man sowas am besten macht (zb. dass man Items austauschen kann und so weiter). Ich bin sicher es finden sich ein par Profis die dazu eine Musterlösung haben Very Happy Wäre nett sie zu hören !!!

ozzi789

BeitragSo, Mai 09, 2010 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir Type an.

z.B
Code: [AUSKLAPPEN]
Type inv_gegenstand
   Field id
   Field bild
   Field wert
   Field attribut
End Type


Den Rest wirst du selber lösen können, und falls nicht, lass es uns wissen.
mfg ozzi Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Xeres

Moderator

BeitragSo, Mai 09, 2010 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du schon mal die Forensuche angeworfen? Ich bin ziemlich sicher zu Items & Types wirst du was finden.
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)

Silver_Knee

BeitragSo, Mai 09, 2010 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bietet sich sicher ein 2D -Dim array an. in das man diese Types speichert.

D2006

Administrator

BeitragSo, Mai 09, 2010 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Satzzeichen sind keine Rudeltiere, obwohl deine Sätze an anderer Stelle mehr Punktuation gebrauchen könnten. Achte bitte mehr auf Rechtschreibung und Grammatik, damit man deine Sätze beim ersten Mal lesen verstehen kann.

Wenn du hier eine Musterlösung haben willst, dann wirst du höchstens Leute finden, die einen Preis nennen. Es kommt ohnehin ganz auf den Einsatzzweck des Inventars an (vorallem, da du ja schon Zugriffsmethoden genannt haben willst, die ja stark von dem User-Interface abhängen.) Du kommst also nicht umhin, dir selbst Gedanken über die zugrunde liegende Datenstruktur zu machen. Aber das sollte ja kein Problem sein... hast ja außerhalb des Beginnerbereichs gefragt. Da kann man ja hinreichend Vorkenntnisse erwarten. Wink
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Omenaton_2

BeitragMo, Mai 10, 2010 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Du mußt erstmal ausdenken und zusammenschreiben was alles dein Inventar genau können muß. Das ist ganz wichtig, weil sonst kann es passieren, daß du mittendrin merkst, daß dein System grundsätzlich falsch aufgelegt ist und du noch nachträglich Einiges umschreiben mußt.

Ich habe schon ein umfangreiches (ich nenne es so) "Item- und Inventory-System" programmiert.
Ich kann dir nur sagen, das ist sehr, sehr viel Arbeit und kann ganz schön komplex werden. Man sitzt mehrere Monate dran. (wenn man sowas wie in WoW haben will).
Am besten such dir ein Beispiel aus einem Profi-Spiel und schreibe zusammen welche Features das in einzelnem beinhaltet. Analysiere es !

Das Zweite was ich dazu sagen möchte ist es, daß so ein Inventory System zu programmieren an sich nicht schwierig ist und verlangt nicht nach besonderem Können oder gar Tutorials. Wenn du dich mit den Grundlagen von Blitz Basic auskennst, dann mußt du das auch selber hinbekommen können. Gute Planung und Durchhaltevermögen vorausgesetzt.

Smily

BeitragMo, Mai 10, 2010 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Inventory-System von WoW ist doch nicht kompliziert. Das ist in einem bis ein paar Nachmittagen erledigt.

So eins wie bei Diablo wäre schon cooler und je nach Erfahrung herausfordernter.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Ava

Gast

BeitragMo, Mai 10, 2010 14:08
Antworten mit Zitat
Smily hat Folgendes geschrieben:
Das Inventory-System von WoW ist doch nicht kompliziert. Das ist in einem bis ein paar Nachmittagen erledigt.

Wohl eher eine halbe Stunde bis Stunde. Smile Das WoW-System ist wirklich SEHR einfach Exclamation (zumindest in BlitzMax Rolling Eyes)

Smily hat Folgendes geschrieben:
So eins wie bei Diablo wäre schon cooler und je nach Erfahrung herausfordernter.

Da passt "einen bis ein paar Nachmittagen" schon besser. Das Diablo-System hat so einige Tücken und ist - nicht nur für den Spieler - oft sehr umständlich. *g* Als Spieler finde ich Diablo-Inventare nicht wirklich cool, eher sehr nervig! - aber es ist ganz interessant, sowas mal zu programmieren. Wink

Chrise

BeitragMo, Mai 10, 2010 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Hab hier mal ein kleines Inventar gebaut.
An manchen Stellen kann es sein, dass ich einen Schritt zu umständlich gemacht habe. Aber ich denke mit Types gelöst ist das ganze sehr flexibel und erweiterbar Wink
EInfach fragen, wenns welche gibt.

BlitzBasic: [AUSKLAPPEN]
SeedRnd MilliSecs()
Graphics3D 640,480,0,2
SetBuffer BackBuffer()

Global Kennung%,index%,D%,mx,my,mhit,Beschreibung$
Global ORad%=6;nur für Objektdarstellung
Global Gewicht#;Inventar-gesamt-gewicht

Global Automatischt_Zusammenfuehren=False

AddObjekt("Schuh",2.95)
AddObjekt("Stiefel",3.1)
AddObjekt("Schwert",7.6)
AddObjekt("Keule",12.0)
AddObjekt("Fleisch",1.25)
AddObjekt("Schild",28.5)

For index=1 To 50
LiegtRum(Rand(160+ORad,620-ORad),Rand(48+ORad,448-ORad),Rand(1,6),Rand(1,10))
Next

Local A.Auffindbar,I.Inventar
Local X,Y

Local Timer=CreateTimer(60)
While Not KeyHit(1)
Cls

mx=MouseX()
my=MouseY()
mhit=MouseHit(1)
Beschreibung$=""
Gewicht#=0

;Inventar-darstellen
X=0
Y=0
For I.Inventar=Each Inventar
Gewicht=Gewicht+I\O\Gewicht*I\Anzahl
If RectsOverlap(mx,my,1,1,16+X*16,48+Y*16,16,16) Then
Beschreibung$=I\O\Name+" - Gewicht: "+I\O\Gewicht+" Kg x"+I\Anzahl
Color 255,0,0
If mhit Then ObjektAbwerfen(I)
Else
Color I\O\R,I\O\G,I\O\B
EndIf

Rect 16+X*16,48+Y*16,16,16,0
Oval 18+X*16,50+Y*16,12,12,1

X=X+1
If X=7 Then X=0:Y=Y+1
Next

Color 255,255,255
Text 16,32,"Inventar:"
Rect 16,48,112,240,0
Text 16,300,"Gewicht: "+Gewicht+" Kg"

;herumliegende Objekte darstellen
For A.Auffindbar=Each Auffindbar
D=Distance(mx,my,A\X,A\Y)
If D<=ORad Then
Beschreibung$=A\O\Name+" - Gewicht: "+A\O\Gewicht+" Kg - x"+A\Anzahl
Color 0,255,0
Else
Color A\O\R,A\O\G,A\O\B
EndIf
Oval A\X-ORad,A\Y-ORad,ORad*2,ORad*2,1
If D<=ORad And mhit Then ObjektAufnehmen(A.Auffindbar)
Next

Color 255,255,255
Text 160,32,"herumliegende Objekte:"
Rect 160,48,460,400,0

Text 16,460,"Ausgewähltes Objekt: "+Beschreibung$

WaitTimer Timer
Flip 0
Wend
End

Type Inventar
Field O.Objekt,Anzahl
End Type
Type Auffindbar
Field X,Y
Field O.Objekt,Anzahl
End Type
Type Objekt
Field Name$,Kennung%
Field Gewicht#

Field R,G,B
End Type
Function Distance#(X1#,Y1#,X2#,Y2#)
Return Sqr((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2))
End Function
Function AddObjekt(Name$,Gewicht#)
Local O.Objekt,ExistiertBereits
For O.Objekt=Each Objekt
If O\Name=Name And O\Gewicht=Gewicht Then
ExistiertBereits=True
Exit
EndIf
Next
If ExistiertBereits=False Then
O.Objekt=New Objekt
Kennung=Kennung+1
O\Kennung=Kennung
EndIf
O\Name=Name
O\Gewicht=Gewicht

O\R=Rand(255)
O\G=Rand(255)
O\B=Rand(255)
End Function
Function LiegtRum(X,Y,Kennung%,Anzahl%)
Local O.Objekt
For O.Objekt=Each Objekt
If O\Kennung=Kennung Then
Local A.Auffindbar=New Auffindbar
A\X=X
A\Y=Y
A\Anzahl=Anzahl
A\O.Objekt=O.Objekt
Return 1
EndIf
Next
End Function
Function ObjektAufnehmen(A.Auffindbar)
Local I.Inventar
If Automatischt_Zusammenfuehren=True Then
For I.Inventar=Each Inventar
If I\O.Objekt=A\O.Objekt Then
I\Anzahl=I\Anzahl+A\Anzahl
Delete A.Auffindbar
Return 1
EndIf
Next
EndIf
I.Inventar=New Inventar
I\O.Objekt=A\O.Objekt
I\Anzahl=A\Anzahl
Delete A.Auffindbar
Return 1
End Function
Function ObjektAbwerfen(I.Inventar)

LiegtRum(Rand(160+ORad,620-ORad),Rand(48+ORad,448-ORad),I\O\Kennung,I\Anzahl)
Delete I.Inventar

End Function



lg,
Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Skabus

BeitragMo, Mai 10, 2010 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@Ava&Smily: Poser Rolling Eyes

Es hängt eher verdammt davon ab, wie viel von der Arbeit man "Inventarsystem" nennt.
Ich hab für mein mehrgliedriges, in Kategorien unterteiltes Inventarsystem recht lange gebraucht.

Liegt vor allem daran, dass ich Pragmatiker bin und mehr Zeit mit testen als mit Entwickeln verbracht habe.
Schaut man sich nämlich mal so einige Menüs von "Profis" an, merkt man das die Leute TOLL programmieren können, aber scheinbar ihr Menü nie selbst benutzt haben.

Man sollte wie schon gesagt wurde vor allem darauf achten, dass man das System was man verwendet von vornherein den Anspruch entspricht den man final im Spiel will.

Beispiel: Wenn man ein einfaches Listensystem macht, also spricht, die Items werden einfach aufgelistet, muss man sich überlegen: Wie viel Einträge(Listenelemente) will ich haben? Welche Auflösung hat mein Spiel, ergo wie groß soll die Box sein? Soll es mehrere Seiten geben durch denen man durchschaltet kann?
Will ich eine FESTE Anzahl ein Einträgen haben?Soll der Spieler sein Inventar erweitern/vergrößern können?Sollen Items getrennt nach Kategorien werden?Sollen Items, im Falle, dass man alle Items in eine
Liste packt nach Alphabet sortiert werden oder dann doch wieder nach Kategorie?

Das mag alles trivial klingen, aber es ist entscheidend für den Spieler später.Wenn das Itemmenü fürn Arsch ist und du z.B. bei einem RPG etwa 20 - 25% des Spiels in diesem Menü verbringst, kannst du sicher sein, dass bei einigen Spielern schnell der Geduldsfaden reißt.

Ein anderer Tipp: Verzichte auf zu viele Animationen.Eine psychologische Betrachtung von Interaktion mit Systemen durch den Menschen zeigte, dass Menschen immerwiederkehrende monotone Handlungen(was das benutzen und Ausrüsten von Items darstellt) um so unangenehmer empfindet wenn diese monotone Handlung mit Wartezeit verbindet.

Klar ist das COOL zu programmieren wenn das Menü 10 - 15 Sekunden braucht bis der Nutzer was eingeben kann, aber auf Dauer stört das den Spielfluss und nervt gewaltig!Ich erinnere mich da an Spellforce oder Sacred oder kA wo das war, da hat es 3 oder 4 Sekunden gedauert ein Item von der einen Stelle zur anderen zu bringen, weil sie eine "schöne" Animation eingebaut haben bei der das Item von der einen Position auf dem Raster zur anderen gehuscht ist.

Ich hätte jedes Mal in den Bildschirm schlagen können Rolling Eyes

Ava: Jap, das geht mir bei Diablo-like-Itemmenüs genauso^^
Weiß nur nicht, was genau daran jetzt schwerer als an Listensysteme sein soll.
Du hast ein Raster und Items, die bekommen nen Rasterwert(1x1,3x3 etc.) beim automatischen Aufnehmen von Items wird ein freier Rasterplatz gesucht, wenn man das Item als Cursor hat macht man bei Klick aufs Raster das selbe.Es entfällt sogar einiges, da man keine lästigen Kategorien machen muss, keine Zusatzmenüs etc.(z.B. zum wegwerfen von Items oder dergleichen).Einzig und allein nen Sotierverfahren würde ich dort schwieriger finden als bei z.B. Listensysteme.

MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu
  • Zuletzt bearbeitet von Skabus am Mo, Mai 10, 2010 18:54, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragMo, Mai 10, 2010 16:17
Antworten mit Zitat
@Skabus

Das einzige, was diese Systeme voneinander unterscheidet, ist ansich die variable Grösse der Gegenstände im Grid. Aber genau dieser Punkt macht vieles, was in einem Inventar mit "Einheitsgrösse" so einfach ist, relativ aufwendig. Nicht nur das Sortieren, sondern auch das verschieben von Objekte innerhalb des Inventars und zwischen Inventaren bzw. das Autauschen von Gegenständen. Es muss sehr viel mehr geprüft und es muss zusätzliche Alternativen geben, wenn eine Aktion aus irgendeinem Grunde fehlschlägt. (PS: WoW-Grid mit Diablo-Grid Vergleich ... nicht Grid mit Liste vergleich ^^ - Liste ist immer das einfachste, sollange man keine TreeList verwenden will, die man selber programmieren muss Wink )

Zum Gesamtpaket des Inventars zähle auch ich übrigens nicht nur das Aufnehmen, Ablegen, Verschieben, Vertauschen und Sortieren von Gegenständen, sondern auch die Grundfunktionen zum Ausrüsten und Anwenden von Gegenständen (sowohl per Mouse-Doublehit, als auch Menü), das Anzeigen von Tooltips und - wenn man es braucht - das Crafting und Kombinieren von Gegenständen, sowie die Verwaltung mehrerer Inventartaschen, Taschen-in-Taschen und Itemstacks. Razz
 

BBPro2

BeitragMo, Mai 10, 2010 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Omenaton_2 hat Folgendes geschrieben:
Man sitzt mehrere Monate dran. (wenn man sowas wie in WoW haben will).


aber auch nur wenn man so einen programmierstil pflegt, wie du es - mit voller überzeugung - tust.
das is ne sache von 2 bis 3 Tagen wenns ordentlich geplant und strukturiert ist....

D2006

Administrator

BeitragMo, Mai 10, 2010 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Stopp!

Das reicht zu dem Thema. Mehr will ich über Omenaton_2s Programmierstil nicht lesen müssen. Das artet sonst nur in Flame aus.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

BBPro2

BeitragMo, Mai 10, 2010 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar Wink

sag ma d2006 bist du eigentlich ex divine dominion ?
 

Omenaton_2

BeitragMo, Mai 10, 2010 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Diejenigen, die glauben ein WoW-ähnliches Item- und Inventory System an 1-2 Nachmittagen programmieren zu können verschätzen sich gewaltig (und dabei ist das Wort gewaltig eine Untertreibung.) Smile

Ich möchte mal nur in paar Stichpunkten zusammenfassen was mein Item- und Inventory System kann :

- Item-Files von der Festplatte einlesen und speichern
- Ausführliche Tooltips zu mehr als 12 ganz unterschiedlichen Klassen von Items (Eine Waffe muß anderen Tooltip haben als ein Schild oder eine Ware zum Verkaufen)
- Vergleichstooltip. Wenn der Spieler in dem Inventory auf ein Item zeigt, der einer Klasse enstpricht, von dem er schon ein Item ausgerüstet hat, dann müssen nebeneinandern 2 Tooltips angezeigt werden, damit der Spieler vergleichen kann, welche die besseren Werte hat, was er schon ausgerüstet hat oder wa er in Inventory hat.
- Die Werte und die Bonus Werte die die ausgerüstete Items haben den entsprechenden Attributen zuweisen, solange sie tatsächlich ausgerüstet sind
- Items innerhalb des Inventorys zwischen den einzelnen Slots hin und her bewegen (Drag & Drop), auch austauschen lassen.
- Das auch mit Stapelbaren Items und auch mit aufteilen von Stapeln
- Beim aufheben von Item den passenden Ausrüstungsslot in dem Ausrüstungsfenster hervorheben
- Items nur in dem passenden Slot mit Drag & Drop ausrüsten und wieder entfernen lassen (beim Entfernen auch die Veränderung an den Statistiken beachten)
- Items aus dem Loot-Behälter in das Inventory packen lassen. Sowohl mit Drag & Drop als auch mit nur Anklicken mit rechter Maustaste oder alle auf ein Mal mit klick auf den Button "Loot all"
- Die Werte von Set-Items erkennen und zusammenrechnen, wenn Set voll ist nochmal extra Set bonus
- Aktivierbare Gegenstände die etwas machen, wie ein Heal Potion. Aktivieren lassen, verschiedene Effekte anwenden, darunter Buff Effekte, die über Zeit eine Wirkung entfalten, was angezeigt werden muß mit Icon und Timer und Effekt Anzeige
- Aktivierbare Gegenstände können mehrere Ladungen haben und das muß angezeigt und verwaltet werden
- Weil Items mit Ladungen eine variierbare Anzahl von aktuellen Ladungen haben können, müssen solche Gegenstände individualisiert und auch die aktuelle Ladung extra auf der Festplatte abgespeichert werden, Typus alleine reicht hier nicht.
- Aktivierbare Items wie Potions muß der Spieler aus dem Inventory in die Aktionsleiste ziehen können, damit sie einfach durch anklicken ohne, daß ein Ausrüstungsfenster geöffnet sein muß schnell benutzt werden können.
- "Enchants" von Items (ich nenne das Expansions). Weil ein Item ein Enchant haben kann oder nicht, kann hier auch nicht einfach nur ein Item Typus genommen werden, der aktuelle Enchant muß auch extra und individuell festgehalten werden
- Items wenn der Spieler mit einen Laden verbunden ist verkaufen lassen, dabei die Preise richtig berechnen und verrechnen
- Items in den verschiedenen Läden sortiert anzeigen und kaufen lassen, manche nur einzeln, andere auch in 10er Schritten. Diese beim Kaufen automatisch in freie Inventory Slots packen. Auch Stapelbar berücksichtigen-.
- Items falls sie nicht endlos sind in den Läden nach gewisser Zeit wieder auffüllen

Und damit man das alles auch testen kann (und ohne Testen ist NICHTS wirklich fertig) muß man natürlich eine menge Icons machen und die einzelnen Item Files wo die Eigenschaften festgehalten werden erstellen was auch eine ganze menge Arbeit ist.

Ich würde die Person, die das an paar Nachmittagen schafft erstmal sehen !
 

BBPro2

BeitragMo, Mai 10, 2010 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
keine lust das alles zu lesen - mach ich vielleicht nachher

der einzige satz den ich gelesen hab ist jedenfalls ein fail sondergleichen... sorry

Zitat:

Und damit man das alles auch testen kann (und ohne Testen ist NICHTS wirklich fertig) muß man natürlich eine menge Icons machen und die einzelnen Item Files wo die Eigenschaften festgehalten werden erstellen was auch eine ganze menge Arbeit ist.


da schreibt man sich nen kleinen algorithmus der die dinger provisorisch erstellt und testet die dann kurz
das dauert 1 stunde wenns hoch kommt.
wenn du natürlich die zeit alle items deines spiels zu erstellen zur entwicklungszeit des item-management-systems dazuzählst kommt eine größere zeitspanne als 2-3 tage raus

das zählt aber nicht dazu !


im übirgen muss so etwas nicht "hart" getestet werden
du brauchst deine gesamte spieldynamik gar nich anzuschmeißen wenn du diese routinen testen willst
es reicht vollkommen jede einzelne routine mit ein paar standardtests auf korrektheit zu überprüfen

wenn jede routine das macht was sie machen soll und du dir vorher genau überlegt hast was welche
routine machen soll damit das ganze klappt... dann klappt das auch!
bei großen spielen sitzt in der entwicklungsphase niemand da und startet alle 5 minuten das gesamte spiel und schaut ob das was er implementiert hat in dem spiel das macht was es machen soll
wenn die routinen das machen was in der spezifikation stand dann machen sie bei ordentlicher planung
auch in einem anderen kontext - sprich dem spiel - das was sie tun sollen



als ich 12 war hab ich auch einen fußballmanager programmieren wollen

angefangen hab ich mit der gui, gefolgt von der mühsamen eingabe hunderter fußball spieler mitsamt
alter, name, etc.
die spieldynamik selbst wurde selbstredend niemals implementiert
aber da war ich 12... daraus lernt man!


Zitat:
Items falls sie nicht endlos sind in den Läden nach gewisser Zeit wieder auffüllen


das z.b. gehört nicht mehr zum inventory system sondern zur spieldynamik. kann hier also nicht dazugezählt werden


wie gesagt die anderen punkte habe ich nicht gelesen, grad keinen bock
 

Omenaton_2

BeitragDi, Mai 11, 2010 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
BBPro2 hat Folgendes geschrieben:

wenn jede routine das macht was sie machen soll und du dir vorher genau überlegt hast was welche
routine machen soll damit das ganze klappt... dann klappt das auch!
bei großen spielen sitzt in der entwicklungsphase niemand da und startet alle 5 minuten das gesamte spiel und schaut ob das was er implementiert hat in dem spiel das macht was es machen soll


Solche Einstellung ist einer der 2 Hauptgründe, warum fast alle größere Computerspiele total verbuggt sind.
Das ist das umgekehrte "was nicht sein darf das gibt es nicht" Denken, als
"was sein muß das gibt es - was funktionieren soll, das funktioniert auch".

Ich teste mein Programm in Durchschnitt alle 5 Minuten, natürlich immer in Hinblick auf das was ich gerade neu implementiert habe. Das führt dazu, daß ich in meinem Riesen-Projekt nicht mehr als 2 Bugs drin habe (und die sind dokumentierte kosmetische Bugs die ich später besser beheben kann).
Wenn ich dann eines Tages mit meinem Spiel fertig bin, dann bin ich tatsächlich fertig und es wird nicht so sein, wie bei den meisten Computerspielen, die dann noch 500+ Bugs haben von denen die meisten aus Zeit und Motivationsgründen nicht beseitigt werden können. (Und während man an der Beseitigung der 500 Bugs arbeitet, findet man noch mehr und man verursacht durch die Änderungen neue Bugs.)
 

BBPro2

BeitragDi, Mai 11, 2010 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
fail.

der grund warum die meisten großen spiele total verbuggt sind liegt an minderbemittelten
codern
sorry aber ist so

große spieleschmieden mit guten mitarbeitern liefern verdammt guten code aus mit
nur sehr wenigen bugs (keine bugs gibt es nicht)

dass deine spiele nur 2 (!) bugs haben wage ich zu bezweifeln - ich glaube es gibt KEIN
mittelgroßes projekt mit nur 2 bugs
du siehst die meisten nicht - das ist klar
und sie sind nicht sonderlich wichtig
aber du hast mehr als 2 bugs, glaub mir

"Wenn ich dann eines Tages mit meinem Spiel fertig bin"

genau das ist das problem
wenn du alle 5 minuten testest brauchst du ca 1000x so lang wie EA dafür bräuchte mit einem
programmierer der es mit tests löst (tests auf die routinen, nicht auf den gesamtkontext)

dein alle-5-minuten-test-verfahren ist kommerziell nicht ansatzweise tragbar
so KÖNNEN keine spiele programmiert werden

ZaP

BeitragDi, Mai 11, 2010 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
EA stellt keine Spiele her, sondern publiziert die nur. Man muss fairerweise bemerken, dass Omenaton_2 bereits ein Projekt im Showcase hat, und ein weiteres recht ansprechendes in der Galerie.
Weiterhin glaube ich nicht, dass BB-Freak Interesse daran hat, ein professionelles Inventarsystem herzustellen.

Mein Ansatz für ein Inventarsystem:

2D Array z.B. 8x8 und ein Type der alle Eigenschaften der Items beschreiben kann.

BlitzBasic: [AUSKLAPPEN]

Type TItem
Field image
Field amount
...
End Type

Dim Inventory.TItem(7, 7)



Zur Ausgabe kann man das nehmen (in der Annahme, dass alle TItem\image 32x32 Pixel sind)

BlitzBasic: [AUSKLAPPEN]

For y = 0 To 7
For x = 0 To 7
If Inventory(x, y) <> Null
DrawImage Inventory(x, y)\image, x * 32, y * 32
EndIf
Next
Next
Starfare: Worklog, Website (download)

Skabus

BeitragDi, Mai 11, 2010 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Hoffnung, dass das nicht noch mehr in flamen ausartet:

Ich kenne einige professionelle Programmierer durch die Uni und auch dort habe ich stehts anklang gefunden,
wenn ich sagte:

"Fast wichtiger als das Entwickeln von Code ist das Testen von Code".
Es ist einfach nicht wahr, dass Testen "unprofessionell" ist, sondern das Gegenteil ist der Fall:
Wer nicht testet ist nicht nur unprofessionell sondern auch verdammt dämlich^^"

Willst du 5 Stunden an einem Algorithmus sitzen um dann zu merken: Kuhl, Compiler sagt "0 Fehler"
aber wenn du versuchst, dass Programm zu starten stürzt es ab, friert ein, funktioniert nicht mehr,
behindert andere Algorithmen etc.

Klar ist natürlich, dass man bei großen Projekten nicht immer das komplette Programm kompilieren kann,
dann sitzt du ja Stunden am Rechner, ABER:

Da es Dinge wie Quickbuild und dergleichen gibt, kann ja jederzeit auch nur der Kontext geprüft werden,
der gerade bearbeitet wird, ohne, dass man ständig alles neu kompilieren muss.

Ich merk das bei Aves Certim aber auch schon, dass es langsam unhaltbar wird, ständig das gesamte
Spiel hoch und runterzukompilieren nur um zu testen ob eine kleine Veränderung funktioniert.


Das ist dann wirklcih fail XD

MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group