3D Qube Engine ala Minecraft

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

3D Qube Engine ala Minecraft

Beitrag von tft »

Hallo,

ich habe schon länger wider mit Programmieren angefangen. Und habe eine Herausforderung gesucht.
Da ich MineCraft Tekit super fand, und die Möglichkeiten die sich mit den fielen Addons und Server
Modifikationen boten. Da jetzt auch noch dieser blöde Virus kram noch mehr Zeit beschert. Werde ich
das mal richtig in Angriff nehmen.
Leider sitze ich gerade in Antalya fest, und habe nur meinen Laptop dabei. Aber das ist dann genau
die richtige zutat um zu versuchen effizient zu coden.
Da ich finde das PB eine super Sprache ist. Und ganz fiele Möglichkeiten hat. Die leider durch dieses
vermaledeite OGRE ins Land der Unwichtigkeit verdrängt wurde. Möchte ich versuchen es trotzdem
mit OGRE zu follenden.

Der Arbeitsname ist OQE. Steht für OgreQubeEngine.

Jeder ist eingeladen mit Kommentaren oder Wissen sich daran zu beteiligen. Denn das Project ist
zwar von aussen gesehen sehr einfach. Aber es steckt eine menge Hirnschmalz dahinter. Vorallem
sich auf das wesentliche zu beschränken ist garnicht so einfach.

Mit Erlaubniss der Admins , würde ich dann gerne hier meine Vortschritte Posten, und gelegentlich
einen Download link Eintragen. Damit interessierte den Vorschritt selber mal anschauen können.

Hier schon-mal ein Bild.

Bild

Und hier der aktuelle Download Link vom 10.4.2020 10:00 Antalya Zeit.

http://www.sourcemagic.ch/MCC.zip

sowie ein Link zu einer Map.

http://www.sourcemagic.ch/Map-001.zip

Sowie ein kleines YouTube Video

https://www.youtube.com/watch?v=DLHvyH7 ... e=youtu.be

Ein Paar kurze Hinweise:

Code: Alles auswählen

;-------------------------------------------

OQE v0.1

MineCraftClone Versuch 003 v 018

Conzept und Umsetzung by TFT
Code by TFT and Daniel Dusentrieb

Temucin
Consulting & Consalting
Bahnhofstr. 15
CH-8447 Dachsen
info@sourcemagic.ch

Verwendete Werkzeuge:

PureBasic 5.71 , Oggre 3D Engine , Paint.net

Engine Vorlage von 1992, AMOS3D, AMIGA 500, TFT

Game Idee by MAJONG
Assets by Mincraft Java version

:--------------------------------------------

Besonderheit in dieser Version:

Full Window Support
Sounds für Button Klick, Laufen, Abbauen und aufbauen.
Funktionsleiste getrennt für Creator und Play Mode
Load und Save From Zip, Chunk und Mesh
  Wenn eine Map geladen wird. Ist es immer LOAD_HIGHMAP = 1
DeleteBlocks : delb(X) , dela(X)
	delb() löscht alle Blöcke im Actuellen Chunk mit der Nummer X
	dela() löscht alle Blöcke im Actuellen Chunk mit dem Alpha Wert X*10 + 0-9
Zeitraffer = 1, dann wird die Actuelle Systemzeit verwendet
Ist ein Fenster geöffnet, werden keine Blöcke gesetzt oder gelöscht
Blöcke lassen sich nur bei SetMode = SetBlock löschen, das soll verhindern das beim
  Wechsel oder rotieren ausversehen ein Block geköscht wird.
Hilfe Text Fenster aufruf. Mit RMB über den UI Elementen im Creator Modus.

Die Daten Strukture wurde grundlegend geänderd. Daten der Chunks und der Sichtbaren
Umgebung wurden von einander getrennt. Dadurch können alle Chunks im Chunk Verzeichniss
Dargestellt werden. (Bei fielen Chunks kostet Der Move Befehl zu fiel zeit)

Die Chunk und Mech Daten sind jetzt immer Local gespeichert. Im Dokumenten Ordner unter OQE.
Im Verzeichniss Maps werden die Mit Save gespeicherten Maps abgelegt.

Die Parameter.txt befindet sich ebenfals jatzt im Localen Ordner.

Die Absolute Position in Blocks wird nun berechnet und in der Console angezeigt.

Comando Load AC entfernt.

lhm0 schaltet den LOAD_HIGMAP Tag ab
lhm1 schaltet den LOAD_HIGMAP Tag ein
	Bei 1 wird die automatische Ebenen Erzeugung eingeschaltet, Bei einer Highmap ist das
	nicht gewollt.

home      Damit kann man sich an die Standart Position der Map zurück Porten.
sethome   Die actuelle Position wird als Standart Position in den Parametern gespeichert.

ws1	Damit wird der Schalter für den Automatische Zentrieren der Fenster bei start eingeschaltet
ws0	und das schaltet ihn aus

Bekante Bugs:

Console:

F1 Schaltet die NB Controll ansicht ein
Console aufrufen mit "c"
Comandoeingabe starten mit "Return"
Comandoeingabe beänden mit nochmaligem "Return"

- quit , beändet das programm
- ac(X) , stellt das AbientLight auf RGB(X,X,X)
- clear all , Löscht alle Chunk und Mesh Daten
  und stellt die Default Daten wider her, Start
  bei 0,0,0, LOAD_HIGHMAP = 0
- time(X) , es wird die Tageszeit gestelt. Wobei 
  nur die Stunden einem festen wert zugeteilt werden
- timelap(X) , der Ablauf der Tageszeit kann in der
  geschwindigkeit eingestellt werden. 0 = Stop und alles
  grösser gild als Multiplikator für Zeitraffer
- create , erzeugt aus einer HighMap Chunks
- free , Versetzt den Player an den Höchst möglichen Punkt
  Das ist dafür, damit wenn man mal feststeckt oder
  ins bodenlose fält.
- reset , Startet das Programm neu
- de , wechselt zur Deutschen Sprache
- en , wechselt zur Englischen Sprache
- full , wechselt in den Voll Window Modus
- smal , wechselt in den Kleinsten Windows Modus
- load , läd ein Chunk und Mesh verzeichniss aus einem Zip.
  löscht vorher die orginal verzeichnisse und kopier das Zip
  ins Hauptverzeichniss. Neustart.
- save , Speichert die Chunk und Mesh verzeichnisse in ein Zip
- delb() löscht alle Blöcke im Actuellen Chunk mit der Nummer X
- dela() löscht alle Blöcke im Actuellen Chunk mit dem Alpha Wert X*10 + 0-9
- lhm0   schaltet den LOAD_HIGMAP Tag ab
- lhm1   schaltet den LOAD_HIGMAP Tag ein
	 Bei 1 wird die automatische Ebenen Erzeugung eingeschaltet, Bei einer Highmap ist das
	 nicht gewollt.
- home      Damit kann man sich an die Standart Position der Map zurück Porten.
- sethome   Die actuelle Position wird als Standart Position in den Parametern gespeichert.
- ws1	Damit wird der Schalter für den Automatische Zentrieren der Fenster bei start eingeschaltet
- ws0	und das schaltet ihn aus

Player:

- F3 Schaltet den Flugmodus an
- F2 Schaltet das Info Fenster für die Blöcke ein
- F4 Schaltet die Player Colision an/aus
- WASD bewegt den Spieler in der X und Z Achse
- RF Bewegt den Spieler im Flugmodus hoch und runter.
- Mouserad bewegt die Camera vom Player Kopf weg.
- Mit der LMB wird der Block der in der Funktions
  Leiste ausgewält wurde gesetzt.
- Tasten 1-0 wählen die zu setzenden Blöcke
- Mit der RMT werden Blocks entfernt.
- Mit der Space Taste kann gesprungen werden
- CTRL löst die Mouse von der Camerasicht um
  Buttons zu betätigen.
- U schaltet das UI ein und aus
- O öffnet Blockauswahl Fenster, bei LMB übernimmt
  der selektierte Button den Block.
