Aktuelle Zeit: 31.03.2020 16:25

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: 3D Qube Engine ala Minecraft
BeitragVerfasst: 22.03.2020 09:30 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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 26.3.2020 14:00 Antalya Zeit.

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

Ein Paar kurze Hinweise:

Code:

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

OQE v0.1

MineCraftClone Versuch 003 v 014

Code by TFT

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

Verwendete Werkzeuge:

PureBasic 5.71 , Oggre 3D Engine , Paint.net

Game Idee by MAJONG
Assets by Mincraft Java version

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

Besonderheit in dieser Version:

Comando create , erzeugt aus einer Highmap, Chunks
Taste F4 Switcht die Collisionsabfrage
Statusanzeige Links
Comando go , Der Spieler läuft automatisch in
Blickrichtung. Bei einem Widerstand wird automatisch
gesprungen.
Comando stop , beändet das laufen
Im Flugmodus und MousWeel, darf man sich jetzt
auch bewegen.
MouseCursor Hide Bug beseitig.

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
- load ac , läd alle Chunks und stellt sie dar.
- 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
- 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

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

- 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.

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.



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.

_________________
TFT

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Zuletzt geändert von tft am 28.03.2020 14:57, insgesamt 21-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 22.03.2020 12:03 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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:
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:
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 22.03.2020 12:44 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Viel Glück beim umsetzen einer Voxel Engine :)
Bin gespannt auf die Updates.

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 23.03.2020 10:10 
Offline

Registriert: 29.08.2004 14:47
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/ryhz8N2amqJTIysqJmoif9dWG6EJqi4cbe3aRxa9IktrdgCMsQvXqyPWwubh67j9

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;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 23.03.2020 10:19 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 23.03.2020 10:50 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 24.03.2020 17:08 
Offline

Registriert: 29.08.2004 13:18
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!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 24.03.2020 20:40 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 24.03.2020 22:11 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
Hallo,

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

Update siehe oben.

Gruss TFT

_________________
TFT

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Qube Engine ala Minecraft
BeitragVerfasst: 25.03.2020 15:54 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye