Boatrace - Netgame

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3  Weiter

Worklogs Boatrace - Netgame

Verbessertes Menu

Mittwoch, 21. Juli 2010 von count-doku
Hallo,

ich habe das Menu umsgestaltet.
So kann man jetzt über einen Button im Hauptmenu
das Einstellungsmenu öffnen.

Nur das Haupt/Startmenu:
user posted image

Das über den Settings button eingeblendete Einstellungsmenu:
user posted image

Die Einstellungen können über SaveSettings gespeichert, bzw. LoadSettings geladen werden.

Wegen des VServer Problems mit TCP bin ich am Überlegen,ob ich Boatrace komplett auf UDP umstelle.
Die einzigen Änderungen wären im Chat und beim Einloggen.
Beim Chatwürde es auch nichts machen, wenn mal Daten verloren gehen,
beim Einloggen -> Senden der Map leider schon.
Werde mir das bis zum nächsten Eintrag nochmal überlegen Wink

Wers mal mit mir Testen will,
einfach in den BlitzBasic IRC oder in Thunders MaxNet kommen.
(Wenn ich da grad nicht on bin, PN.)


lg,
count-doku

Problem mit TCP und VServer

Freitag, 16. Juli 2010 von count-doku
Hallo Leser,

für die die Dachten, das Projekt sei vllt. tot, ihr habt euch getäuscht!
Ich habe in den letzten Wochen viele Fortschritte gemacht, leider
hänge ich jetzt aber vor einem Problem.

Neuerungen:
-Bäume
Es gibt 3 Arten von Bäumen,
2x Kleinere Laubbäume
1x Buschartigen Baum
Weitere Bäume folgen noch, vorallem ein Nadelbaum.

-Wasser steigt und sinkt jetzt im Takt zur Wellentex.
-Die Boote der anderen sind jetzt endlich auf der richtigen Höhe.
-Es gibt eine xxx logged in! und eine xxx logged out! Nachricht.

Leider ist es jetzt so,
dass wenn ich den Server auf Pummelies VServer laufen lasse,
und die RemoteVerbindung zu ist, der Server zwar empfängt,
aber nich antwortet.
Bei geöffneter RemoteVerbindung ist dieses Problem nicht da.
Ich werde dies mal mit Pummelie, besprechen, vllt. finden wir eine Lösung.

Die UDP Verbindung geht immer. Nur TCP hat da Probleme.

Sobald das Problem beseitigt ist,
gibt es den ersten großen Test.

Grüße,
Count-Doku

Frameunabhängig

Sonntag, 20. Juni 2010 von count-doku
Hallo,

nun zum 2ten Eintrag von heute...

Ich habe gerade den Client vollkommen Frame-Unabhängig gemacht.
Der Server läuft weiterhin mit einem Timer.

Die Kamersicht, der Nebel und die Größe der Skybox wurden angepasst.

Ein erster Test mit Pummelie lief auch erfolgreich,
da jetzt die Koordinaten, von jedem Spieler bei jedem Spieler
ankommmen.

Also, freut euch,
auf die Version 0.1.

Grüsse,
count-doku

Die Skydome

Sonntag, 20. Juni 2010 von count-doku
Hallo liebe Leser!

Heute Morgen habe ich nach langem Suchen endlich eine geeignete Textur für
die Skydome gefunden.

Ich hatte erst Krischans BlitzSky versucht einzubauen,
dies hat aber nicht gut geklappt, weil die BlitzSky lib
schon eine eingebaute Kamera und Tastenbelegung hat.
Ich hätte so alles erst suchen und ändern müssen,
außerdem tuts eine "normale" Skydome ja auch.

Des weiteren sinkt das Boot jetzt leicht ins Wasser ein.

Für die, die sich letztes Mal über die Kamerasteuerung beschwert haben,
gibt es heute das besondere i Tüpfelchen: 3 versch. Kameramodi:
1: Bootsteuerung mit WASD :: Kamera unabhängig davon mit Maus
2: Bootsteuerung mit WS :: Kamera und Bootdrehung mit der Maus
3: Bootsteuerung mit WSAD :: Kamera unabhängig mit Maus
Aber mit AlignToVector dreht sich die Cam langsam wieder zum Boot.

