Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - WPShadow

Pages: 1 [2] 3 4 ... 22
16
GLBasic - de / Schnittpunkt berechnen
« on: 2014-Jan-17 »
Hi,

ich scheitere mal wieder an Mahte  :rant:

Kann mir irgendwer sagen, wie ich den Schnittpunkt von 2 Linien berechne? Ich grabe mich durch sämtliche Tutorials, aber ich komme nicht drauf.

Von beiden Linien habe ich Start und Endpunkt...  :S

LG

W.

17
GLBasic - de / PNG - Alpha Kanal
« on: 2014-Jan-15 »
Hi,

wenn ich Grafiken als *.png erstelle, dann wird der Alpha - Kanal nicht beachtet, wenn ich die png ausgeben will, oder?

Den muss ich in dem Fall manuell (mit ALPHAMODE) setzen, oder?

LG

W.

18
GLBasic - de / *.ini einlesen
« on: 2013-Dec-03 »
Hi,

mein Hirn setzt langsam aus, also brauche ich mal eure Hilfe.

Ich versuche verzweifelt eine *ini zu laden. Diese habe ich angehängt (gfx.ini)

Die dazugehörige Funktion ist:

Code: (glbasic) [Select]
FUNCTION sys_loader:
LOCAL ok, tmp, tmp$, lang, file$, file_load$

ok = DOESFILEEXIST("media/gfx/gfx.ini")

IF ok = TRUE

INIOPEN "media/gfx/gfx.ini"

lang = INIGET$("file", "count")


FOR tmp = 1 TO lang
tmp$ = tmp

file$ = "file_" + tmp$

file_load$ = INIGET$("file", file$)

sys_loader_ini(file_load$)

NEXT

INIOPEN ""

ELSE

sys_logging("1 Datei " + file$ + " wurde nicht gefunden.")

ENDIF


ENDFUNCTION

Grundlegend funktioniert das sys_logging korrekt und liefert mir auch zurück, dass die Datei vorhanden ist.

Im Ablauf soll sie nun geöffnet werden, count auslesen (funzt) und in die Schleife springen (funzt).

Sobald ich in der Schleife bin, funktioniert der 1. Aufruf vollkommen korrekt, d.h. die aufgerufenen Daten werden wie folgt aufgerufen:

file_1 media/gfx/stars.ini
file_2 NO_DATA

Aus irgendeinem Grund gibt file_2 keinen Inhalt zurück, egal was ich hier eingebe.

Ansich sollte der Code passen, da ich mehrere Files so einlese. Habt Ihr eine Idee?

LG

W.

19
GLBasic - de / Sprite Obergrenze
« on: 2013-Nov-29 »
Hi,

hat jemand von euch Erfahrung mit vielen 2D Tiles die gleichzeitig am Bildschirm sind?

Ab wann sollte man sich ca. Sorgen machen? Ich arbeite an einem kleinen 2D Spielchen mit Zoomstufe und habe etwas experimentiert und herum gerechnet und auf höchster Zoomstufe kratze ich gut und gerne an ca. 50k Tiles, wenn alle Layer gesetzt sind (was aber nur ein theoretischer Wert ist, da unsichtbare Elemente ja nicht gezeichnet werden).

Ich zeichne übrigens nur den Fensterausschnitt und nicht das vollständige Gebiet, daher kommt die hohe Anzahl also nicht.  =D

Kann das soweit zu Problemen führen oder brauche ich mir da keine Sorgen machen?

LG

W.

20
GLBasic - de / GLB_ON_QUIT
« on: 2013-Nov-15 »
Hi,

ich hab mal ein kleines Experiment gemacht und wollte beim Beenden des Programmes die Logs rausschreiben.

Code: (glbasic) [Select]
SUB GLB_ON_QUIT:
LOCAL output$[], tmp$

IF sys_settings.debugging = 1

SPLITSTR(PLATFORMINFO$("TIME"), output$[], " ")