- I öffnet Linkes Fenster
- INSERT Switscht die SetModi für das Setzen der
  Blöcke / Set/Change/Rotate

- Die Kollisionsabfrage für den Spieler ist
  etwa 2 Blöcke Hoch.
- Zur orientierung gibt es oben im Bild einen
  Kompas. 
- Im unteren Bereich sind 10 Funktions Icons. Diese
  können entweder mit der Mouse oder den Tasten
  1-0 angewählt werden. Dort werden die Items zur
  benutzung abgelegt und selektiert.

Teran erzeugung:

Es kan mithilfe einer HighMap durch das Comando
create in der Console Chunks erzeugt werden. Die
vortlaufenden erzeugung von Chunks ist dabei abgeschaltet.

Es gibt 3 Ebenen. Die Luft Chunks über der Ebene 0.
Die Ebene wo Boden und Luft sich treffen.
Sowie die Erd Chunks, die Komplett mit Stein
gefüllt sind.

ChunkData:

die Daten die den Chunk representieren, bestehen
aus dem Header mit allgemeinen Chunk Informationen
sowie den Feldern ChunkData/Type/Rotate/Light.
Dazu wird mit Speicherblöcken gearbeitet die ent-
sprechend Adressiert werden. Das ist norwendig, weil
mit Feldern und Structuren das abspeichern und laden
zu lange dauert.

Mesh erzeugung:

Ein Chunk besteht aus dem DatenPaket das den Chunk
mit Blocks füllt. Die CreateMech() Funktion baut
aus diesen ChunkDaten ein Mesh und weist den Qube
Seiten die Texture Kachel zu und erzeugt nur dann
eine Site, wenn diese als Sichtbar gekenzeichnet
ist. Das Mesh wird gespeichert.

Texture:

Eine Material Texture ist in Kacheln aufgeteilt.
Diese sind im Orginal jeweils 16 * 16 Punkte und
es gibt 16 * 16 Kacheln die mit einer durchlaufenden
Nummer ereicht werden können.

BlockData:

Hir werden die Daten zu den Blöcken abgelegt. Dort
werden die Kacheln der Seiten Bestimmt und die
eigenschaften der Blöcke.

Multi Coding:

da mitlerweile noch jemand an dem Project mitaarbeitet
habe ich DROPBOX eingerichtet und den Main Code so
angepast, das der zusätzliche Coder unahängig von meinem
Code arbeiten kann.

Das Chunk System ist als Nachlader konzipiert und besitzt teoretisch keine Grenze, ausser den zur
Verfügung stehenden Plattenspeicher. Chunks die noch nicht existieren müssen erzeugt werden. Daher gibts
einen Ruckler.

Gruss TFT

PS: Ich habe auf meine Rechtschreibfehler (C) . Nachmachen ist unter Strafe verboten.
Zuletzt geändert von tft am 10.04.2020 08:54, insgesamt 26-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

An dieser Stelle möchte ich mich bei zwei leuten Bedanken, die mir Code zur Verfügung gestellt haben.

Zum einen ..... der Unbekannte :-) Danke für die Macros zum setzen und löschen von Bits in einer Variablen.

Code: Alles auswählen

Macro SetBits( _Value_ , _Bit_ , _State_ )
  (( _Value_ ) & ~ (1<<( _Bit_ - 1)) | ( _State_ )<<( _Bit_ - 1 ))
EndMacro
Macro GetBits( _Value_ , _Bit_ )
  (( _Value_ ) >> ( _Bit_ - 1 ) & 1 )
EndMacro
ich habe die Variablen Namen verändert, damit diese klar als Mocro Variablen zu erkennen sind.

Und dann haben wir noch jemanden aus diesem Forum "alter Man", der mir freundlicherweise eine Procedure
gegeben hat. Mit der man die überschneidung von Volumen Cube/Cube ermitteln kann. Ich habe daraus
dann eine Richtungs gebundene Kollisions Erkennung gebaut.

Code: Alles auswählen