Die 3. Steuerung, hat noch leichte Bugs...

Wieder ein paar Bilder:
user posted image
user posted image

Einen Download gibts auch, allerdings
kann ich gerade keinen Server laufen lassen.
Ihr könnt es aber auch so testen,
einfach erst in der Config.ini

Host2=pummelie.de
ändern in:
Host2=127.0.0.1

Danach dann einmal Server-Start.bat starten.
Der Server läuft jetzt.

Jetzt die Datei Client-Start.bat öffnen.
Der Client öffnet sich, und verbindet sich
zu euerm lokalen Server.

Vllt. kann ich heute Nachmittag nochmal einen Server bei mir oder auf pummelie.de laufen lassen.

lg,
count-doku


EDIT:
Ja, irgendwie wurde Download nicht klickbar.
Also hier nochmal:
http://sites.google.com/site/c...=0&d=1

Und ich habe jetzt auch einen Server am laufen.
Dafür muss dann natürlich in der Config.ini
Unter
[Client]
Host2=pummelie.de
stehen...

Danach dann einfach wieder Client-Start.bat starten.

Schönes Anfahren... / Einen Namen / DEMO!

Samstag, 12. Juni 2010 von count-doku
Hallo,

In den letzten Tagen habe ich schon einiges fertig gekriegt.
Das Boot (ein Speedboot) fährt schön weich an, und wird bis zur Maximalgeschwindigkeit immer schneller.
Beim loslassen der Taste bremst es durch die Reibung, bis es steht.
Rückwärtsfahren geht auch.

Leider klappt das mit dem Übertragen der Spielercoords nicht so ganz, sodass nur immer die alten Spieler die neuen sehen, die neuen nicht aber die alten.
Da muss ich nochmal nach der Ursache suchen...

Einen Namen habe ich mir auch überlegt.
Da man im Spiel warscheinlich ein Bootsrennen fahren muss,
nenne ich es (sehr kreativ) Boatrace

Aber es gibt schon eine Demo (es kann sein, das man manchmal nicht verbinden kann. Dann läuft der Server grad nicht.)
Gesteuert wird mit WSAD und der Maus.
Chatleiste mir Tab öffnen und schliessen.
Leertaste öffnet/schliesst die Minimap.

Zum Spielen einfach die Client-Start.bat öffnen..

Bilder:
user posted image
Minimap, die Karte wurde automatisch erzeugt.
user posted image
Eine Insel+Boot

Download:
https://www.blitzforum.de/upload/file.php?id=8793

Lg,
Count-Doku

PS. Wie ihr seht, ist das Boot noch nicht so schön..
Suche deswegen einen Modellier.

Modell fertig, Demo kommt (leider) noch nicht

Dienstag, 8. Juni 2010 von count-doku
Hallo,

ich habe ein Bootmodell gemacht, es eingebaut usw.

Läuft auch alles ganz gut.

Die demo gibts noch nicht, weil:
Arrow Die Kollision noch nicht ganz klappt.
Arrow Manchmal noch Verbindungsprobleme auftreten.
Arrow Ich noch eine Detailtex übers Terrain machen will.

Eine Liste:
grün=Fertig eingebaut.
gelb=fast fertig, noch kleinere Bugs
rot=Noch im Aufbau, Planung


Chat
Hmap Generator
Tex Generator
Nebeleffekt
Wellentex
Client Minimap


Kollision
Verbindung(UDP)
Hmap für Wellen


Übertragung der Player Coords
Minimap fürn Server
Was mir so einfällt Wink


Guten Abend,
count-doku

Insellandschaft

Sonntag, 6. Juni 2010 von count-doku
Hi,

heute haben Matthias und ich den Inselgenerator fertig gestellt.
Dieser erzeugt aus ein paar Brushes eine Heightmap + Textur + Minimap.

Vielleicht muss ich mit den Farbabstufungen noch ein wenig spielen, aber ansonsten siehts gut aus.
Bild:
user posted image

Jetz mache ich noch ein Plane oder noch eine Heightmap fürs Wasser.
Dann noch ein Schiffchen modellieren und ich gebe die erste Demo raus.

lg,
count-doku

3D running!

Freitag, 4. Juni 2010 von count-doku
Hallo,

heute habe ich beim Client eine 3D Map eingebaut.
Ist zwar noch nicht textuiert, aber man sieht schon die Höhen.

Diese Map wird durch einen HMap Generator erzeugt, welcher aus verschiedenen vordefinierten
Inselformen eine Insellandschaft generiert.

Die Position des Clients wird auch übertragen und beim Server in einer Minimap dargestellt.
Wenn das Terrain textuiert ist, gibts auch Pics.

Morgen werde ich es dann textuieren, die Spielerdaten auch an andere Spieler übertragen lassen usw.
Vllt. erstelle ich heute Abend auch noch ein kleines Bootmodell.


lg,
count-doku

Schon der 3. Eintrag heute :wink:

Mittwoch, 2. Juni 2010 von count-doku
Hallo!

Ich habe heute mit Hilfe von Toasty und Matthias richtig was geschafft.

Der Server kriegt eine Minimap von der Karte auf der die Spieler spielen,
die Spieler sollen dort dann mit Pixeln eingezeichnet werden.

Momentan ist der Chat zwischen Server und den Clients schon voll einsatzfähig.
Morgen werde ich dann einbauen, das der Client auf einer Hmap laufen kann und die Daten per UDP
an alle anderen Spieler übertragen werden.
Und der server umrechnet wo auf seiner Minimap der Pixel sitzen muss.


Gute Nacht,
Count-Doku

Neu strukturiert

Mittwoch, 2. Juni 2010 von count-doku
Hallo,

ich habe jetzt das komplette Programm so umstruktoriert,
dass Server und Client in einer Code sowie .exe Datei sind.

Weitehin können sich jetzt mehrere Clients verbinden.
Dies läuft alles auch schon übers Internet und auch nur der Server muss die Ports freigeben.
Beim Client ist dies nicht notwendig...

Matthias Idee mit dem Bootrennspiel um Inseln hört sich gut an.
Werde mal gucken, was ich da so hinkriege.

Unten noch der Quellcode....

mfg,
count-doku

Da ich das ganze Opensource machen will, hier mal der Code:
->Main.bb BlitzBasic: [AUSKLAPPEN]
;SERVER PORTS:
Global SERV_IP$="blitzudp.dyndns.org"
Const SERV_TCP_PORT=6523
Const SERV_UDP_PORT=6524
;-------------------------------------------------------------------------


Graphics 800,600,0,2
SetBuffer BackBuffer()
AppTitle "TCP/UDP Server"

Include "net_lib.bb"

Global Server.TServer
Global Client.TClient

Type TServer
Field ip$,int_ip,tcp_port,udp_port
Field tcp_stream,udp_stream
Field name$
End Type
Type TClient
Field ip$,int_ip,tcp_port,udp_port
Field tcp_stream,udp_stream
Field name$
End Type

If Input("Client? 0/1")=0
drawServer()
Else
drawClient()
End If
End
Function drawServer()
serv_Init()
Local timer=CreateTimer(30)
Local y=15
While KeyHit(1)=0
Cls
serv_UpdateLogin()
y=15
For Client.TClient=Each TClient
Text 1,y,Client\name+" connected."
Text 1,y+15,"IP: "+Client\ip
Text 1,y+30,"Int_IP: "+Client\int_ip
Text 1,y+45,"TCP Port: "+Client\tcp_port
Text 1,y+60,"UDP Port: "+Client\udp_port
y=y+(5*15)
Next
WaitTimer timer
Flip 0
Wend
For Client.TClient=Each TClient
CloseTCPStream Client\tcp_stream
Delete Client.TClient
Next
CloseTCPServer Server\tcp_stream
CloseUDPStream Server\udp_stream

End Function
Function drawClient()
clie_Init()
AppTitle "TCP/UDP :: IP: "+Client\ip+" :: Int_IP: "+Client\int_ip+" :: Ports: "+Client\tcp_port+" "+Client\udp_port

Local timer=CreateTimer(30)

While KeyHit(1)=0
Cls
Text 1,1,"Connected..."