OPENFILE(0, "logs/fps_" + output$[0] + "_" + output$[1] + ".txt", -1)

IF LEN(fps_log[]) > 0

FOREACH m IN fps_log[]

tmp$ = m.date$ + " | fps: " + m.log_fps

WRITELINE 0, tmp$

NEXT

ENDIF

CLOSEFILE 0

ENDIF

ENDSUB

Leider bekomme ich nur die Fehlermeldung: error 3 zurück geworfen und die Logs werden nicht geschrieben.

Irgendeine Idee, was error 3 zu bedeuten hat? Ich wäre ganz glücklich, wenn mir hier jemand helfen könnte!  =D

LG

W.

21
GLBasic - en / Voxel - Visibility
« on: 2013-Oct-01 »
Hi,

I've got a little problem with the visibility of cubes. I work on a little experiment, where I try to make a big cube with 16 x 16 x 16 small cube.

Now I need only the cubes that the camera can see, everything else isn't necessary to render. The only problem that I have is to detect which cube is hidden.

I tried X_COLLISIONRAY but I've no idea how to use it right.

This is my code for now...

Code: (glbasic) [Select]
// --------------------------------- //
// Project: voxel
// Start: Tuesday, October 01, 2013
// IDE Version: 11.322


// SETCURRENTDIR("Media") // go to media files

TYPE cube_type
typ
x
y
z
active
ENDTYPE

GLOBAL cube[] AS cube_type
GLOBAL counter, visible, size_total

main()



FUNCTION main:

CreateCube(0, 1, RGB(255, 0, 0))
CreateCube(1, 1, RGB(0, 255, 0))
CreateCube(2, 1, RGB(0, 0, 255))

size_total = 16

create_base_chunk(size_total)



WHILE TRUE

X_MAKE3D 1, 1000, 45



X_CAMERA 25, 25, 20, 0, 0, 0



visible = 0

draw_chunk(size_total)

X_MAKE2D

PRINT "counter: " + counter, 0, 0
PRINT "visible: " + visible, 0, 20



SHOWSCREEN

WEND


ENDFUNCTION

FUNCTION draw_chunk: size

FOREACH c IN cube[]

IF c.active = TRUE
INC visible, 1

X_MOVEMENT c.x - (size/2), c.z - (size/2), c.y - (size/2)
X_DRAWOBJ c.typ, 0
ENDIF

NEXT



ENDFUNCTION


FUNCTION create_base_chunk: size
LOCAL tmp_x, tmp_y, tmp_z
LOCAL c AS cube_type
LOCAL hit

FOR tmp_x = 0 TO size - 1
FOR tmp_y = 0 TO size - 1
FOR tmp_z = 0 TO size - 1

c.typ = RND(2)
c.x = tmp_x
c.y = tmp_y
c.z = tmp_z





c.active = TRUE





DIMPUSH cube[], c


INC counter, 1

NEXT
NEXT
NEXT



ENDFUNCTION




// ------------------------------------------------------------- //
// -=#  CREATECUBE  #=-
// ------------------------------------------------------------- //
FUNCTION CreateCube: num, sz, col
        // Diese Variablen sind als LOCAL definiert:
        // num, sz,
        sz=sz/2
        X_OBJSTART num
                // Front Face
                X_OBJADDVERTEX  sz, -sz,  sz, 1, 0, col
                X_OBJADDVERTEX -sz, -sz,  sz, 0, 0, col
                X_OBJADDVERTEX  sz,  sz,  sz, 1, 1, col
                X_OBJADDVERTEX -sz,  sz,  sz, 0, 1, col
                X_OBJNEWGROUP
                // Back Face
                X_OBJADDVERTEX -sz,  sz, -sz, 1, 1, col
                X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz, -sz, 0, 1, col
                X_OBJADDVERTEX  sz, -sz, -sz, 0, 0, col
                X_OBJNEWGROUP
                // Top Face
                X_OBJADDVERTEX -sz,  sz,  sz, 0, 0, col
                X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
                X_OBJADDVERTEX  sz,  sz,  sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
                X_OBJNEWGROUP
                // Bottom Face
                X_OBJADDVERTEX  sz, -sz, -sz, 0, 1, col
                X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col
                X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
                X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
                X_OBJNEWGROUP
                // Right face
                X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
                X_OBJADDVERTEX  sz, -sz, -sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz,  sz, 0, 1, col
                X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
                X_OBJNEWGROUP
                // Left Face
                X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
                X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, co :ol
                X_OBJADDVERTEX -sz,  sz,  sz, 1, 1, col
                X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
                X_OBJNEWGROUP
        X_OBJEND

