Archiv verlassen und diese Seite im Standarddesign anzeigen : [Software 3D Engine] Planung
v8-mogwai
04.01.2001, 13:54
hallo,
mir ist aufgefallen, das manche leutz ein 3d spiel proggen wollen.
ich beschäftige mich seit einigen tagen mit einer einfachen 3d-eingine auf vektorbasis.
kennt jemand das spiel STUNTS? so ähnlich soll die engine werden.
habe schon angefangen, aber auf einige probleme gestoßen!
wer lust hat, schicke mal 'ne email (adr steht im profil). die daten kommen dann bald zu euch.
das soll in C/C++ und teilweise ASM enstehen und NICHT auf die windowskomponenten zugreifen (ala VB)!
v8
ChaosAngel
05.01.2001, 11:45
hmm, ich hatte dir vor ein paar tagen ne Mail geschickt, kann ja sein das du noch nicht dazu gekommen bist, sie abzurufen.
Schreib bitte einfach mal in dieses Forum ob du ne Mail von mir erhalten hast, und wenn ja ob du mir zurückgeschrieben hast.
(Dieser scheiss Neujahrscrasch bei GMX hat bei mir alles durcheinander gebracht)
THX
v8-mogwai
05.01.2001, 13:14
@chaosangel:
habe heute (5.1.2001) mail abgerufen, um 14:13 geantwortet.
(vor ein paar tagen hast du gemailt? dieses thema ist doch erst seit gestern drin!)
dis dann,
v8
nichts gegen eure programmierkenntnisse aber
wenn es nur darum geht eine vorhandene engine zu verwenden wäre es glaube ich gescheiter eine wie Genesis3D ... zu nehmen die sind nämlich wirklich schon professionell.
fände es gescheiter erst ein spiel mit so einer engine zu machen und dann eine engine entwickeln die genau zum spiel paßt
Freestyleman
05.01.2001, 20:58
Ich kenn stunts, aber das ist doch schon URALT oder??
Oder meinst du ein anderes??
MfG Freestyleman
v8-mogwai
05.01.2001, 21:21
@ Rocket
hast du mehr infos über genesis3d? klingt interessant (eadr. in profil)
es geht hier nicht um's spieleproggen, sondern ums proggen einer 3d-graphik-engine. keine engine wie doom, doom2 oder so, sondern echt 3d, die für alles mögliche verwendet werden kann (auto-sim, flugsim, space-sim). es wird kein kommerzieller erfolg angestrebt, sondern das selbermachen (sehen, wie's und ob's geht). also nicht das spiel ist primärziel, sondern erst die engine (wir sind ja keine politiker, die schon alles (ver)planen, wobei noch garnicht sicher ist, ob's realisierbar ist).
erst das fundament, dann...
@freestyleman
ja! genau das mit der grottenengine! ist doch echt kultig, oder? (genau wie wings of fury oder alien breed).
man könnte natürlich noch mehr farben einbauen (mehr als 16), etwas besseres clipping (schon mal über 'ne brücke gefahren, aufgenommen, und dir das mal per kamera aus verschiedenen blickwinkeln angeguckt, wo das auto (1m hoch) hinter leitplanke verschwindet (50cm hoch)? dann noch versch. helligkeiten, in abhängigkeit zum sonneneinfall...
v8
Orpheus_neo
09.01.2001, 14:30
Glück oder nicht Glück!
Ich hab mir vorgenommen mit Turbo Pascal 7.0 mal ein 3D-Engine zu basteln, um den Dreh einfach mal rauszubekommen. Einfach einen Würfel, den man von allen Seiten anschauen und um jede Achse drehen kann. Doch ist das nicht so einfach wie ich dachte(Diese Sinus, Cosinus, Geradengleichungen, KKS, etc.)
Ich würde mich über einen Sourcecode(evtl. mit ein paar Kommentaren) oder einer Beschreibung sehr freuen.
(oder gibt es einige tuts dafür?)
Viel Spass noch!
wenn ihr (als hilfe :)) den Source einer 3D Engine braucht, dann schaut mal auf
http://www.radonlabs.de/
da könnt ihr euch die Engine mit komplettem Source ziehen! (C++ wenn ich mich nicht irre)
b0nzai
[](N-E-O)[]
11.02.2001, 16:41
Hi!
Also ich kenn mich eigendlich nur ein bischen mit C++ aus, aber mich interessiert so was auch. Ich wäre dankbar für Source oder ähnliches, vielleicht kann ich euch dann helfen!
E-Mail: n02132@hotmail.com
v8-mogwai
13.02.2001, 17:35
@[](N-E-O)[]
geht in ordnung, dauert aber noch etwas, da ich gerade meine computer umstelle, alles neu installiere etc.. bis das alles wieder geht...
komme nur gelegendlich über den PC eines kumpels ins netz, naja.
v8
v8-mogwai
10.03.2001, 14:09
hallo,
also ich habe jetzt die dateien für die 3d-engine ins netz gestellt (noch KEIN QUELLCODE, nur wieder vorüberlegungen...), unter:
www.v8-mogwai.de (http://www.v8-mogwai.de)
v8
wenns euch interessiert, im Linux Magazin 4/2001 beginnt ein Workshop über 3D OpenGLProgrammierung.
Hi
Weiß jemand, wo man OpenGL Tutorial auf DEUTSCH herbekomme? Ich versteh die Englischen nich so gut. Und wenn ich das gut verstehen soll, brauch ich halt was Deutsches :-D
mfG. Working
ChaosAngel
30.03.2001, 21:29
@Working
Also meines Wissens sind die NeHe Tutorials die besten für OpenGL. Sie sind zwar in Englisch aber auf http://www.sundancerinc.de/ gibts die deutsche Übersetzung
unter Archiv/APIs/NeHe bis Tutorial 12.
(unter anderem Übersetz von ... ...mir... :D)
@ChaosAngel, Vielen Dank! für den Anfang dürften die ersten 12 reichen ;-) Ich hoffe ich bin schnell im OpenGL lernen, dann kann ich auch schnell bei deinem Projekt mitmachen! Ist bis jetzt nicht schlecht!
mfG. Working
v8-mogwai
07.07.2001, 17:47
hallo,
folgendes hat sich jetzt ergeben:
- die engine wird (whrscheinlich) in
Java implementiert; - es wird eine
Spielfläche von ca. 40000 km sein
(also etwa unsere Erde)
bei einer minimaleinheit von 1cm (das heißt nicht, daß ein pixel auf dem
bildschirm 1cm entspricht!!;)
- die klassen sind schon halbwegs fertig (30% auf papier, 90% im kopf)
- es wird lichtquellen geben aber keinen Schattenwurf; nur sphärische quellen,
keine gerichteten; wie das gehen soll ist alles schon klar;
- alles baut auf dreiecken auf, die
vorerst nur einfarbig eingefärbt werden
können;
- aktuelles problem: wie bekommt man
texturen auf polygone/dreiecke?
(KEINE Java-Befehle; welche Überlegung steckt allgemein dahinter?)
v8
ChaosAngel
07.07.2001, 18:11
WOW ! RESPEKT !
Ich muss sagen das hat sich besser entwickelt als auf deiner HP zuerst zu sehen war :D
Hier, ich denke mal es ist das hier was du suchst !
http://www.sundancerinc.de/archiv/coding/misc/gfx/texture.txt
v8-mogwai
12.08.2001, 09:29
hallo,
folgende änderungen:
es wird eine doom-ähnliche engine, also nur ausgerichtete polygone (senkrecht
oder parallel zum boden), das war nötig, um den z-buffer-methode zu umgehen,
damit ich texturen einsetzen kann;
es gibt aber mehrere Stockwerke (bei doom, heretic und hexen1 konnte man sich
natürlich auf mehreren ebenen fortbewegen, aber einem punkt (x,y) war eine feste
höhe zugeordnet);
hat jemand eine ahnung, wie man an die texturen von doom heretic und hexen1
herankommt? also die spiele habe ich alle, das ist nicht das problem.
danke,
v8
ChaosAngel
12.08.2001, 11:32
:D Und ich dachte das Projekt wäre tot. Ich denke mal du hast das Tutorial zu Doom gelesen, dort wo das alles steht mit den Höhen und verschiedenen Ebenen die sich aber nicht überschneiden. Echt genialer Einfall.
Zu den Texturen. Ich hab die Programme leider nicht, aber ich glaube ich glaube die waren in nem tex oder wal oder wad Format oder so, wenn dem so ist, hatte ich mal ein Programm (benutzt für mein Spiel mit den Quake2 Texturen :D) das diese öffnen und konvertieren kann. Das Ding hies glaube ich "Wally"
Ich such noch mal danach, falls ich es finden sollte sag ich bescheid ...
So kommst du wenigstens dum das alte Dateiformat herum. Welches isses denn nu eigentlich !??!?
Edit:
Nunja, das Programm hab ich lieder nicht mehr auf meiner Platte gefunden, ich kenne da aber einen der es glaube ich noch hat. Hier ist aber ein Link der vielleicht interessanter sein könnte !
http://www.montefiore.ulg.ac.be/~quinet/games/DEU/DEU-en.html
-Icewolf-
13.08.2001, 16:48
Hi,
@chaos : meintest du mich ? ja, ich hab noch nen link
http://www.gamedesignhq.de/gdhq/index.php?site=dl_detail&dl_id=61
cu
-Icewolf-
v8-mogwai
07.11.2001, 17:54
hallo,
aktuelles problem bevor es weitergehen kann: collision-detection!!
einfach einen menschen vorstellen, der einen berg (viele schräge ebenen mit wechselnden winkeln) besteigt. der körper ist einfach nach der richtung der schwerkraft ausgerichtet, schon klar.
jetzt soll ein auto den berg hochfahren. wie um himmels willen bekomme ich es hin, daß das auto am boden klebt UND daß es dabei beim übergang von einer ebene auf eine andere nicht in einer der beiden verschwindet? also das vor dem "UND" ist nicht so das problem...
ich brauche den source-code des alten spiels STUNTS (siehe oben) oder eines ähnlichen alten spiels.
hier ist nicht zufällig einer der stunts-entwickler gerade unterwegs?
bitte keine tuts zur collisions-detection schicken mit bboxen und bspheres und so, das ist nicht so das problem.
danke,
V8
hm.. ich hätte auch interesse am source..
stavros_eric@yahoo.de
Original erstellt von v8mogwai:
wie um himmels willen bekomme ich es hin, daß das auto am boden klebt UND daß es dabei beim übergang von einer ebene auf eine andere nicht in einer der beiden verschwindet? also das vor dem "UND" ist nicht so das problem...
Wie genau meinst du das jetzt? Dass das Auto drüberfahren kann, ohne zu "holpern"?
Quake III scheint das etwa so zu machen: Es nimmt von mehreren Punkten auf der Oberfläche, auf der der Spieler steht, die "Höhe" und berechnet den Mittelwert daraus. Also ist es vom Feeling her dasselbe, ob man eine Treppe mit kleinen Stufen oder eine gerade Rampe raufgeht.
v8-mogwai
10.11.2001, 16:25
also evtl ist es jetzt klarer:
http://www.v8-mogwai.de/temp/clipp.gif
ruckeln darf es schon. so furchtbar kompliziert wie eine voll ausgereifte engine soll das ja eh nicht werden.
v8
Ach so.
Das Problem ist ja ähnlich. Du nimmst an jeder Ecke die Höhe und "rotierst" es dann... Klar, leicht gesagt, aber mehr kann ich dazu jetzt auch nicht sagen.
v8-mogwai
16.01.2002, 11:30
Hallo,
also es hat sich jetzt einiges getan. Noch eine Klasse, dann wird die Blickfeld-Klasse (mit rendering) geschrieben.
Für den Fall, daß einer seinen Senf dazugeben möchte (und damit das Thema wieder oben in diesem Forum landet):
Ich bräuchte in den nächsten ein bis zwei Wochen eine Art Spiele GUI (als Quellcode). Also ein Fenster mit etwa folgenden Eigenschaften:
- einen 640x480 großen Bereich für ein Image
- 5 Knöpfe daneben oder drunter (char, log, inv, spell, menu)
- ein Textfeld (für Chatfunktion)
- ein Textfeld einzeilig, daneben ein Knopf (zusammen genauso breit wie das Chatfenster darüber für Chattexteingabe)
- ein kleineres Textfeld für Systemmeldungen
- Gesamtgröße von 800x600 nicht überschreiten
- keine Menüzeile
Das Ding soll NICHT für ein Applet sein. Soll nur als Application laufen und so an sich keine Funktion haben (lediglich Fenster schließen). Also bitte KEINE Funktionen wie "setImage()" oder so implementieren.
Es würde auch schon das entsprechende Flow-Layout reichen. Aber bitte Kommentare einfügen und JavaDoc-mäßig alles drum rum.
Code-Beispiele unter: http://www.v8-mogwai.de/engine.html
Ein FlowLayout wird da nicht reichen...
Willst du es in Swing oder AWT? Wenn es wirklich nur um das Aussehen geht, ohne Funktionen, sollte das eigentlich schnell zu schreiben sein. Ich habe zwar momentan wenig Zeit, aber das würde ich vielleicht gerade noch einschieben können...
Das wär eine Möglichkeit. Ich bin mit den Buttons nicht ganz zufrieden. Ich würde die sonst alle gleich breit machen, so daß kein freier platz mehr bleibt. Ich war nur zu faul... wenn es dir so nicht gefällt mache ich das demnächst wohl noch.
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* This class is an example for a GUI. It has the following properties (german):
* <br>
* - einen 640x480 großen Bereich für ein Image <br>
* - 5 Knöpfe daneben oder drunter (char, log, inv, spell, menu) <br>
* - ein Textfeld (für Chatfunktion) <br>
* - ein Textfeld einzeilig, daneben ein Knopf
* (zusammen genauso breit wie das Chatfenster darüber für Chattexteingabe) <br>
* - ein kleineres Textfeld für Systemmeldungen <br>
* - Gesamtgröße von 800x600 nicht überschreiten <br>
* - keine Menüzeile <br>
*/
public class ExampleGUI extends JFrame {
//fields
/**
* Offscreen image that stores the image for the GUI.<br>
* The image can be changed by a command like
* <tt>image.getGraphics().drawImage(yourImage, 0, 0, null)</tt><br>
*/
private final Image image;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bChar;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bLog;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bInv;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bSpell;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bMenu;
/**
* An uneditable TextArea that doesn't do anything (yet)
*/
private JTextArea taChatOutput;
/**
* An editable TextField.
*/
private JTextField tfChatInput;
/**
* A Button that doesn't do anything (yet)
*/
private JButton bChat;
/**
* An uneditable TextArea that doesn't do anything (yet)
*/
private JTextArea taSystemOutput;
//-----------------------------------------------------------------------------
//constructors
/**
* Constructs a new ExampleGUI with a default image.
*/
public ExampleGUI() {
super("ExampleGUI by Dark Tom");
setSize(800, 600);
// There are so many image-types defined in BufferedImage
// ... and I chose this for no particular reason
image = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
//A JPanel is used as placeholder.
JPanel imagePanel = new JPanel() {
public void paint(Graphics g) {
g.drawImage(image, 0, 0, null);
}
};
final Dimension d = new Dimension(640, 480);
imagePanel.setMinimumSize(d);
imagePanel.setPreferredSize(d);
//Buttons
bChar = new JButton("Char");
bLog = new JButton("Log");
bInv = new JButton("Inv");
bSpell = new JButton("Spell");
bMenu = new JButton("Menu");
bChat = new JButton("Chat");
//systemOutput
taSystemOutput = new JTextArea();
taSystemOutput.setEditable(false);
taSystemOutput.setLineWrap(true);
taSystemOutput.setWrapStyleWord(true);
JScrollPane systemOutPutScroller = new JScrollPane(taSystemOutput);
//prepare the northernPanel: image-placeholder, Buttons (except bChat) and systemOutput
Box buttonBox = new Box(BoxLayout.Y_AXIS);
buttonBox.add(bChar);
buttonBox.add(bLog);
buttonBox.add(bInv);
buttonBox.add(bSpell);
buttonBox.add(bMenu);
JPanel northEastPanel = new JPanel(new BorderLayout());
northEastPanel.add(buttonBox, BorderLayout.NORTH);
northEastPanel.add(systemOutPutScroller, BorderLayout.CENTER);
JPanel northernPanel = new JPanel(new BorderLayout());
northernPanel.add(imagePanel, BorderLayout.WEST);
northernPanel.add(northEastPanel, BorderLayout.CENTER);
//prepare the center: taChatOutput
taChatOutput = new JTextArea();
taChatOutput.setEditable(false);
taChatOutput.setLineWrap(true);
taChatOutput.setWrapStyleWord(true);
JScrollPane chatOutputScroller = new JScrollPane(taChatOutput);
//prepare the southernPanel
JPanel southernPanel = new JPanel(new BorderLayout());
tfChatInput = new JTextField();
bChat = new JButton("Chat");
southernPanel.add(tfChatInput, BorderLayout.CENTER);
southernPanel.add(bChat, BorderLayout.EAST);
//add components to the frame
Container cp = getContentPane();
cp.add(northernPanel, BorderLayout.NORTH);
cp.add(chatOutputScroller, BorderLayout.CENTER);
cp.add(southernPanel, BorderLayout.SOUTH);
//add some messages to the Components
image.getGraphics().drawString("This might be the window to the real world. Who knows?", 100, 100);
taSystemOutput.setText("This is where the system output goes to...");
taChatOutput.setText("This is where you read the chat...");
tfChatInput.setText("Here you can enter your chat messages...");
/*
for (int i=0; i<20; i++) {
taChatOutput.append("This text is written to test the scrollbars. ");
taSystemOutput.append("This text is written to test the scrollbars. ");
}
*/
}//end of constructor
/**
* Constructs a new ExampleGUI with the given Image.<br>
* The image is strechted to fit in the area.<br>
* <br>
* <b>Note:</b> This constructor uses a MediaTracker to waits
* until the image is loaded. It won't return before the image
* is loaded completely.
*
* @param initialImage the image to be used
*/
public ExampleGUI(Image initialImage) {
this();
//wait until the image is loaded
java.awt.MediaTracker m = new java.awt.MediaTracker(this);
m.addImage(initialImage, 1);
try{
m.waitForAll();
} catch (InterruptedException e) {}
image.getGraphics().drawImage(initialImage, 0, 0, 640, 480, null);
// in case you don't want to stretch the image:
// image.getGraphics().drawImage(initialImage, 0, 0, null);
}//end of contructor
// ----------------------------------------------------------------------------
// static methods
/**
* Opens a new ExampleGUI for demonstration purposes.
*/
public static void main(String[] args) {
/*
Image img = java.awt.Toolkit.getDefaultToolkit().getImage("c:\\bilder\\bkgrnd\\11.jpg");
ExampleGUI example = new ExampleGUI(img);
*/
ExampleGUI example = new ExampleGUI();
example.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);
example.show();
}//end of main(String[] args)
} //end of class ExampleGUI
v8-mogwai
24.01.2002, 18:42
Hallo,
habe eine methode geändert (copyTo rausgenommen wegen besserem Style) und:
bin ich jetzt blind oder wie?
Schaut Euch mal bitte die Datei V8matrix.txt, die hier dranhängt, an.
Speziell die Zeilen 354, 552, 570 und 589. Da kommt nämlich ein Compiler-Error:
cannot asign a value to final variable this
this = mt1;
^
oder auch:
cannot asign a value to final variable this
this = mt4.mul(this);
^
Dabei ist von der Klasse doch rein nichts final, oder?
Wäre echt dankbar!
@DarkTom
haut hin, leicht geändert, source jetzt online
v8
Ich sehe da keinen Anhang, aber:
this ist final, da kannnst du nichts zuweisen. Das ist ja gerade die Referenz eines Objekts auf sich selbst.
Wenn du Erreichen willst, daß ein Objekt sich selbst durch ein anderes ersetzt, muß ich dich enttäuschen. Du kannst nur den Inhalt deines Objekts durch den Inhalt des anderen ersetzen. Wenn du den Code mal postest, kann ich dir vielleicht mehr sagen.
bzgl GUI:
Ja, mit dem GridLayout sieht das wirklich besser aus. Nur, wo sind die ganzen javadoc-Kommentare hin? Ich dachte, da legst du so wert drauf. Und so viele protected-Deklarationen?
v8-mogwai
24.01.2002, 21:09
jo,
also zum thema javadoc:
über jede klasse:
eine kurze beschreibung mit @version und @author, evtl. @see
über jede methode:
kurze beschreibung mit @param @return und evtl. @version und @see
woher kennst du dich so gut mit java aus? selbst beigebracht, uni oder schule?
also den kram mit der matrix habe ich jetzt behoben. geht jetzt wieder.
getestet: invertieren einer matrix (hätte nicht gedacht, daß das so fast auf ahieb geht),
translation usw.
sollte ich das unter @version vermerken oder einfach so einen komment in den source setzten???
wegen protected declaration:
damit jede klasse aus dem package auf die ganzen instanzen der anderen klassen aus dem package zugreifen kann,. damit spare ich recht viel (echt viel) overhead wegen funktionsaufrufe getDies() und setDas().
ist zwar nicht ganz IO laut codeconvention (beans???), aber egal.
v8
javadoc:
Naja, konsequenterweise zieht man javadoc dann auch bis hin zu den Feldern durch. Das hat auch gleich den Effekt, das man sich nochmal genau überlegt, ob bzw wofür man das Feld wirklich braucht. Wenn man's nicht kommentieren kann, ist es unnötig.
Mein Basiswissen über Java habe ich aus der Uni, der Rest ist selbst beigebracht.
also den kram mit der matrix habe ich jetzt behoben. geht jetzt wieder.
getestet: invertieren einer matrix (hätte nicht gedacht, daß das so fast auf ahieb geht),
translation usw.
sollte ich das unter @version vermerken oder einfach so einen komment in den source setzten???
Das mußt du schon selbst wissen. War ein Fehler in schon veröffentlichtem Code? Dann wäre eine Erhöhung der Version schon angebracht, denke ich.
Btw, wenn wir schon bei Matrizen sind. ich hatte da mal ein ziemlich gutes package in den (virtuellen) Händen. Das konnte ziemlich viel, Inversion, Matrizenmultiplikation, Determinantenbestimmung, usw. Bei Interesse kram ich's mal raus. War, glaube ich, unter GPL.
wegen dem protected:
Wenn du meinst... Ich sehe jedenfalls keinen Sinn darin, warum ein komplettes Package Zugriff auf einen Button in der GUI haben soll.
v8-mogwai
03.04.2002, 12:45
hallo,
hat sich einiges getan in der zwischenzeit. und ein "geht-zwarso-aber-warum-nicht-anders-problem" hat sich aufgetan.
wenn man sich mal V8connection.java anschaut und sich den bereich anschaut, in dem die Streams vom Socket erstellt werden:
z.Z. erstelle ich erst den OutputStream, dann den InputStream. Wenn ich aber erst den InputStream erstelle und dann den OutputStream, hängt sich alles auf, nix geht mehr (nur das java-programm, nicht das betriebssystem). bevor ich darauf kam, es andersrum auszuprobieren, hätte ich fast abgekotzt...
oder habe ich da ein ungeschriebenes protokoll-gesetz gebrochen, als ich versuchte, erst den InputStream aufzubauen??
wäre dankbar für jede hilfe, wenn ich das bloß verstünde (toller Konjuntiv, oder?).
den source gibt es unter http://www.v8-mogwai.de/3d/source.zip
in das verzeichnis "source" wechseln, und eingeben:
javac v8gui/V8testGUI.java
java v8gui/V8testGUI
wenn das hier alles zu ungenau ist kann ich es ja nochmal etwas ausführlicher schreiben, habe leider gerade keine zeit und die nächsten 3 Tage kommen ich nicht mehr an meinen PC ran...
v8
v8-mogwai
05.04.2002, 15:40
Hallo,
also ich bin echt am Verzeifeln... kann mir bitte mal einer von euch helfen?
mein problem: ich kann keine Daten über das Netzwerk schicken. Als IP
des Clients und des Servers benutze ich 127.0.0.1 (also loopback) und als
Port die Nummer 7000.
ich bekomme andauernd IOExceptions. Was mache ich falsch?
Kann einer von euch bitte mal das Programm ausprobieren?
Einfach den Quellcode von http://www.v8-mogwai.de/3d/source.zip runterladen,
in das Verzeichnis "source" wechseln und folgendes eingeben:
javac v8net/V8server.java
javac v8net/V8client.java
javac v8net/V8startGUI.java
javac v8net/V8testGUI.java
java v8net/V8testGUI
dann einfach auf "start" drücken, und in der neuen GUI, die sich dann öffnet,
auf "send message" drücken.
dann beenden (rechts oben in der Ecke das Fenster-icon) und in der Ausgabe
gucken, ob es eine IOException gab. (da wo ihr vorher "javac v8n..." eingabt)
danke
v8
ps: ich habe linux als betriebssystem. muß ich da irgednwas vorher
konfigurieren?
Zuerst einmal: Ich habe momentan keine Zeit. Vielleicht kann ich mir das demnächst mal richtig anschauen.
Ich denke mal du meintest v8gui/...
Hier ist die Ausgabe:
V8serverLoginThread: warte auf verbindung...
V8startGUI: es wurde START gedr³ckt
V8connection: alles OK construiert, und ende
V8startGUI: Verbindung aufgebaut.
Alles ok hier. Over and out.
V8connection: alles OK construiert, und ende
V8serverLoginThread: habe eine neue verbindung
V8server: clientConnection hinzugef³gt
V8serverLoginThread: warte auf verbindung...
V8client: erhielt: enter text to be sent ...und sende...
V8client: send...
enter text to be sent
V8connection: ERROR while sending data
V8connection: ERROR while reading object (IO)
Es trat also zumindest keine Exception auf, die nicht abgefangen wurde.
Wie gesagt, bielleicht kann ich demnächst mal einen Blick in den Code werfen...
v8-mogwai
05.04.2002, 19:44
Hallo,
@DarkTom
(wohl der einzige, der hier hin und wieder mal reinschaut...) ich habe jetzt
konkret krass daraus geschlossen, daß es kein hardware-problem ist und nichts
mit meiner Java-Version zu tun hat (Bugs oder so).
Und siehe da: die Klasse "V8dataPlay" implementierte nicht "Serializable".
kein wunder, daß es dann Errors gibt, wenn man die durchs Netz schickt...
Das hat doch schon etwas gedauert, bis ich drauf kam...
btw: Arbeitest du eigentlich mit Linux??
@all
Also auf meinem Lokalen Rechner mit Loopback funktioniert das ganze jetzt (nur
das chat-system der engine, mehr noch nicht)
Als nächstes werden die JavaDocs erneuert/aktualisiert/erweitert und ein paar
Bugs gekillt (connection.close() bei programmende etc.)
Ich würde das ganze gerne mal über das Internet ausprobieren. Wenn irgendwer
nächstes Wochenende (13.04.2002) mal eine Stunde Zeit hat, bitte hier melden
wegen Terminabsprache (IP-Adressenübermittlung des Servers etc...)
Funktionierender Source und kompelierter Source (Sun v1.3) ist up.
Anleitung:
unzippen
ins Verzeichnis "source" wechseln
java V8mainServer (das startet den Server)
java V8mainClient (für jeden nötig, der sich bei einem Server einloggen will)
bis denne,
v8
Nö, arbeite mit Win 98 SE. Sollte für Java aber eigentlich sowieso keinen Unterschied machen.
Wegen dem Wochenende siehts bei mir eher schlecht aus. Mal sehen...
Ich würde das ganze gerne mal über das Internet ausprobieren. Wenn irgendwer
nächstes Wochenende (13.04.2002) mal eine Stunde Zeit hat, bitte hier melden
wegen Terminabsprache (IP-Adressenübermittlung des Servers etc...)
Hi,
spontane Zusage - ich würde mich anbieten, schick mir doch bitte zur erinnerung eine emial an harl3kin@buhaboard.de (bin sehr vergesslich *bg*)
Könnte im "Fall der Fälle" auch debuggen ;-)
Grüße,
harl.
v8-mogwai
09.04.2002, 19:51
Hallo,
also ein kleines Problem. Schaut euch mal bitte V8playGUI an. Ich möchte folgendes erreichen (geht um JScrollPane tChatOut):
Wenn das Pane oder das Textfels nicht aktiviert ist (also gerade mit Maus draufgeklickt), soll es automatisch bei jeder Inhaltsänderung nach ganz unter scrollen.
einfach mal ein paar mal "sendmessage" drücken und sich dann vorstellen, immer manuell beim chatten nach untern scrollen zu müssen.
JTextField tChatIn:
wenn ich etwas eintippe und "enter" auf der tastatur drücke, soll automatisch die nachricht abgeschickt werden, nicht erst beim Drücken von "send message".
Wie soll ich da rangehen? da fällt mir wie oben überhauptnichts zu ein.
Kurze Hinweise zur Lösung würden schon genügen...
danke,
v8
(buldischung wegen schnellschreibweise, und autograpschie - keine zeit...)
Wenn das Pane oder das Textfels nicht aktiviert ist (also gerade mit Maus draufgeklickt), soll es automatisch bei jeder Inhaltsänderung nach ganz unter scrollen.
einfach mal ein paar mal "sendmessage" drücken und sich dann vorstellen, immer manuell beim chatten nach untern scrollen zu müssen.Probier mal, ob das Feld bei setCaretPosition() an die angegebene Stelle scrollt. Könnte funktionieren.
JTextField tChatIn:
wenn ich etwas eintippe und "enter" auf der tastatur drücke, soll automatisch die nachricht abgeschickt werden, nicht erst beim Drücken von "send message".
Wie soll ich da rangehen? da fällt mir wie oben überhauptnichts zu ein. Ein ActionListener auf dein JTextField sollte da helfen.
v8-mogwai
05.06.2002, 12:03
Mahlzeit!
also so langsam wird es zeit, sich um ein konzept für den ganzen krempel zu kümmern.
bald ist es soweit: das v8project wird bald die entwicklungsphase verlassen haben. dann soll damit irgendwas gemacht werden.
kurz angerissen was möglich sein wird:
multiplayer über LAN oder internet (mehr als 4-8 player wird das ganze wohl nicht verkraften, dann wird es wohl etwas langsam...)
Eine riesige welt, in der jedes object zur laufzeit (mit playern online) manipuliert werden kann... (da ne burg hin, da den baum etwas höher auf den berg...). daß z.B. in der entwicklung einmal möglich ist, als kleiner zauberer oder so eine burg zu erschaffen, die in der landschaft zu plazieren, ein neues objekt zu erzeugen usw. also als kleiner weltgestalter durch die gegend zu latschen, während aber schon gespielt werden kann. daß die welt dynamisch während des Spiels wächst.
bevor ich anfange, lauter 3d-objekte zu erstellen, sollte erstmal ein konzept stehen. (SciFi, Fantasy, Mittelalter (halbwegs realistisch), Antike (auch nicht ganz abgehoben...) oder ähnliches.
das problem: es soll kein spiel mit linearem spielverlauf sein, mit leveln und so (doom oder hexen 2 oder heretic; meine grafik wird übrigens nicht einmal an doom1 herankommen, dafür mehr freiheitsgrade...)
kennt jemand DAGGERFALL? nun stell sich einer das spiel mit multiplayermodus vor.
1. problem: man trifft sich ja kaum in so einer großen welt.
2. problem: nun habe ich mal so eine universelle
Engine entwickelt, daß riesige welten dargestellt werden können, dann soll das auch ausgenutzt werden (beißt sich mit 1.)
3. ganz alleine werde ich niemals fertig damit. wie koordiniert man sowas?
4. so ein konzept zu entwickeln wird genauso lange dauern wie die entwicklung der engine selbst (mindestens).
oh mann, hätte ich mir bloß rechtzeitig (bevor ich anfing zu prggen) darüber gedanken gemacht.
das war jetzt zwar alles etwas wirr durcheinander, aber ich hoffe es kam rüber, was ich damit ausdrücken wollte...
und jetzt keine mail ala ich will mitmachen. das kommt erst später. bitte erstmal ideen oder sowas posten. DURCHDACHTE IDEEN!
bis denne,
v8
(und jetz nicht den quellcode runterladen... der ist nicht aktuell, der krempel wird erst wieder hochgeladen, wenn das project steht. noch etwa 2-3 monate schätze ich so...)
v8-mogwai
10.06.2002, 17:07
hallo,
also ich glaube ich habe es jetzt.
3dshooter gibt es genug, außerdem ist meine graphic viel zu schlecht (man kann ja trotzdem eine punpgun intergieren. eine kettensäge gab es im original ja auch...). MUDDs gibt es auch genug, auch mit super graphic.
also muß es etwas nostalgisches sein.
etwas im innenbereich, außernbereich, groß, aber nicht zu groß, daß man keine anderen online-player trifft. also ein großes HAUS. damit es nicht langweilig wird, müssen noch geheimgänge rein, ein paar SELTSAME GESTALTEN viele GEGENSTÄNDE, eine lustige (hintergrund-) STORY (ernst kann es ja bei der graphic nicht zugehen...) usw.
na? erinnert sich da wer an etwas? großes haus, lustige story, schlecht graphic (für heute, damals war es echt gut...) seltsame gestalten. spannend, mehrmals ohne spielspaßverlust spielbar... einfach kultig. damals gab es das in 2d - frontansicht.
ich sage nur C64 Atari, Amiga, PC...
tja... ist der groschen jetzt gefallen?
natürlich kann man die story nicht übernehmen, denn dann wäre ja alles wider halbwegs linear und es könntze sich bei einem laufendem spiel kein neuer spieler richtig integrieren...
(das konzept / genre des originals sollte jetzt auch klar sein...)
hi hi...
das wird lustig... (und guuut), zumindest für die, die das original kennen (und schätzen...)
also jetzt sollte es jeder begriffen haben...
v8
v8-mogwai
16.06.2002, 19:18
Hallo,
... also wer da oben draus nicht schlau wurde: ich will das Haus "MANIAC MANSION" nachbauen... (ist hier überhaupt jemand, der das Spiel noch kennt???)
v8
=) GEIL!
hab mal auf einer free games seite auch ein nachgemachtes gesehen und das war auch extremst geil, aber unterschaetz auf keinen fall, was da an story hintersteckt! Grafik waere garnicht SO as ding imo.
v8-mogwai
06.07.2002, 16:16
hallo,
verzögert sich alles noch etwas (sehr lange...)
grund:
redesign des projektes.
hauptsächlich wiederverwendung von objekten
außerdem:
für jede klasse wird eine testklasse geschrieben (JUnit)
irgendwer bock, an den testklassen mit zuarbeiten? einfach den neuen source runterladen, entpacken.
vorlage sind z.B. die fertigen testklassen V8vecTest oder V8matrixTest
zur wahl stehen erstmal:
V8plane
V8line
V8polygon
V8sphere
V8quader
v8
v8-mogwai
25.07.2002, 14:08
Hallo,
altes Problem behoben, neues aufgetaucht: das scrollen der TextArea nach unten:
es wird zwar jetzt gescrolled, aber nicht bis ganz nach unten, die letzte zeile fehlt immer.
int max = this.chatScrollBar.getMaximum();
this.chatScrollBar.setValue(max);
und wenn ich noch eine zeile dranhänge:
tChatOut.append("\n" + s); // die textArea
int max = this.chatScrollBar.getMaximum();
this.chatScrollBar.setValue(max);
dann fehlen die letzten 2 zeilen.
hmpf...
danke,
v8
v8-mogwai
08.08.2002, 18:08
hallo,
also das Scroll-Problem hat sich immer noch nicht erledigt. nur manchmal nach neukompilation klappt es. komisch, oder?
das netzwerk läuft halbwegs, objecte können hin und her geschickt werden. der renderer läuft auch so in etwa. hat anscheinend aber noch eine fehlfunktion (siehe ecke links auf HP).
Grund, warum das image nicht zu sehen war:
das image wird aus meoryImageSource mit Array aus int's erzeugt (32 bit). RGB hat nur 24Bit. die oberen 8 bit geben transparenz an. bei 0 ist das bild ganz durchsichtig. da soll man mal drauf kommen! kein hinweis darauf in den jdocs von sun!
bis denne,
will irgendwer einen konverter für VRML / POVRAY nach V8mesh schreiben?
v8
v8-mogwai
08.08.2002, 20:27
Hallo,
also jetz wei ich auch nicht mehr weiter:
Das netztwerk-gewurschtel scheint zu funktionieren:
- Der chat geht
- Es werden objecte hin und her geschickt (V8leaf)
- der renderer geht
Meine selbstentworfene Graphenstruktur funktioniert.
Zum rendern: Die Pyramide, die gezeichnet werden
soll, wird auch gezeichnet. Aber komischerweise wird
links und rechts im bild je noch ein stckchen einer
Pyramide gerendert, obwohl nur eine in der ganzen Szene
vorhanden ist. hmmm....
Aber erstmal:
Der server schickt dauernd active V8leafs an den Client.
Dieses eine Leafs deht sich um die eigene Achse. Das geht
auch, es werden die richtigen Daten abgeschickt.
Beim Client kommen aber komischerweise diese nicht an.
Es kommt zwar jedes Packet beim Client an, nur der Inhalt
stimmt nicht ganz. Ich habe den Eindruck, der hat immer nur
das erste Packet im Buffer.
Aber dann dürfte der Chat nicht funktionieren, weil mit
jedem Datenpacket auch immer die Chatinfos mitgeschickt
werden. Der geht aber...
Bitte mal ausprobieren! Source jetzt oben, ebenso wie Screenshot mit Erklärungen im Chatfenster in in Terminals.
Danke,
v8
v8-mogwai
10.08.2002, 12:57
Hallo,
also das ist wirklich super! hae jetzt den Fehler gefunden:
Ich habe immer das selbe object über den ObjectOutputStream geschickt (also ==). Der Stream hat sich wohl die Referenz gemerkt und immer das alte aus seinem Puffer abgeschickt, anstatt das aus dem speicher zu nehmen. Lösung: einfach immer ein neues object erzeugen und per set() auf die gewünschten werte des objects setzen, das man senden will!
Ich dachte, das sei ein netzwerkfehler (ich verwende loopback), aber als ich das ganze in eine datei schrieb und es wieder einlas, hatte ich das gleiche problem.
Und wiedereinmal: in den JavaDocs von SUN war das mit keinem Wort erwähnt!
Aktueller Stand:
Auf dem Server dreht sich eine Pyramide. Alle 4 Sekunden werden die aktuellen Daten an den Client geschickt. Damit das ganze keine Diashow wird, rechnet der Client für sich selber auch alles durch, und alle 4 Sekunden werden die Werte, die der server schickt, übernommen.
TADA!
Source ist oben.
Also leute, bitte jetzt mal downloaden und eure meinung abgeben! brauche feedback! Guckt hier überhaupt noch jemand rein? Bitte antworten! Ich will beachtet werden!!! ;-)
bis denne,
v8
mir war gerade so *g .. und da habe ich es mir mal angschaut.
eine schöne Menge Code hast du da schon geschrieben.
Leider is das was man sieht noch recht mager für den Aufwand ;).
Aber es funktioniert (client/server) jedenfalls lokal bei mir.
Bei durchschauen des Codes sind mir ein paar Dinge aufgefallen.
- du kommentierst gut :)
- der Renderer(also BasicLibs+eine Ebene höher) sind dir meiner Meinung nach auch echt gut gelungen, (Geschwindigkeit mal außen vor)
- soll das Spiel/Engine später mal in Echtzeit laufen? Dann ist deine aktuelle Implementierung des Netzwerkcodes leider nicht wirklich brauchbar. Sorry, aber das ist mir aufgefallen als ich es mir angeschaut hab. Erstmal hast du mit dem Serialisieren der Objekte einen ziemlich großen Overhead. Und wenn du Updates nur alle 4s senden willst wirst du keinen vernünftigen Spielfluss bekommen. 4s sind für Echtzeit einfach viel zuviel, da nützt auch noch kein so ausgefeiltes dead reconing (spreche aus Erfahrung ;) ).
Sicher im Moment mag das gehen , für einfach Test. Aber spätestens wenn du noch mehr Objekte hast und Clients wird die Architektur zu Bruch gehen.
Nochwas system.currentMillis .. könnte noch zu einem deiner größten Feinde werden :) .. wenn du die delta Zeit berechnest, den es ist ungenau. (hatte ich bei meinem Projekt extrem Probleme mit .. ). Bzw liefert auf unterschiedlichen Platformen unterschiedliche Resultate. Was für clientseitige Vorrausberechnungen von Nachteil ist.
Naja .. hab es mir ehrlich gesagt alles auch nur 10min angeschaut .. und soll natürlich mehr Konstruktive als Destruktive Kritik sein.
Also keep up the good work!! (bis auf die net sachen alles wirklich gut!)
v8-mogwai
13.08.2002, 15:33
Hallo,
endlich mal eine antwort! (yippie)
Frage: bist du da durch die ganze architektur in knapp einer viertel stunde durchgestiegen? respekt.
das mit dem renderer funktioniert nicht wirklich so gut. ich habe die pyramide mal farbig gemcht, und da stellte sich heraus, daß die sache mit dem z-buffer nicht so ganz funktioniert.
die sache mit dem system.currentMillis tut aber etliche probleme auf. nur gut, daß ich das jetzt weiß, sonst wäre später das totale chaos ausgebrochen, das ist nämlich in der tat die variable, die das ganze steuert.
ich implementiere jetzt als nächstes die steuerung, melde mich dann wenn fertig. den fehler im renderer lasse ich erstmal. habe daran schon 2 tage debugged...
bis denne,
v8
@Frage .. durch die Architektur schon .. :) natürlich bei weitem nicht durch alle Funktionen. Das kann man in der Zeit ja auch garnicht, aber durch das System schon was dahinter steht.
@renderer .. wie gesagt .. sowas sieht man natürlich in 15min nicht, aber ich meinte auch ehr die Architektur.
Wobei der ZBuffer hat doch eigentlich nix mit der Farbe zu tun ;).
v8-mogwai
19.08.2002, 19:44
mahlzeit!
habe renderer verbessert (polygonclipping an ebene), habe auch den fehler im linienrendern gefunden, aber das problem mit dem zBuffer bleibt. schaut euch mal die große rotierende pyramide an. links am rand liegt das problem.
netzwerk funktionuckelt! sogar mit mehreren spielern, die können sich sogar in form von kleinen pyramiden gegenseitig sehen! die steuerung ist gewöhnungsbedürftig, wird noch verbessert!
Hat irgendwer mal bock, das ganze im internet mal unter echten bedingungen zu testen? im labor geht's (loopback mit 2 player).
Also kurze nachricht hier wegen terminvereinbarung und so...
bis denne,
v8
nochwas:
Also jetzt geht es mit den Grunsfunktionen ja dem ende entgegen. Würde es jetzt mit einem neuen Thema weitergehen, macht dann noch wer mit?
Das mit maniac mansion ist doch nicht eine so tolle idee...
v8-mogwai
23.08.2002, 14:39
Hallo?
Also was ist nun? will keiner mal das ganze mit mir online ausprobieren?
v8
würde ja wenn ich zeit hätte :D
ChaosAngel
26.08.2002, 15:46
Das mit der Zeit ist nen verdammt gutes Argument. Würde dir sonst auch helfen, aber ich komm ja kaum mit meinem Projekt vorran !
Allerdings könnte man deinen Software Renderer später vielleicht mal in unsere Engine einbinden. FireFly bietet eine DLL-Schnittstelle an um jede beliebige Engine zu laden. (natürlich mit entsprechendem Interface, Baseclass, etc...)
v8-mogwai
03.10.2002, 17:09
Hallo,
damit das hier nicht dicht gemacht wird, eine kurze meldung: habe auf painter-algo umgestellt. netzwerk-fkt verbessert. ein- und ausloggen geht, aber vorerst nur als gast. steuerung verbessert (vorerst nur vor zurück, links rechts).
habe das ganze in ein jar-file gepackt, damit sollte das kompelieren, enpacken, wegfallen, halt der übliche nervige mist.
wie sieht es dieses wochenende mit testen aus? ca. 20-30 minuten.
noch eine bitte: ich bräuchte mal leute, die mit versch. betr.systemen und javaversionen das ganze ausprobieren (im loopback), habe leider nur linux. wie gesagt: mit jar-file sollte das kein problem mehr sein. wenn es nicht gehen sollte, bitte auch mal versuchen selber zu kompelieren, muß aber nicht sein.
oder soll ich mich deswegen an das java-forum wenden?
bis denne,
v8
Hallo!
kostet ja nicht viel Zeit - ich könnte es am Freitag morgens in der Arbeit unter Windows 2000 && XP testen.
Grüßle,
harl.
PS.: Klar kenne ich Maniac Mansion :D
PPS.: Sind die in deinem vorvorvor-letzten Post angehefteten Sourcen noch aktuell? Ansonsten schick bitte an harl3kin@buhaboard.de.
v8-mogwai
26.10.2002, 17:36
Hallo,
also nur mal kurz, damit das hier nicht dichtgemacht wird:
Probleme mit zBuffer behoben. Fehler in den Tiefen des Codes:
es stand: z3=y3;
es muß lauten: z3=z2;
Tja, so kann's gehen, wenn man nicht auf schon bestehende Bibliotheken zurückgreift... (will ich aber auch nicht)
als nächstes: den Netzwerk-Datenstrom verringern.
Problem (am Rande):
habe Programm bei Kumpel unter WinXP getestet: die graphische Oberfläche sieht da ziemlich über aus. Sonst scheint alles zu funktionieren.
Bis denne,
v8
v8-mogwai
08.12.2002, 12:08
Mahlzeit!
Damit das hier nicht geschlossen wird, kurze Meldung: Gesamte Netzwerkarchitektur neu. Alle Operationen jetzt nichtblockend. Leider hin und wieder crashes des client wegen konkurrierender Zugriffe auf mehrere LinkedList, bekomme ich aber sicher noch hin.
v8
v8-mogwai
09.02.2003, 10:48
Hallo,
version 0.3a:
Alles läuft jetzt stabil!
Ein paar bugs beseitigt, neue Benutzerführung.
Als nächstes wird networktraffic reduziert. (0.3b)
v8
v8-mogwai
23.01.2004, 14:40
hallo,
mottet das ganze am besten ein. einfach keine zeit und keine lust mehr
v8