Difference between revisions of "MapPaint"

From Ghoulwiki
Jump to: navigation, search
(netzwerk protokoll)
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== about ==
 
== about ==
 +
 +
[http://www.vanus-revenge.de/ planetside 2 outfit vanus-revenge]
  
 
Ziel: Eine zoombare Karte darstellen auf der die Squadleader multi-player mässig drauf rummalen können (jeder sieht was andere malen).
 
Ziel: Eine zoombare Karte darstellen auf der die Squadleader multi-player mässig drauf rummalen können (jeder sieht was andere malen).
Line 10: Line 12:
 
* details : beliebte Sunderer Positionen
 
* details : beliebte Sunderer Positionen
  
Was leider nicht geht ist auf Daten aus dem Spiel zugreiffen, das heisst was nicht geht:
+
Was leider nicht geht ist auf Daten aus dem Spiel zugreiffen, das heisst:
 
* NICHT MÖGLICH: automatisch spieler positionen abfragen
 
* NICHT MÖGLICH: automatisch spieler positionen abfragen
 
* NICHT MÖGLICH: territorial control anzeigen
 
* NICHT MÖGLICH: territorial control anzeigen
Line 23: Line 25:
 
== tech ==
 
== tech ==
  
* C#  visual studio 2010 express (kostenlos)
+
* [http://www.microsoft.com/visualstudio/deu/downloads#d-2010-express  C#  visual studio 2010 express (kostenlos)]
* [http://code.google.com/p/tortoisegit/wiki/Download VersionsVerwaltung : git]
+
* wer sich nicht mit git rumschlagen mag einfach per email an ghoulsblade_AT_schattenkind_DOT_net fragen, dann schick ichn zip mit dem aktuellen stand.
 +
* optional : [http://code.google.com/p/tortoisegit/wiki/Download VersionsVerwaltung : git]
 +
** ansonsten mit git : vorher [http://code.google.com/p/msysgit/downloads/list?can=2&q=%22Full+installer+for+official+Git+for+Windows%22 mysysgit installieren] (commandline die von tortoise-git benutzt wird)
 +
** [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html puttygen] holen
 +
** ein private-public keypair erstellen (rsa)
 +
** den private key als .ppk datei lokal speichern
 +
** den public key (oben im textfeld) an ghoulsblade_AT_schattenkind_DOT_net schicken, dann schalte ich euch frei.
 +
** dann mit dem explorer irgendwo in einen leeren ordner, rechtsclick in die leere fläche
 +
** git clone...  gitosis@zwischenwelt.org:mappaint.git
  
 
== gui möglichkeiten ==
 
== gui möglichkeiten ==
Line 30: Line 40:
 
* windows forms : alte standard api für alle DotNET gui sachen, wrapper für windows api
 
* windows forms : alte standard api für alle DotNET gui sachen, wrapper für windows api
 
* XNA : DirectX wrapper, (win8 problem?)
 
* XNA : DirectX wrapper, (win8 problem?)
* WPF : Gfx Framework und Teil von DotNET Framework. Nachfolger von Win Forms.
+
* <strike>[http://msdn.microsoft.com/en-us/library/aa970268%28v=vs.100%29.aspx WPF : Gfx Framework und Teil von DotNET Framework. Nachfolger von Win Forms.]</strike>
 +
* [http://libsdl.org SDL] <--- das hier
  
 
== aufgaben ==
 
== aufgaben ==
  
* server (ghondragor)
+
* <strike>netzwerk-protokoll</strike> (ghondragor) (done, siehe unten)
* netzwerk-protokoll (ghondragor)
+
* netzwerk-server (ghondragor)
* client
+
* netzwerk-client implementierung in c# (methoden zum net-protokoll senden+empfangen)
* gui  
+
 
** karte darstellen
+
* gui : karte darstellen
** zoom
+
** zoom mit mauswheel
** knöpfe zum farbe wählen (radiergummi, für jede farbe ein clearall knopf), evtl undo
+
** rumscrollen mit rechtsclick-drag
 +
** knöpfe zum farbe wählen (grün/braun/lila/gelb wie auf den mockups)
 +
** unter jeden farb-knopf ein clear knopf für diese farbe
 +
** radiergummi = weisser kreis mit rotem x
 +
 
 +
* gui : draw : bei gedrückter maustaste die bewegung in kurze linien aufsplitten
 +
** netzwerk-client sende funktion aufrufen
 +
** funktion für eintragen in lokale linien-liste aufrufen
  
* später overlay lib aus mumble lib verwenden.
+
* gui : linien : lokale linien-liste  (farbe,x,y,x2,y2)
 +
** auf karte bei zoom+scroll korrekt darstellen
 +
** bei empfang von netzwerk-nachricht linien eintragen
 +
** bei lokaler verwendung oder netzwerk-empfang von clear linien löschen
 +
** bei lokaler verwendung oder netzwerk-empfang von radiergummi linien nahe position löschen
 +
 
 +
* gui : maus
 +
** alle 100msec  eigene maus position per netzwerk-client funktionsaufruf senden
 +
** per netzwerk empfangene mauspositionen darstellen (notify durch netzwerk-client)
 +
** evtl: eigenen mauszeugers in der ausgewählten farbe darstellen
 +
 
 +
* karte : indar  (siehe unten)
 +
** <strike>highres-karte aus screenshots bauen</strike>
 +
** generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
 +
* karte : esamir
 +
** highres-karte aus screenshots bauen
 +
** generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
 +
* karte : amerish
 +
** highres-karte aus screenshots bauen
 +
** generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
 +
 
 +
* evtl zusätzliche details wie schleichwege für sunderer rausfinden und einzeichnen, idealerweise als extra bild-datei / layer.
 +
 
 +
* evtl später overlay lib aus mumble (opensource voicechat ähnlich teamspeak) zur ingame darstellung
  
 
== netzwerk protokoll ==
 
== netzwerk protokoll ==
  
linien.
+
* zeichnen ist intern linienbasiert, viele kurze linien -> sieht rund aus.
 +
* koordinaten in pixel bei max-zoom : ingame grid = ca 272x272 pixel pro feld  (siehe indar.jpg)
 +
 
  
 
* msg line
 
* msg line
** 1byte msgtype (1=line)
+
** 1byte msgtype (1)
 
** 1byte farbe (1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 
** 1byte farbe (1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 
** 4byte int startpunkt x
 
** 4byte int startpunkt x
Line 57: Line 100:
  
 
* msg erase  (radiergummi an stelle)
 
* msg erase  (radiergummi an stelle)
** 1byte msgtype (1=line)
+
** 1byte msgtype (2)
 
** 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 
** 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 
** 4byte int x
 
** 4byte int x
Line 64: Line 107:
  
 
* msg clear  (komplett entfernen)
 
* msg clear  (komplett entfernen)
** 1byte msgtype (1=line)
+
** 1byte msgtype (3)
 
** 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 
** 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 +
 +
* mouse pointer  (zum rumfuchteln und diskutieren ohne die ganze zeit zu malen)
 +
** 1byte msgtype (4)
 +
** 1byte farbe (0=weiss 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
 +
** 4byte int x
 +
** 4byte int y
  
 
== mockups ==
 
== mockups ==
Line 80: Line 129:
 
<gallery>
 
<gallery>
 
Image:Indar.jpg
 
Image:Indar.jpg
 +
Image:Amerish_detailed.jpg
 +
Image:Esamir_detailed.jpg
 
</gallery>
 
</gallery>
 +
 +
== notes ==
 +
 +
* 2013-02 planetside API http://census.soe.com/ 
 +
* player live info https://players.planetside2.com/
 +
* http://ps2maps.com/  z.b. indar http://ps2maps.com/briggs/indar

Latest revision as of 18:53, 6 April 2013

about

planetside 2 outfit vanus-revenge

Ziel: Eine zoombare Karte darstellen auf der die Squadleader multi-player mässig drauf rummalen können (jeder sieht was andere malen). So könnte man schön planen welcher Squad wo genau(zoom) lang laufen soll, oder welche Gebiete der reihe nach eingenommen werden sollen bei einem grösseren Feldzug.

Die Karte wird aus mehreren Bilddateien bestehen, die wir neben dem taktischen malen in echtzeig auch noch bereichern können :

  • details : Schild-generator, Spawn-Gebäude, Fahrzeug-Terminal...
  • details : Schleichwege wo man mit Fahrzeugen über enge Bergpässe kommt
  • details : beliebte Sunderer Positionen

Was leider nicht geht ist auf Daten aus dem Spiel zugreiffen, das heisst:

  • NICHT MÖGLICH: automatisch spieler positionen abfragen
  • NICHT MÖGLICH: territorial control anzeigen
  • NICHT MÖGLICH: squad/platoon wegpunkte anzeigen und setzen

Erstmal wird das ganze als externes Programm realisiert, so dass man mit alt-tab wechseln muss. Ideal wäre es das ganze als "Overlay" ähnlich Teamspeak-Overlay-Plugin oder Fraps Einblendung im Spiel anzuzeigen, während dem Spiel klein und transparent, ähnlich ner 2ten minimap, und per hotkey dann gross. Technisch möglich wäre das mit dem Overlay (ich hab schon eine lib gefunden), nur da grade in letzter Zeit oft Warnungen wegen 3rd-Party Apps kommen sollten wir hier vermulich vorsichtig sein und evtl Sony auf Outfit Ebene mal fragen ob sowas ok ist.

tech

  • C# visual studio 2010 express (kostenlos)
  • wer sich nicht mit git rumschlagen mag einfach per email an ghoulsblade_AT_schattenkind_DOT_net fragen, dann schick ichn zip mit dem aktuellen stand.
  • optional : VersionsVerwaltung : git
    • ansonsten mit git : vorher mysysgit installieren (commandline die von tortoise-git benutzt wird)
    • puttygen holen
    • ein private-public keypair erstellen (rsa)
    • den private key als .ppk datei lokal speichern
    • den public key (oben im textfeld) an ghoulsblade_AT_schattenkind_DOT_net schicken, dann schalte ich euch frei.
    • dann mit dem explorer irgendwo in einen leeren ordner, rechtsclick in die leere fläche
    • git clone... gitosis@zwischenwelt.org:mappaint.git

gui möglichkeiten

aufgaben

  • netzwerk-protokoll (ghondragor) (done, siehe unten)
  • netzwerk-server (ghondragor)
  • netzwerk-client implementierung in c# (methoden zum net-protokoll senden+empfangen)
  • gui : karte darstellen
    • zoom mit mauswheel
    • rumscrollen mit rechtsclick-drag
    • knöpfe zum farbe wählen (grün/braun/lila/gelb wie auf den mockups)
    • unter jeden farb-knopf ein clear knopf für diese farbe
    • radiergummi = weisser kreis mit rotem x
  • gui : draw : bei gedrückter maustaste die bewegung in kurze linien aufsplitten
    • netzwerk-client sende funktion aufrufen
    • funktion für eintragen in lokale linien-liste aufrufen
  • gui : linien : lokale linien-liste (farbe,x,y,x2,y2)
    • auf karte bei zoom+scroll korrekt darstellen
    • bei empfang von netzwerk-nachricht linien eintragen
    • bei lokaler verwendung oder netzwerk-empfang von clear linien löschen
    • bei lokaler verwendung oder netzwerk-empfang von radiergummi linien nahe position löschen
  • gui : maus
    • alle 100msec eigene maus position per netzwerk-client funktionsaufruf senden
    • per netzwerk empfangene mauspositionen darstellen (notify durch netzwerk-client)
    • evtl: eigenen mauszeugers in der ausgewählten farbe darstellen
  • karte : indar (siehe unten)
    • highres-karte aus screenshots bauen
    • generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
  • karte : esamir
    • highres-karte aus screenshots bauen
    • generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
  • karte : amerish
    • highres-karte aus screenshots bauen
    • generatoren+scu,spawnraum,teleporter,air-/fahrzeug-/infantrie-terminals eintragen
  • evtl zusätzliche details wie schleichwege für sunderer rausfinden und einzeichnen, idealerweise als extra bild-datei / layer.
  • evtl später overlay lib aus mumble (opensource voicechat ähnlich teamspeak) zur ingame darstellung

netzwerk protokoll

  • zeichnen ist intern linienbasiert, viele kurze linien -> sieht rund aus.
  • koordinaten in pixel bei max-zoom : ingame grid = ca 272x272 pixel pro feld (siehe indar.jpg)


  • msg line
    • 1byte msgtype (1)
    • 1byte farbe (1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
    • 4byte int startpunkt x
    • 4byte int startpunkt y
    • 4byte int endpunkt x
    • 4byte int endpunkt y
  • msg erase (radiergummi an stelle)
    • 1byte msgtype (2)
    • 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
    • 4byte int x
    • 4byte int y
    • 4byte int radius
  • msg clear (komplett entfernen)
    • 1byte msgtype (3)
    • 1byte farbe (0=all 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
  • mouse pointer (zum rumfuchteln und diskutieren ohne die ganze zeit zu malen)
    • 1byte msgtype (4)
    • 1byte farbe (0=weiss 1=grün/alpha, 2=braun/bravo, 3=lila/charlie, 4=gelb/delta)
    • 4byte int x
    • 4byte int y

mockups

map images

notes