Difference between revisions of "MapPaint"
Ghoulsblade (talk | contribs) (→map images) |
Ghoulsblade (talk | contribs) (→aufgaben) |
||
Line 45: | Line 45: | ||
* netzwerk-protokoll (ghondragor) | * netzwerk-protokoll (ghondragor) | ||
* netzwerk-server (ghondragor) | * netzwerk-server (ghondragor) | ||
− | * netzwerk-client implementierung in c# | + | * netzwerk-client implementierung in c# (methoden zum net-protokoll senden+empfangen) |
− | * gui | + | |
− | ** | + | * gui : karte darstellen |
− | ** | + | ** zoom mit mauswheel |
− | ** knöpfe zum farbe wählen ( | + | ** rumscrollen mit rechtsclick-drag |
− | ** bei gedrückter maustaste die bewegung in kurze linien aufsplitten | + | ** 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 | ||
+ | ** eigenen mauszeugers in der passenden farbe darstellen | ||
+ | ** alle 100msec eigene maus position per netzwerk-client funktionsaufruf senden | ||
+ | ** per netzwerk empfangene mauspositionen darstellen (notify durch netzwerk-client) | ||
* karten images | * karten images |
Revision as of 16:44, 15 December 2012
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 was nicht geht:
- 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)
- VersionsVerwaltung : 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
- windows forms : alte standard api für alle DotNET gui sachen, wrapper für windows api
- XNA : DirectX wrapper, (win8 problem?)
- WPF : Gfx Framework und Teil von DotNET Framework. Nachfolger von Win Forms. <--- vermutlich das hier
aufgaben
- netzwerk-protokoll (ghondragor)
- 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
- eigenen mauszeugers in der passenden farbe darstellen
- alle 100msec eigene maus position per netzwerk-client funktionsaufruf senden
- per netzwerk empfangene mauspositionen darstellen (notify durch netzwerk-client)
- karten images
- indar ist schon fertig, siehe unten
- esamir aus screenshots erstellen
- amerish aus screenshots erstellen
- zusätzliche details wie schleichwege für sunderer rausfinden und einzeichnen, idealerweise als extra bild-datei / layer.
- später evtl overlay lib aus mumble (opensource voicechat ähnlich teamspeak) verwenden.
netzwerk protokoll
- zeichnen ist intern linienbasiert, viele kurze linien -> sieht rund aus.
- koordinaten in pixel bei max-zoom : ingame grid = 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