Seite 1 von 1

[JA2:C++] Konzepterstellung

Verfasst: 12 Sep 2005, 17:22
von Realist
Moin,

hier ein paar Vorüberlegungen zur Umsetzung:

Zunächst sehe ich als Hauptziel die Itemstrukturen durch Klassen abzulösen.
Dabei habe ich mir gedacht eine (evtl. abstrakte) Klasse CItem zu
haben, von der folgende Klassen abgeleitet werden:
  • CWeapon
    • CGun
    • CGrenadeLauncher
    • CRocketLauncher
    • CKnife
    • CThrowingKnife
    • CMelee
  • CAmmo
  • CExplosive
  • CArmour
    • (CGrenade / CLightFlare)
  • CKit
    • CMedkit
    • CCamokit
    • CDrink
  • CFaceItems
    • CGoggles
    • CGasmask
  • CAttachment
    • CSniperscope
    • CLaserscope
    • CTalon
    • CBipod
    • ...
  • CKey
Dies ist natürlich nur eine vorläufige Struktur, die diskutiert werden muss und
zur Orientierung dienen soll. Auch die Bezeichnungen sollten noch überdacht
werden.

Weiterhin müssen dann alle hard-coded Itembezeichnungen entfernt werden
und in Bezug auf die Klassen gesetzt werden.

Die große Schwierigkeit wird sein, die vorhandenen Funktionen als Methoden
den jeweiligen Klassen zuzuordnen. Auch müssen viele Variablendeklarationen
angepasst werden.

Was sagt ihr dazu?

Verfasst: 12 Sep 2005, 18:48
von Nitrat
:angst: :gruebel: :hail: @Realist :khelle: ;)

NITsorry,aberDASmusstesein :crazy: RAT

Verfasst: 13 Sep 2005, 13:12
von commandant
SCHINDER! :khelle:

@Realist
Hört sich gut an.

Verfasst: 15 Sep 2005, 02:26
von patrick.nq
@Nitrat:

(Sorry) wenn du vom "Tuten und Blasen", hier: explizit coden in C/C++ , NULL Ahnung hast, schlage ich vor, dass du dich mit deinem unnötigen und nutzlosen Gespamme verziehst, wenn du nichts Produktives beifügen kannst!!

Ich finde sowieso, dass sich hier ohnehin in erster Linie die "Elite" - sprich: Coder - unterhalten sollten, damit der Thread nicht "ausartet". :D



@Realist:

Ja, als groben Ansatz finde ich dein Konzept schon recht ansprechend. Ich muss mich nochmal ein wenig reinlesen, wie wir das damals voriges Semester in den Praktikastunden gemacht hatten, denn der Aufbau ähnelt ein wenig.

Verfasst: 15 Sep 2005, 07:53
von Realist
Weiterhin stellt sich die Frage, auf welcher Grundlage das Projekt fußen soll.
Imho macht es Sinn, die BP-Variante zu benutzen. Die haben ihren Sourcecode bereits
auf C++-Kompatibilität zugeschnitten für das VS .net. Außerdem sind dort die
Grundzüge der XML Unterstützung eingearbeitet, was uns ja nur zugute kommt.
Ich muss mich nochmal ein wenig reinlesen, wie wir das damals voriges Semester in den Praktikastunden gemacht hatten, denn der Aufbau ähnelt ein wenig.
:confused: Meinst du in Bezug auf Vererbung?

Verfasst: 16 Sep 2005, 03:32
von patrick.nq
Realist hat geschrieben:Weiterhin stellt sich die Frage, auf welcher Grundlage das Projekt fußen soll.
Imho macht es Sinn, die BP-Variante zu benutzen. Die haben ihren Sourcecode bereits
auf C++-Kompatibilität zugeschnitten für das VS .net. Außerdem sind dort die
Grundzüge der XML Unterstützung eingearbeitet, was uns ja nur zugute kommt.
Von mir aus können wir gern die BP-Variante benutzen. Allerdings hab ich jetzt nur die eine zip-Datei von ja2mods.de. :confused:
Ich bräuchte dann evtl. noch die BP-Variante per Download-Quelle oder zugeschickt.

Was macht es für einen Unterschied, ob man VS_6.0 oder VS_.Net nimmt? Wir coden ohnehin in C++ und nicht in .Net , oder?

:confused: Meinst du in Bezug auf Vererbung?
Ja, unter anderem. Aber das war mehr ein Monolog meinerseits... ;)
Also nicht so wichtig bzw. nicht wichtig für unsere Arbeit! (Ich hab nur laut nachgedacht...) :D

Ich hab letzte Zeit vermehrt in Java programmiert, und da muss man sich jedesmal wieder umstellen, dass man nicht durcheinander kommt zwischen C, C++, Java und .Net . Sind halt schon etwas verschieden. :)


In wiefern willst du was mit XML machen, bzw. in wiefern kommt uns da XML-Unterstützung zu gute?
Sorry, für die evtl. dumme Frage, aber ich hatte mit XML bisher noch nicht viel am Hut... (jedenfalls kann ich mich nicht mehr daran erinnern, falls wir es doch schon mal durchgenommen hatten. Aber ich denke, eher weniger. :azzangel: ;))

Verfasst: 16 Sep 2005, 07:11
von Realist
Im Prinzip ist es völlig egal, ob wir VC6 oder VS.NET nehmen, das stimmt. Ich würde
nur gerne den Code aus dem BP nehmen und der ist, wie gesagt, auf NET ausgelegt.
Ich bevorzuge deren Version, weil sie erstens optimiert ist, viele Compilerwarnungen
wurden beseitigt, zweitens hats eben diese XML-Unterstützung.

Die ist insofern wichtig, als dass aus diesem Projekt nach der Konvertierung im
nächsten Schritt eine moddingfreundlich "masterexe" herauskommen soll, in der
die Daten ausgelagert sind. Und das geht am besten in XML.

[edit]Was ich noch vergessen habe, ist, dass jene BP Version die SGP in den
Build-Ordner verlegt hat. Das mag vielleicht nicht besonders erwähnenswert
klingen, aber mit der normalen Version kriegst du das Kotzen, wenn du
parallel mehrere Code-Versionen bearbeiten willst. :azzangel:[/edit]

Der verwendete XML-Parser ist übrigens 'expat' und ist ihn C geschrieben. :khelle:
Mir ist es aber wichtig, dass der wenigstens funktioniert, wenn er einmal richtig
eingearbeitet ist. Von daher haben wir ein Problem weniger.

Übrigens kam im anderen Thread der Wunsch danach auf, die NET-Umgebung zu
verwenden, welche imho auch verbreiteter ist als die alte 6er Version.
Ich kann mittlerweile mit allen Versionen, ob 6, 7 oder 8, dienen, und persönlich
wäre mir die 7er auch am liebsten. :)

Die Sourcecode-Version, die ich meine, bekommst du hier. *klick*
Da, wo steht "Source Base" die "Ja2 Repository C++ version" nehmen, und um die exe
ausführen zu können, brauchts die Dateien im zweiten Zip unter "Test Execuatable(s)".
da muss man sich jedesmal wieder umstellen, dass man nicht durcheinander kommt zwischen C, C++, Java und .Net . Sind halt schon etwas verschieden.
Ach was, das ist doch alles das gleiche. :D
Nein, ich kenn das ja auch, aber zwischen diesen Sprachen gehts ja noch. :)

Wenn das alles soweit okay ist, können wir uns ja dem konkreten Klassendesign
zuwenden. :)

Verfasst: 16 Sep 2005, 16:41
von patrick.nq
Tja, dann muss ich nur noch schaun, wo ich VS.Net herbekomm. Eventuell krieg ichs aus der Hochschule, mal schaun. Aber die Vorlesungszeit - und somit Bezugsquelle - geht erst wieder im Oktober los. :(

Ich hab letzte Zeit nur in Eclipse gecodet - hauptsächlich eben Java. :uhoh:

Verfasst: 17 Sep 2005, 13:30
von Realist
Moin,

es ist ja nicht so, dass die BP.net Version zwingend mit .net kompiliert werden muss
- s. PN :)


Mal eine Überlegung zur Benennung der Klassen:
Wenn wir die Klassen entsprechend der Namen der vorhanden structs benennen,
können wir uns eine Menge Arbeit bei den vorhandenen Variablendeklarationen
ersparen, sehe ich das richtig? Andererseits wäre das der Übersicht eher abträglich,
wie ich finde.

Dann frage ich mich auch, wie wir die Klassen kapseln sollen. Der Einfachheit halber
wäre es am sinnvollsten, alle Eigenschaften als public zu kennzeichnen, um nicht
sofort den ganzen Code neuschreiben zu müssen. Andererseits finde ich auch dies
furchtbar schlecht was den Programmierstil angeht.

Bei all dem frage ich mich, ob wir den einfachen oder den schweren Weg einschlagen
sollen - imho hängt davon ab, ob man das Endergebnis als "gut" oder "gut gemeint"
bewerten kann.

Verfasst: 21 Sep 2005, 18:50
von patrick.nq
Wie geht's jetzt weiter?
Arbeiten wir an dem ursprünglichen Projekt mit dem BP.net Quellcode weiter, oder optimieren wir den Version 1.13-Mod?

Beides zeitgleich sehe ich schwierig und auch in gewisser Weise überflüssig.

Verfasst: 21 Sep 2005, 21:36
von Realist
Beides zeitgleich hat in der Tat natürlich keinen Sinn.
Die Frage habe ich mir auch schon vorher gestellt, mich aber gegen 1.13 entschieden,
ganz einfach um weitestgehend das Original beizubehalten.
Nachdem aber der 1.13 mod so gut ankommt und zudem die Daten schon zum sehr
großen Teil ausgelagert sind, wäre es wohl angeraten diesen als Grundlage zu nehmen.

Ich wüsste nicht, was momentan dagegen spricht.
Hat jemand Einwände?

Verfasst: 21 Sep 2005, 23:41
von KillerFaultier
realist, wie du dir sicherlich vorstellen kannst habe ich nichts dagegen!

aber ich bin ja auch kein programmierer.