Procedure.i KollisionQuaderQuader(dX1m.d,dY1m.d,dZ1m.d,dL1x.d,dL1y.d,dL1z.d,dX2m.d,dY2m.d,dZ2m.d,dL2x.d,dL2y.d,dL2z.d)
  ; dX1m,dY1m,dZ1m - Mittelpunkt 1.Quader
  ; dL1x,dL1y,dL1z - Länge,Breite,Höhe 1.Quader
  ; dX2m,dY2m,dZ2m - Mittelpunkt 2.Quader
  ; dL2x,dL2y,dL2z - Länge,Breite,Höhe 2.Quader
 
  If Abs(dX1m-dX2m)<(dL1x+dL2x)*0.5 And Abs(dY1m-dY2m)<(dL1y+dL2y)*0.5 And Abs(dZ1m-dZ2m)<(dL1z+dL2z)*0.5
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
 
EndProcedure
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: 3D Qube Engine ala Minecraft

Beitrag von Mijikai »

Viel Glück beim umsetzen einer Voxel Engine :)
Bin gespannt auf die Updates.
Fabio
Beiträge: 234
Registriert: 29.08.2004 14:47

Re: 3D Qube Engine ala Minecraft

Beitrag von Fabio »

Hallo tft Du alter Haudegen :)

Das Game läuft schonmal recht gut, habe mir gleichmal eine Mauer und Turm gebaut und einen Tunnel gegraben.

Aber, der Kurser lässt sich nicht wircklich lösen.
Wenn ich mit "ALT" den Kurser freigebe und auf eine anderes Fenster klicke, wird dieser zwar hervorgehoben
aber der Kurser fängt sich wieder in dem Spiel und lässt sich nicht mehr freigeben.

Auch das Auswahlfenster für die Bausteine verschwindet, sobald man mit dem Mausrad herauszoomt.

Ich habe von dem ganzen mal eine Screenvideo gemacht.

Video verfällt: 20-Apr-2020!

http://snap.ashampoo.com/ryhz8N2amqJTIy ... PWwubh67j9

PS: Ich hoffe Dir geht es soweit gut,
Gruß,
Fabbio
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

Hallo,

das mit dem Mauserad ist Absicht. Wenn die Camera Ihre Position verlässt. Wird das UI
abgeschaltet. Das kann ich aber Optional machen, sobald ich ein Config Fenster habe.

Das mit dem MouseFang ..... ok. Schaue ich nach. ...... Behoben ..... danke

Danke für das Feedback.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

Aktuelle Exe verfügbar vom 23.3.2020 9:00 Antalya Ortszeit.

- Tag Nacht Zyklus eingeführt.
- BUGFIX Mousefang bei TAB
- BUGFIX CTRL zum selektieren der Funktions Button
- BUGFIX Kollisionsabfrage der Buttons

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von GPI »

Ach, sowas wollte ich auch mal schreiben :)

Ich bin ja immer noch der Meinung, das so eine simple 3D-Engine durchaus potential hat.
Eine 3D-Welt zu gestallt, das könnte ich nicht, aber mit Würfeln was zusammenbauen - das krieg ich zusammen...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

Hallo,

und genau das ist mein Ansatz. Du kannst ja mal ausprobieren wie es für dich ist. Feedback kann ich gut gebrauchen.

Version Aktualisiert. Download im ersten Post.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

Hallo,

danke Chiral, an den Test. Ich konnte dadurch den Doppel Setz Bug an der Chunkgrenze beseitigen.

Update siehe oben.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: 3D Qube Engine ala Minecraft

Beitrag von tft »

Hallo,

und Täglich grüsst das Update ( 013 , Download im ersten Post ). Mit der Taste O wird jetzt das Rechte Fenster geöffnet und es stehen
alle zur zeit Verfügbaren Blöcke zur Auswahl. Mit einem LMB wird der Block in das Auswahl Button
übernommen, das mit den Tasten 1-0 ausgewählt wurde.

Der nervige Doppel SetBlock Bug habe ich endlich beseitigen können.

Es gibt jetzt auch die Möglichkeit das Fenster zu vergrößern. Siehe Info Text. Allerdings Spielen die
Fenster noch nicht so recht mit.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten