1w6
Published on 1w6 (http://www.1w6.rakjar.de)

Startseite > NPC Kämpfe und Schlachten (NKuS)

NPC Kämpfe und Schlachten (NKuS)

Dieses Modul existiert noch nicht ... dafür entsteht ein Programm, das die in Entwicklung befindlichen Regeln umsetzt.

(Blog-Beitrage und weitere Texte zu dem Programm [1], allgemeine Infos unten)

Schlachtfeld.py

Schlachtfeld ist ein kleines Werkzeug zum abhandeln von Kämpfen.

Die Ausgabe sieht bisher wie folgt aus:

  • "verbose" Modus, Drei gegen Zwei [2]

Eigenschaften

Folgende Eigenschaften hat das Skript:

  • in Python geschrieben, also weitgehend unabhängig von der Plattform
  • 2 Armeen, Größe frei wählbar (1.000 pro Seite sind rechentechnisch problemlos möglich, 10.000 geht auch noch recht fix)
  • Erfahrung, Rüstung & Bewaffnung einstellbar
  • Regeln: EWS, Ein-Wurf-System, einfache Überzahlregel
  • klassenbasiert, daher leicht erweiterbar
  • Namensgenerierung erweiterbar. Aktuell verwenden wir Yould [3].

Überzahlregel

  1. Es wird das Verhältnis der Größen der Streitmächte bestimmt
  2. Der Logarithmus zur Basis 1,2 wird ermittelt
  3. der Wert wird mit einer cutoff-Funktion versehen 4 * frac{q}{1+frac{|q|}{8}}
  4. Der Wert wird gerundet und
  5. Der Betrag des Wertes vom Wurf des zahlenmäßig unterlegenen abgezogen

Eine Überzahl sollte sich damit schnell bemerkbar machen, sich aber ab einer gewissen Größe verlaufen (Wie bekämpft man mit 1.000 Mann eine Truppe von 10 Leuten??)

Bereits integrierte Erweiterungen

  • Flucht (ab einer gewissen Zahl Verlusten, Verletzten, Unterzahlverhältnis, usw.)
    • Flucht einzelner Charaktere (Desertation).
    • => Moral: Der Erfolg in der Schlacht ändert vielleicht den Bias.
  • Strategie / Taktik (Führungspersönlichkeiten)
  • Helden integrieren
  • mehrere Gruppen unterschiedlicher Bewaffnung, Erfahrung, etc
  • Schlachtreihen, d.h. Schrittweise Kämpfe (es treffen nicht immer alle gleichzeitig aufeinander)

Mögliche Erweiterungen und Ideen

  • Rüstung und Waffe stärker integrieren (TP-Abzug nicht nur über Wunden?)
  • Schwere Wunden
  • Kämpfe zwischen Helden und Anführern im Detail zeigen (mit dem Fokusmodul Kampf). Vielleicht auch spielbar machen.
  • Gelände
  • Aktionen von Charakteren, während sie nicht aktiv kämpfen (keinen Gegner haben).
  • GUI
  • Binäre Version für OSX und Windows (einfach anklickbar).

Technisches

  • Eine Vorversion der nächsten Version (mit verschiedenen Gruppen, Anführern und echter Versionsverwaltung) ist als Download verfügbar: schlachtfeld-0.2_pre1.tar.gz [4]
  • Und es hat jetzt auch eine Sourceforge Projektseite [5].
  • Subversion-Zugriff: svn co https://rpg-tools-1d6.svn.sourceforge.net/svnroot/rpg-1d6 [6]
  • Bei cia.vc gibt es Echtzeit-Infos zu der subversion-aktivität [7].
  • Bei Ohloh gibt es Statistiken zum Projekt [8].
  • Ideenentwicklung findet hauptsächlich in Sourceforge über Feature Requests [9] statt.
  • Python Docs sind über die 1w6.org Webseite verfügbar: http://dateien.1w6.org/schlachtfeld/epydoc/html [10]
  • Es gibt ein 1w6 Mercurial Repository [11], das die Änderungen verfolgt. Es wurde auf sourceforge angelegt (HowTo [12]).

Stil-Leitfaden

''Hier entwickeln wir ein paar Programmier-Richtlinien für das Schlachtfeld. @Achim: Wenn du einige stabile Richtlinien einfügen willst, tu es einfach. '' - [[Benutzer:ArneBab|Arne]] 19:50, 2. Jul 2007 (CEST)

Zeichensatz für Dateien

Alle Dateien sollten in utf-8 kodiert sein.

Sie müssen auf der ersten oder zweiten Zeile einen Eintrag enthalten, der die Kodierung anzeigt.
Beispiel:

# encoding: utf-8

Sie sollten auf der ersten Zeile den Aufruf für die Bash enthalten:

#!/bin/env python

Unicode

Alle Strings sollten als Unicode kodiert sein.

Übersetzung, Lokalisierung

Noch suchen wir nach einer passenden Lokalisierungslösung. In Gentoo-GNU/Linux fehlt (noch) pygettext.py

Pläne und Ideen

Jegliche Pläne und Ideen sollten in den Docstrings in den Unterpunkten Pläne und Ideen festgehalten werden.

So haben wir einen zentralen Ort, wo Programmierideen gespeichert und verwaltet werden können.

-----

SourceForge.net Logo [13]

AnhangGröße
schlachtfeld-0.2_pre1.tar.gz [4]470.45 KB

Schlachtfeld - Beispielausgabe

Hier ist eine Beispielausgabe des Schlachtfeldprogramms.

Sie wurde mit Version v0.2.4 erstellt und zeigt einen Kampf zwischen Menschen und Goblins, die Menschen mit einer Heldin auf ihrer Seite (Sskreszta).

Die Schlacht enthält bereits Charakterentwicklung jedes einzelnen Kämpfers, Moral und Desertierung, automatische Bildung von Schlachtreihen, rudimentäre Heilung sowie vollständige Kampfabwicklung.

['schlachtfeld.py']

=== === Vor der Schlacht === ===

Armeen:
- Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 11
Inaktiv: 0
Tot, geflohen: 0, 0

- Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 15
Inaktiv: 0
Tot, geflohen: 0, 0


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 0, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


1 zufällig gewählter Kämpfer aus jeder Gruppe:

Name: Prepe Junince
TP: 36
Wunden: [0, 0]
Aktiv: True
Angriff: 9, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 9, Striche: 2
Aktuelle Moral: [9, 0, 0, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee


=== === Nächste Runde === ===

Armeen:
- Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 11
Inaktiv: 0
Tot, geflohen: 0, 0

- Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 15
Inaktiv: 0
Tot, geflohen: 10, 0


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 1, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


Unsere gewählten Kämpfer:

Name: Prepe Junince
TP: 32
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 9, Striche: 2
Aktuelle Moral: [9, 0, 0, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee


=== === Nächste Runde === ===

Armeen:
- Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 11
Inaktiv: 0
Tot, geflohen: 2, 0

- Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 4
Inaktiv: 0
Tot, geflohen: 12, 0


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 1, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


Unsere gewählten Kämpfer:

Name: Prepe Junince
TP: 32
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 20
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 2
Aktuelle Moral: [9, 0, 0, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee


=== === Nächste Runde === ===

Armeen:
- Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 9
Inaktiv: 0
Tot, geflohen: 3, 0

- Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 2
Inaktiv: 0
Tot, geflohen: 13, 0


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 1, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


Unsere gewählten Kämpfer:

Name: Prepe Junince
TP: 32
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 8
Wunden: [4, 0]
Aktiv: True
Angriff: 12, Striche: 3.046140130797915
Aktuelle Moral: [9, 0, -2, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee


=== === Nächste Runde === ===

Armeen:
- Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 8
Inaktiv: 0
Tot, geflohen: 3, 0

- Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 1
Inaktiv: 0
Tot, geflohen: 13, 1


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 1, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


Unsere gewählten Kämpfer:

Name: Prepe Junince
TP: 32
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 8
Wunden: [4, 0]
Aktiv: True
Angriff: 12, Striche: 4.0764342924692158
Aktuelle Moral: [9, 0, -1, 0, 0]
Art: Soldat
Sprache: Englisch
Desertiert


=== === Nach der Schlacht === ===

Armeen:
Menschen Armee
Typus: 'Armee'
Status: None
Aktiv: 8
Inaktiv: 0
Tot, geflohen: 3, 0

Goblin Armee
Typus: 'Armee'
Status: None
Aktiv: 0
Inaktiv: 0
Tot, geflohen: 13, 1


Helden und Anführer:
- Name: Sskreszta
TP: 24
Wunden: [0, 0]
Aktiv: True
Angriff: 16, Striche: 12
Aktuelle Moral: [12, 0, 1, 0, 0]
Art: Held
Sprache:  
Batallion: Menschen Armee 


Unsere gewählten Kämpfer:

Name: Prepe Junince
TP: 32
Wunden: [1, 0]
Aktiv: True
Angriff: 12, Striche: 3
Aktuelle Moral: [10, 0, 0, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Name: Floont Browhice
TP: 8
Wunden: [4, 0]
Aktiv: True
Angriff: 12, Striche: 4.0764342924692158
Aktuelle Moral: [9, 0, -1, 0, 0]
Art: Soldat
Sprache: Englisch
Desertiert
... done!


Die drei stärksten Soldaten (ohne Helden und Anführer):

Name: Floont Browhice
TP: 8
Wunden: [4, 0]
Aktiv: True
Angriff: 12, Striche: 4.0764342924692158
Aktuelle Moral: [9, 0, -1, 0, 0]
Art: Soldat
Sprache: Englisch
Desertiert

Name: Betres Suprottle
TP: 4
Wunden: [5, 0]
Aktiv: False
Angriff: 12, Striche: 3.046140130797915
Aktuelle Moral: [12, 0, -4, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee

Name: Degustaro Pomercion
TP: -48
Wunden: [21, 0]
Aktiv: False
Angriff: 12, Striche: 3.5698370971171514
Aktuelle Moral: [10, 0, -20, 0, 0]
Art: Soldat
Sprache: Esperanto
Batallion: Menschen Armee

Der Schwächste Soldat:

Name: Stiones Everalling
TP: -48
Wunden: [18, 0]
Aktiv: False
Angriff: 9, Striche: 2
Aktuelle Moral: [10, 0, -18, 0, 0]
Art: Soldat
Sprache: Englisch
Batallion: Goblin Armee

Yagni - OT: Geschichte aus der Entwicklung

Diese Geschichte habe ich für eine Vorlesung in der Uni geschrieben. Sie zeigt einen Teil unserer Programmierarbeit, und wo dabei ein Muster (Pattern) [14] sichtbar wurde, das Zeit gespart hätte.
- Arne [15]

Yagni - You aren't gonna need it - Geschichte

Ich habe das Yagni-Prinzip im Oktober 2007 kennengelernt, oder besser: Ich habe gemerkt, warum wir uns daran halten sollten.

Einen Monat zuvor hatten wir begonnen, unser Schlachtfeld-Programm zu überarbeiten. Es sollte komplexere Schlachten ermöglichen, nicht nur zwei Armeen, von denen Kämpfer aufeinander treffen, sondern beliebig viele einzelne Gruppen, die Schlachtreihen bildern, zu beliebig vielen Armeen gehören und Anführer und Armeen haben, die die Moral heben und Strategien ausarbeiten.

Ein wichtiger Aspekt daran waren Kampfstile der einzelnen Kämpfer.

Wir arbeiteten zwei Stunden daran, die Kampfstile zu prüfen, zu debuggen und zu entscheiden, was wir brauchen, um alle denkbaren Stile zu unterstützen, und wir haben einen halben Morgen daran verloren.

Am Ende traten wir einen Schritt zurück, warfen einen Blick auf den Code und merkten, dass das völlig unerheblich war.

Der Kampfstil-Code war in zwei Klassen gekapselt, und schon eine sehr einfache Version konnte die für's Erste notwendigen Stile unterstützen, und sie würde viele der Probleme von komplexeren Varianten vermeiden (z.B. "Wenn einer flieht und der Andere bis zum Tod kämpft, also stirbt, wenn er verliert, was pasiert, wenn der Fliehende gewinnt?" Antwort: "Wir lassen die Komplexität weg. Wenn einer es schafft zu fliehen wird ein Todesstil einfach weniger tödlich, und es gibt zur Zeit keine Notwendigkeit, das zu verallgemeinern.").

Wir rissen die Hälfte des überkomplexen Codes raus und implementierten, was wir aktuell brauchen, und jetzt läuft der Teil des Codes wie er soll.

Wir haben mehrere weitere Stunden aktuell unnötige Arbeit an Verallgemeinerung gespart. Sollten wir allgemeine Stile brauche, können wir sie immernoch hinzufügen, aber dann in ein voll funktionierendes und bereits nützliches Programm.

Unsere Motivation ist gestiegen, das Programm läuft, und gestern habe ich die Versionsverwaltung für Quelldateien deutlich verbessert, aber das ist eine Geschichte für einen anderen Tag.


GNU General Public License v3

Das 1w6-System ist ein schlankes, frei lizensiertes, universell einsetz­bares Rollen­spielregel­werk,
das es Welten­bastlern und Spiel­leitern erleichtern soll,
ihre Welt oder Kam­pagne als Rollenspiel zu ver­öffent­lichen.

Alle Inhalte sind unter freien Lizenzen verfügbar.
Das Urheber­recht liegt bei Autorin oder Autor des jeweiligen In­haltes.
Bevor Du selbst etwas schreibst, lies bitte die Lizenz­bedingungen.

Diese Seite nutzt für ihr Funktionieren notwendige Cookies (und nur die). Und Bilder. Manchmal auch Text. Eins davon müssen wir erwähnen…

Druckversion

Source URL (retrieved on 2025-05-24 17:40): http://www.1w6.rakjar.de/schlachtfeld

Links:
[1] http://www.1w6.rakjar.de/stichwort/schlachtfeld
[2] http://www.1w6.rakjar.de/deutsch/module/npc-k-mpfe-und-schlachten-nkus/schlachtfeld-beispielausgabe
[3] http://ygingras.net/yould
[4] http://www.1w6.rakjar.de/files/schlachtfeld-0.2_pre1.tar.gz
[5] http://www.1w6.rakjar.de/http
[6] https://rpg-tools-1d6.svn.sourceforge.net/svnroot/rpg-1d6
[7] http://cia.vc/stats/project/rpg-1d6
[8] http://www.ohloh.net/projects/7065
[9] http://sourceforge.net/tracker/?group_id=199744&atid=970729
[10] http://dateien.1w6.org/schlachtfeld/epydoc/html
[11] http://rpg-1d6.sourceforge.net/hg/1d6/
[12] http://www.selenic.com/mercurial/wiki/index.cgi/MercurialOnSourceforge
[13] http://sf.net/projects/rpg-1d6
[14] http://de.wikipedia.org/wiki/Entwurfsmuster
[15] http://www.1w6.rakjar.de/uzanto/drak