ich denke mir jedoch daß sich im endeffekt bedeutend mehr erreichen lässt wenn die fähigen programmierer diesseits und jenseits des großen teiches weitestgehend zusammen an einem projekt wie dem 1.13 arbeiten. einer allein kann nicht immer daran arbeiten und es gibt ne menge guter ideen umzusetzen!
zugegeben ich weiß noch zu wenig über die hintergründe und zielsetzung des 1.13 patches genausowenig wie über eure programmiertechnischen vorhaben mit JA2.
aber ich denke mir halt daß es sowohl der kompatibilität als auch der modderszene insgesamt zugute kommt wenn sie eine richtig gute, einheitliche basis hat auf der sie ihre mods entwickeln kann. wieso sich die arbeit doppelt machen?

wenn die JA2 fans aller länder zusammenarbeiten schaffen wir es vielleicht irgendwann zu einer mächtig guten version 2.0? dann können popov und co einpacken und die modder ausrasten und alle hobbysöldner ihrem privatleben und dem nächtlichen schlaf lebewohl sagen! ich wie gesagt biete mich als übersetzer und texter an. keine angst, ich beherrsche durchaus eine anständige ortographie auch wenn ich aus gründen der schnelligkeit hier weitgehend darauf verzichte...

was meint ihr code-jockeys dazu?

Verfasst: 22 Sep 2005, 05:57
von patrick.nq
Ich bin auch für eine Weiterentwicklung und Optimierung - vorallem Bugfixing - des 1.13-Mods ins Deutsche.

Allerdings müssten wir uns dann schon absprechen, wer was wo macht, denn wie heißt es so schön: "viele Köche...." ;)
Also ich bin natürlich gern für ein Multi-Programmierer-Projekt, nur sollte eben der eine wissen, was der andere macht.
Eine laufend fortführende Changelist/History gehört natürlich dazu.

Ist der Code jetzt eigentlich schon ganz nach C++ portiert?

Verfasst: 22 Sep 2005, 06:39
von Realist
Ich bin auch für eine Weiterentwicklung und Optimierung - vorallem Bugfixing - des 1.13-Mods ins Deutsche.
Bugfxing ist dabei schon betrieben worden. Sowohl das Whiteprojekt, als auch MM
selber haben Bugs gefixt. Natürlich können noch welche über / neu dazu gekommen
sein, aber dieser Aspekt, spricht auch für 1.13.
Ist der Code jetzt eigentlich schon ganz nach C++ portiert?
jein - es werden natürlich noch die c-bibliotheken verwendet, afaik. ach, ich
versteh die frage nicht. :khelle:

Was die Changeliste angeht, dachte ich mir, dass wir eine Aufteilung nach Dateien
vornehmen, wenn wir einen konkreten Klassenentwurf vorliegen haben. Das heißt
jeder bekommt ein paar Dateien und passt sie den neuen Klassen an. Zur Hölle,
ich hab sowas noch nie gemacht. :khelle:

Verfasst: 23 Sep 2005, 19:11
von patrick.nq
Realist hat geschrieben:ach, ich
versteh die frage nicht. :khelle:
Ach, vergiss die Frage. War auch nicht so wichtig. :khelle: ;)
Was die Changeliste angeht, dachte ich mir, dass wir eine Aufteilung nach Dateien
vornehmen, wenn wir einen konkreten Klassenentwurf vorliegen haben. Das heißt
jeder bekommt ein paar Dateien und passt sie den neuen Klassen an. Zur Hölle,
ich hab sowas noch nie gemacht. :khelle:
Ja, genauso hab ich auch gedacht.
Btw: Was noch nicht ist, kann ja noch werden! :khelle:

Verfasst: 02 Okt 2005, 14:28
von Realist
Kurze Frage:
Macht es Sinn als Grundlage für das Projekt einen 1.13-Sourcecode zu nehmen, der
zumindest im Moment noch ständig weiterentwickelt wird, oder lieber doch die
andere BP-Version? Oder vielleicht auch abwarten, bis es eine finale 1.13 gibt?

Verfasst: 02 Okt 2005, 15:02
von commandant
Das Problem an der 1.13 Version ist, dass sie schon Änderungen in Bezug auf Waffen enthält und somit eigentlich schon ein Waffenmod ist.
Von dem her wäre es vielleicht schöner, den normalen Sourcecode zu nehmen.

Verfasst: 02 Okt 2005, 15:12
von Wulfy301
@commandant

Das sehe ich auch so, eine jungfräuliche 1.13 exe wird aber viel Arbeit machen!

Mfg...

Verfasst: 02 Okt 2005, 15:49
von commandant
Inwiefern ist es ein Vorteil für die Arbeit die 1.13er Version zu nehmen und nicht die 1.12er?

Verfasst: 02 Okt 2005, 16:58
von -=[MAD]=-
also ich würde auch für die v1.12 plädieren, die v1.13 braucht noch zeit bis sie fertig ist (wenn sie überhaupt jemals RICHTIG fertig wird ;) )

andererseits könnte es auch sinn machen, gerade darauf zu warten. dann könnte man sich die arbeit nämlich fast sparen (glaub ich :red: )

gruss, -=[MAD]=-