Magnar

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Magnar

Beitrag von Artus »

Hio Leute,
ich möchte mal mein Projektvorsten von dem ich wenn es keine Probleme gibt und es auch mit der schule unter einen Hut zubringen ist^^ eine Eingen-Demo sprich ohne Storry und schnickschnack in ca. 4-5 monaten veröffentlichen.
Es wird ein Rollenspiel welches man am besten mit Ultima 2-6 zu vergleichen ist. Die Kacheln sind noch nicht die entgültigen da ich alles selber machen muss. Außerdem muss ich darauf achten den Computer nicht in die Knie zu zwingen^^.
hehe da ich soviele schöne grafiken nehme nagt das zimmlich an der leistung -.-. Es wird vollstöndig mit der Tastatur gespielt (kommplet ohne maus) :mrgreen: und wird mit eingabe von befehlen gesteuert, naja wer ultima gespielt hat kennt dat ja naja bewegen tutt man schon mit den Pfeiltasten^^

Screenshot:
Bild


mfg artus

Moved by NicTheQuick: Das gehört nicht ins "Ankündigungen"-Forum
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

nicht schlecht herr specht :D

gefällt mir :allright:
-.-"
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Sieht wirklich ganz gut aus. :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Beitrag von Artus »

Danke^^, uns Sorry habs wohl ins falsche forum gepackt das man es verschoben hatt. Falls ihr Fragen habt nur raus^^ hab auch nen editor programmiert^^ (beim editor hat mir leo zum teil geholfen, Danke Leo^^) Es wird nicht die Grafik sondern Die Welt und ihre Geschichte im Vordergrund stehen. Un meiner meinung nach macht das ein gutes spiel aus. ;) Da gibt es auch ne menge beispiele^^ da währe Gothic 1,2 Ultima 1-9 usw. Ich hab außerdem ein problem wenn ich die karte größer als 100 mal 100 mache ruckelts -.- muss ich mir wohl noch was einfallen lassen was^^ den die Weltkarte soll später riesig werden ^^ naja wenn ihr fragen habt nur raus^^.

MFG Artus
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

zeichnest du immer alle hin?
Auch die die außerhalb liegen?

Wenn ja: Zeichne nur den Bereich der auf dem Screen sichtbar ist. Dann sollte es auch nicht mehr ruckeln.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Der ultimative Performance-Tipp schlechthin: Vermeide alle(!) 2D-Drawing-Befehle!

So kannst du wahnsinnig viel Geschwindigkeit herausholen, wenn kein einziges StartDrawing() in deinem Code vorkommt. Es ist so, glaube mir! Der Befehl und alle 2DDrawing-Operationen, besonders "DrawText()" sind enorme Geschwindigkeitsbremsen. Da reicht schon folgender Code, um einen Geschwindigkeitseinbruch von 30-40% zu erzielen:

Code: Alles auswählen

StartDrawing(ScreenOutput())
DrawText("x")
StopDrawing()
Schaue auch hier: http://forums.purebasic.com/german/view ... c&start=10
Am besten du machst dir einen Bitmap-Font und gibst den Text damit aus. Und auch ansonsten gilt: Alles über Sprites regeln! Blos nicht auf die Idee kommen, irgendwelche Box()- oder Line()-Befehle zu verwenden...
Benutzeravatar
Artus
Beiträge: 280
Registriert: 15.01.2005 20:53

Beitrag von Artus »

ok, werd ich versuchen mal umzusetzen vielen Dank^^ :allright: hehe hab nähmlich zimlich viele Drawing befehle drin^^ danke für die tips aber ich weis nich ob sich das alles mit einer BitmapFont machen lässt und ich weis auch nich genau wie ich das umsetzen soll -.-

werde mal nen screenshot dämnächst vom editor posten wenn ihr wollt^^
mfg artus
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Das mit dem Bitmap-Font ist eigentlich überhaupt kein Problem. Es ist allerdings von Vorteil, wenn Du Buchstaben malst, die alle die gleiche Breite haben.

Dann machst Du Dir einfach eine Funktion, die das Bitmap-Font-Sprite erstmal an der richtigen Stelle clipt, indem Du per Mid() immer den aktuellen Buchstaben aus dem zu schreibenden String ausliest, dessen ASCII-Code ermittelst per Asc() und dementsprechend ausrechnest, an welcher Stelle geclipt werden muß. Dann zeichnest Du das Sprite einfach und der nächste Buchstabe ist dran...

Wenn Dir das nicht weiterhelfen sollte, sag bescheid, dann schreib ich Dir gern auch die Funktion ;)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Wenn man das was du da beschrieben hast mit Pointern machst, ergibt
sich bei mir ein Gewinn im Speed von bis zu einer Sekunde! Hier mal ein
kleiner Code:

Code: Alles auswählen

Procedure A(strString.s)
    DefType.BYTE *ptrString
    DefType.l lngResult
    
    *ptrString = @strString    
    While *ptrString\b&$FF
        lngResult + *ptrString\b&$FF
        *ptrString + 1
    Wend
    
    ProcedureReturn lngResult
EndProcedure

Procedure B(strString.s)
    DefType.l lngI, lngResult
    
    For lngI = 1 To Len(strString)
        lngResult + Asc(Mid(strString, lngI, 1))
    Next
    
    ProcedureReturn lngResult
EndProcedure

#TestString = "fsdnfjsdlfjsdlfjlsdfjsldjflsdkfjsdlfjsldfjskldfjlskfjsdureowiruweourwiouroweurowruowuroiweruiowroweruowekvsnvksdnvbnoiejgowjfosdfhlsjkdhfsdhfowelfjsdlkfjlsdkfjsdlfjsdlkfjsdlkfsdfjklsdjflsjfl"

lngTimeA = ElapsedMilliseconds()
For I = 0 To 10000
    A(#TestString)
Next
lngTimeA = ElapsedMilliseconds() - lngTimeA

lngTimeB = ElapsedMilliseconds()
For I = 0 To 10000
    B(#TestString)
Next
lngTimeB = ElapsedMilliseconds() - lngTimeB

OpenConsole()
PrintN(Str(lngTimeA))
PrintN(Str(lngTimeB))
Input()
Bild
Benutzeravatar
Epyx
Beiträge: 247
Registriert: 29.08.2004 01:40
Computerausstattung: AMD64 X2 DualCore 6000+ , 3GB Ram , WinXP sp3
2x Ati Radeon HD4800 ~ CrossFireX
Kontaktdaten:

Beitrag von Epyx »

Sag mal kann es sein das du die komplette Karte permanent zeichnen lässt, also diese 100*100 Tiles auch die die sich ausserhalb des Bildschirms befinden ???
Wenn dies so ist dann begrenze das Anzeigen auf die die sich innerhalb des Bildschirms befinden, denn normalerweise geht PB da nicht in die Knie eine Handvoll Tiles auf den Bildschirm zu zeichnen.


Was die Bitmap Font Routine angeht, kannst du dir ja mal meine UserLib ansehen da schreibst du mit nur folgendem kurzen Code deine Texte.
Dabei gehts automatisch Zentriert ,Links oder Rechtsbündig

Code: Alles auswählen


 EP_LoadFont8( 0,"Fonts/pix8 Goldfont.bmp"); einmal Laden

 EP_Text8(0, 100,100,"Bla Bla Bla dein Text",1); So oft schreiben wie man will

 
Vieleicht ist sie ja was für dich, http://forums.purebasic.com/german/viewtopic.php?t=4781
If you can't make it good, at least make it look good.
Bill Gates
Antworten