ENDFUNCTION // sz

Any idea how I can implement it right?

CU

W.

22
GLBasic - de / Voxel - Sichtbarkeit
« on: 2013-Oct-01 »
Hi,

kennt sich jemand mit Voxel aus? Ich experimentiere gerade mit der Sichtbarkeit von Würfeln.

Dabei erstelle ich grundlegend einen 3D - Raster (im Beispiel 16 x 16 x 16). Der erstellte Bereich hat also 4096 Würfel. Die von der Kamera erfasste Fläche hat im Grunde jedoch nur

((16 x 16) * 3) - (3 * 16) = 720 Würfel

Ich rechne da: Grundfläche x 3 - der Überschneidungen der Flächen

Jetzt stellt sich für mich die Frage, wie ich die von der Kamera sichtbaren Bereiche errechnen kann?

Ich habe mit X_COLLISIONRAY experimentiert, aber ich bin mir rein vom Aufbau her nicht ganz sicher.

Hat jemand eine Idee, wie man sowas angehen kann? Hier mal der Code, mit dem ich experimentiere:

Code: (glbasic) [Select]
// --------------------------------- //
// Project: voxel
// Start: Tuesday, October 01, 2013
// IDE Version: 11.322


// SETCURRENTDIR("Media") // go to media files

TYPE cube_type
typ
x
y
z
active
ENDTYPE

GLOBAL cube[] AS cube_type
GLOBAL anzahl, sichtbar, size_total

main()



FUNCTION main:

CreateCube(0, 1, RGB(255, 0, 0))
CreateCube(1, 1, RGB(0, 255, 0))
CreateCube(2, 1, RGB(0, 0, 255))

size_total = 16

create_base_chunk(size_total)



WHILE TRUE

X_MAKE3D 1, 1000, 45



X_CAMERA 25, 25, 20, 0, 0, 0



sichtbar = 0

draw_chunk(size_total)

X_MAKE2D

PRINT "Anzahl: " + anzahl, 0, 0
PRINT "Sichtbar: " + sichtbar, 0, 20



SHOWSCREEN

WEND


ENDFUNCTION

FUNCTION draw_chunk: size

FOREACH c IN cube[]

IF c.active = TRUE
INC sichtbar, 1

X_MOVEMENT c.x - (size/2), c.z - (size/2), c.y - (size/2)
X_DRAWOBJ c.typ, 0
ENDIF

NEXT



ENDFUNCTION


FUNCTION create_base_chunk: size
LOCAL tmp_x, tmp_y, tmp_z
LOCAL c AS cube_type
LOCAL hit

FOR tmp_x = 0 TO size - 1
FOR tmp_y = 0 TO size - 1
FOR tmp_z = 0 TO size - 1

c.typ = RND(2)
c.x = tmp_x
c.y = tmp_y
c.z = tmp_z





c.active = TRUE





DIMPUSH cube[], c


INC anzahl, 1

NEXT
NEXT
NEXT



ENDFUNCTION