WaitTimer timer
Flip 0
Wend
CloseTCPStream Client\tcp_stream
CloseUDPStream Client\udp_stream
End Function
Function serv_Init()
Server.TServer=New TServer
Server\ip=GetNetIP()
Server\int_ip=DottedToInt_IP(Server\ip)
Server\tcp_port=SERV_TCP_PORT
Server\udp_port=SERV_UDP_PORT
AppTitle "TCP/UDP :: IP: "+Server\ip+" :: Int_IP: "+Server\int_ip+" :: Ports: "+Server\tcp_port+" "+Server\udp_port

Server\tcp_stream=CreateTCPServer(Server\tcp_port)
Server\udp_stream=CreateUDPStream(Server\udp_port)
End Function
Function clie_Init()
Server.TServer=New TServer
Server\ip=HostnameToIP$(SERV_IP)
Server\int_ip=DottedToInt_IP(Server\ip)
Server\tcp_port=SERV_TCP_PORT
Server\udp_port=SERV_UDP_PORT

Client.TClient=New TClient
Client\ip$=GetNetIP()
Client\int_ip=DottedToInt_IP(Client\ip)
clie_UpdateLogin()
End Function

;-------------------------------------------------------------------------
;Login
Function serv_UpdateLogin(all_login=1)
Local new_client_handle
If all_login
new_client_handle=AcceptTCPStream(Server\tcp_stream)
If new_client_handle<>0
Client.TClient=New TClient
Client\tcp_stream=new_client_handle
Client\int_ip=TCPStreamIP(Client\tcp_stream)
Client\ip=DottedIP(Client\int_ip)
Client\tcp_port=TCPStreamPort(Client\tcp_stream)
Client\name=ReadLine(Client\tcp_stream)
If RecvUDPMsg(Server\udp_stream)=Client\int_ip
If ReadInt(Server\udp_stream)=1
Client\udp_port=UDPMsgPort(Server\udp_stream)
WriteInt Server\udp_stream,1
WriteInt Server\udp_stream,Client\tcp_port
WriteInt Server\udp_stream,Client\udp_port
SendUDPMsg Server\udp_stream,Client\int_ip,Client\udp_port
End If
End If
End If
End If

End Function
Function clie_UpdateLogin()
Client\tcp_stream=OpenTCPStream(Server\ip$,Server\tcp_port)
Client\udp_stream=CreateUDPStream()
If Client\tcp_stream=0 Or Client\udp_stream=0 Then RuntimeError "Could not connect!"
WriteLine Client\tcp_stream,"Test"
WriteInt Client\udp_stream,1
SendUDPMsg Client\udp_stream,Server\int_ip,Server\udp_port
Local timeout=MilliSecs()
While MilliSecs()<timeout+5000
RecvUDPMsg(Client\udp_stream)
If ReadInt(Client\udp_stream)=1
Client\tcp_port=ReadInt(Client\udp_stream)
Client\udp_port=ReadInt(Client\udp_stream)
Local connected=True
Exit
End If
Wend
If connected=False
RuntimeError "Timeout! Server didnt respond..."
End If
End Function
;-------------------------------------------------------------------------


Die net_lib.bb:
BlitzBasic: [AUSKLAPPEN]
Funktionssammlung 
;Netzwerk/Internet Übertragung
Function HostnameToIP$(hostname$)
Return DottedIP(HostIP(CountHostIPs(hostname$)))
End Function
Function GetNetIP$()
Local rdLine$,ip$
Local ipstream = OpenTCPStream("www.tes-cheese.ch",80)
WriteLine ipstream, "GET /myip.php HTTP/1.0"
WriteLine ipstream, "Host: www.tes-cheese.ch"
WriteLine ipstream, ""
Repeat
rdLine$ = ReadLine(ipstream)
If Instr(rdLine$, "IP-ADDRESS: ") <> 0
ip$ = Replace(rdLine$, "IP-ADDRESS: ","")
Exit
EndIf
Forever
CloseTCPStream(ipstream)
Return ip$
End Function
Function DottedToInt_IP%(IP$)
a1 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
a2 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
a3 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
a4 = Int(IP$)
Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) + a4
End Function


Gehe zu Seite Zurück  1, 2, 3  Weiter