// ------------------------------------------------------------- //
// -=#  CREATECUBE  #=-
// ------------------------------------------------------------- //
FUNCTION CreateCube: num, sz, col
        // Diese Variablen sind als LOCAL definiert:
        // num, sz,
        sz=sz/2
        X_OBJSTART num
                // Front Face
                X_OBJADDVERTEX  sz, -sz,  sz, 1, 0, col
                X_OBJADDVERTEX -sz, -sz,  sz, 0, 0, col
                X_OBJADDVERTEX  sz,  sz,  sz, 1, 1, col
                X_OBJADDVERTEX -sz,  sz,  sz, 0, 1, col
                X_OBJNEWGROUP
                // Back Face
                X_OBJADDVERTEX -sz,  sz, -sz, 1, 1, col
                X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz, -sz, 0, 1, col
                X_OBJADDVERTEX  sz, -sz, -sz, 0, 0, col
                X_OBJNEWGROUP
                // Top Face
                X_OBJADDVERTEX -sz,  sz,  sz, 0, 0, col
                X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
                X_OBJADDVERTEX  sz,  sz,  sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
                X_OBJNEWGROUP
                // Bottom Face
                X_OBJADDVERTEX  sz, -sz, -sz, 0, 1, col
                X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col
                X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
                X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
                X_OBJNEWGROUP
                // Right face
                X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
                X_OBJADDVERTEX  sz, -sz, -sz, 1, 0, col
                X_OBJADDVERTEX  sz,  sz,  sz, 0, 1, col
                X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
                X_OBJNEWGROUP
                // Left Face
                X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
                X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, col
                X_OBJADDVERTEX -sz,  sz,  sz, 1, 1, col
                X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
                X_OBJNEWGROUP
        X_OBJEND

ENDFUNCTION // sz

lg

W.

23
GLBasic - de / Not sure if SORTARRAY
« on: 2013-Sep-05 »
Hey,

Problem:

Ich habe 3 Elemente, die dargestellt werden. Die 3 Elemente überlappen quasi. Wenn ich das "unterste" Element (im Array das 0te) aktiviere, dann soll es an die oberste Stelle wandern. Soweit kein Problem (dachte ich), also "reproduziere" ich es (mit DIMPUSH), setze es damit also an die allerletzte Stelle und lösche einfach das Original. Leider ergibt sich dadurch ein Bug in meinem Programmchen.

Also bekam ich den Tip SORTARRAY zu nutzen und damit das erste Objekt an die letzte Position wandern zu lassen. Mein Problem dabei ist, daß ich mir nicht sicher bin, ob "sortieren" einen Sinn macht, da ich immer nur ein unteres Element haben möchte, das ans Ende wandert und nicht die ganze Reihe. Es kann auch nur sein, daß das 3. von 5 Elementen den Platz von Nr. 5 übernehmen müßte und Nr. 5 zu 4 und 4 zu 3 wird.

Gibt es evtl. einen Weg einfach die Zeiger zu tauschen oder macht es da eher Sinn selbst eine Verkettete Liste zu schreiben?

lg

W.

24
GLBasic - de / Debug Modus
« on: 2013-Aug-29 »
Hey,

kleine Frage: wie funktioniert das eigentlich mit den Haltepunkten in GLBasic? Ich habe meine Haltepunkte gesetzt und versuche auch die entsprechenden Ausgaben zu bekommen, aber entweder stoppt das Programm nicht bzw. reagiert auf F5/shift + F5 nicht (und ja, im aktivierten Debug - Modus) oder die Anwendung stürzt gleich ganz ab.

Irgendeine Idee?

lg

W.

25
GLBasic - de / Funktionsaufruf
« on: 2013-Aug-12 »
Hi,

ich bastle momentan an einem Projekt und mir ist folgendes aufgefallen:

Wenn ich eine Funktion erstelle, in der gewisse Werte "vordefiniert" sind

Code: (glbasic) [Select]
FUNCTION test: a = 1, b = 2, c = 3

ENDFUNCTION

dann ist es zwar möglich, die Function ohne eingetragenen Wert aufzurufen

Code: (glbasic) [Select]
test()

jedoch bereitet es mir leichte Probleme, wenn ich z.B. nur den Wert von c ändern will.

Der Aufruf

Code: (glbasic) [Select]
test(,,3)

funktioniert in dem Fall ja nicht.

Wie kann ich da vorgehen? Muss ich eigentlich sämtliche Werte mit angeben, wenn ich einen geänderten Wert angeben möchte?

lg

W.

26
GLBasic - de / Frage zu OPENFILE
« on: 2013-Jun-11 »
Hi,

wird bei Openfile bereits etwas geladen oder wird einfach nur das File zum Laden bereit gestellt?

Ich frage, weil ich versuchen möchte ein größeres File zu erstellen (z.B. 100mb+) und dort mal eine spezifische Zeile suchen möchte --> wie z.B. bei VIM o.ä. Editoren

lg

W.

27
GLBasic - de / Newton
« on: 2013-Jun-06 »
Hey,

hat in letzter Zeit mal jemand was mit Newton gemacht?

Hat jemand eine Idee, wie ich eine 2 Objekte von einander abstoßen kann --> quasi magnetisch?

Je näher sie sich kommen, desto höher sollte die Abstoßende Kraft werden... Ich habe damit etwas herum gespielt, aber ich komme nicht wirklich auf eine Lösung...  :S

LG

W.

28
GLBasic - de / Projektfrage
« on: 2013-Jun-03 »
Hey,

kennt sich jemand allgemein mit Physik aus?

Es geht um eine Mischung aus Masse, Aerodynamic & Magnetismus!  :D

Es geht mir nur um eine grobe Übersicht, nicht um was superpräzises...

LG

W.

29
Code Snippets / Simple Random Color Selection
« on: 2013-Apr-27 »
Hi,

university was very, very boring today, so here's the result of the last 15 minutes...

Use SPACE to create new colors...

well, that's it  =D


Code: (glbasic) [Select]
// --------------------------------- //
// Project: chaoscolor
// Start: Saturday, April 27, 2013
// IDE Version: 11.171


// SETCURRENTDIR("Media") // go to media files

TYPE color
x
red
green
blue
ENDTYPE

GLOBAL c[] AS color, x, y, b1, b2, col_r, col_g, col_b

main()


FUNCTION main:

SYSTEMPOINTER TRUE

WHILE TRUE

MOUSESTATE x, y, b1, b2
DRAWLINE x, 0, x, 610, RGB(255, 255, 255)

IF KEY(57) =1 THEN add_color()
show_color()

PRINT "RED:   " + col_r, 100, 620
PRINT "GREEN: " + col_g, 100, 650
PRINT "BLUE:  " + col_b, 100, 680

DRAWRECT 200, 620, 100, 720, RGB(col_r, col_g, col_b)


SHOWSCREEN
WEND

ENDFUNCTION

FUNCTION add_color:
LOCAL col AS color

col.red = RND(255)
col.green = RND(255)
col.blue = RND(255)
col.x = 0

IF LEN(c[]) > 0
FOREACH co IN c[]
INC co.x, 1
NEXT
ENDIF

DIMPUSH c[], col

ENDFUNCTION

FUNCTION show_color:
LOCAL count

IF LEN(c[]) > 0
FOREACH col IN c[]
DRAWLINE col.x, 200, col.x, 600, RGB(col.red, col.green, col.blue)

IF x = col.x
col_r = col.red
col_g = col.green
col_b = col.blue
ENDIF

IF col.x > 1024 THEN DELETE col
NEXT
ENDIF

ENDFUNCTION

30
GLBasic - de / Dateien aufzählen
« on: 2013-Apr-18 »
Hey,

wie genau könnte ich es angehen, in einem Pfad die vorhandenen Dateien zu "zählen"?

Es handelt sich nur um einen Dateitypen, aber ich wüßte gerne, wieviele Files davon im Pfad sind.

DOESFILEEXIST("*.bla")
wird nämlich wohl kaum funktionieren  :D

Hat wer 'ne Idee?

LG

W.

Pages: 1 [2] 3 4 ... 22