Dem Jungfrauenspiel wurde nun eine Fan-Page hinzugefügt.
@[WEBX:<FacebookFanPage shownconnections="0" />]
führt zu
BTW: Heute abend startet eine neue Runde.
Dem Jungfrauenspiel wurde nun eine Fan-Page hinzugefügt.
@[WEBX:<FacebookFanPage shownconnections="0" />]
führt zu
BTW: Heute abend startet eine neue Runde.
Die linke Navigation wird ebenfalls per AJAX aus folgender Xml-Datei aufgebaut:
<?xml version="1.0" encoding="utf-8" ?>
<toc>
<entry url="encyclopedia:///start" title="Start" />
<folder title="Forschungen">
<entry url="encyclopedia:///researches/fountainofyouth" title="Jungbrunnen" />
<entry url="encyclopedia:///researches/flying" title="Fliegerei" /><entry url="encyclopedia:///researches/education" title="Ausbildung" />
<entry url="encyclopedia:///researches/flying" title="Fliegerei" />
</folder></toc>
Der Inhalt der Datei selbst sieht folgendermaßen aus:
<?xml version="1.0" encoding="utf-8" ?>
<document title="Brauereiwesen" folder="/researches">
<h1>Das Brauereiwesen</h1>
<p>
Diese Forschung erhöht die Produktion Eurer
<a href="encyclopedia:///buildings/brewery">Brauereien</a>.
</p>
</document>
Das Enzyklopädie-Plougin liest diese Dokumente beim Start des FBK ein und wandelt die Encyclopedia-Links automatisch in das korrekte JavaScript um. Diese Art des Parsers möchte ich in Zukunft auch auf alle Links erweitern, die irgendwie im Spiel auftauchen.
Dazu ist aber eine neue Parser-Engine notwendig.
In der aktuellen Entwicklungsversion des Jungfrauenspiels wird momentan eine Möglichkeit zur Einbindung von Spielerklärungen und Kommentaren eingebaut.
Die Anzeige und das Holen der Inhalte wird über AJAX gesteuert, so dass ein Öffnen und Schließen der Spielbeschreibungen ohne Unterbrechung des Spielflusses möglich ist.
Da die Enzyklopädienkomponente als Plugin eingebunden wird, ist sie danach auch im Spiel Another Spacegame verfügbar,
Das Jungfrauenspiel hat ein größeres Update erhalten. In diesem Update wurde da sogenannte Dashboard eingeführt, wie man es auch aus Facebook oder anderen Portalen kennt.
Im Großen und Ganzen ist es folgendermaßen technisch gelöst:
Ein paar Quellcode-Schnipsel des schwarzen Bretts des Allianzsystem (Das Allianzsystem ist als reines Plugin konzipiert):
1) Registrierung von einem neuen Dashboard-Item
/// <summary>
/// This method is called, when logic core will be started
/// </summary>
/// <param name="logic">Logicinterface which created this state</param>
/// <param name="session">Current logic session</param>
public void Start(ILogic logic, ILogicSession session)
{[…]
// Gets the dashboard state
var dashboardState = logic.GetLogicState<IDashboardState>();
var source = new AllianceDashboardItems();
dashboardState.AddSource(source);}
2) Erzeugung von Dashboard-Items (in der AllianceDashboardItems-Klasse)
/// <summary>
/// Gets the dashboarditems by the dashboard logic
/// </summary>
/// <param name="dashboardLogic">Used logic of the dashboard</param>
/// <returns>Enumeration of items</returns>
private IEnumerable<DashboardItem> GetDashboardItems(
IDashboardLogic dashboardLogic)
{
var allianceSystem =
dashboardLogic.LogicSession.GetLogicHandler<IAllianceSystem>();
var languageHandler =
dashboardLogic.LogicSession.GetLogicHandler<ILanguageHandler>();
var playerId = dashboardLogic.PlayerLogic.PlayerId;foreach (var alliance in allianceSystem.GetAlliancesOfPlayer(
playerId))
{
foreach (var item in alliance.GetPinboardEntries(playerId)
.Select(x => new DashboardItem(
languageHandler["/dashboard/alliance_pinboard/title"],
x.Content,
"alliance_pinboard",
x.Created)))
{
yield return item;
}
}
}
3) Sammlung von Dashboard-Items
/// <summary>
/// Gets the dashboarditems of the player
/// </summary>
/// <param name="amount">Number of items to be returned</param>
/// <returns>Enumeration of Dashboarditems</returns>
public IEnumerable<DashboardItem> GetDashboardItems(int amount)
{// Now add items of all sources
return messages
.Union(
this.LogicState.Sources.SelectMany(x => x.Source(this)))
.OrderByDescending(x => x.Created)
.ThenBy(x=>x.Title)
.Take(amount);
}
Nach einer recht turbulenten, bugreichen und unbalancierten ersten Runde habe ich nun die zweite Runde des Jungfrauenspiels gestartet. Ziel dieser zweiten Runde ist es das Balancing der einzelnen Einheiten und Aktionen zu verbessern. Insbesondere soll ein Konzept erschaffen werden, bei dem starke Spieler stärker geschwächt werden, so dass aufholende Spieler eine Chance haben. Gegebenenfalls wird es auch eine Art Handelsbarriere geben, so dass die Möglichkeit des Pushens innerhalb der Allianz abgeschwächt wird.
Das Einbinden einer schnellen Feedback-Möglichkeit hat sich auch bei dieser ersten Runde wieder bewährt und hat zu einer hohen Zahl qualitativ mittel- und hochwertiger Fehlerberichte geführt, die mir geholfen haben die schwersten Bugs zu beheben.
Auch wenn ich nicht mit einer so intensiven zweiten Runde rechne, gehe ich davon aus, dass ich weitere Erkenntnisse zum Balancing der Spielregeln erhalten werde.
Ein schönes Programm zum Zählen der Quellcode-Zeilen (LOC)
C:\Users\mbrenn\Desktop>cloc-1.08.exe --exclude-dir=.svn d:\Projekte\Klassenfram
ework\Framework\Applikationen\Jungfrauen\FBK-Port\code
2149 text files.
1478 unique files.
3354 files ignored.http://cloc.sourceforge.net v 1.08 T=90.0 s (12.8 files/s, 1846.6 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code scale 3rd gen. equiv
-------------------------------------------------------------------------------
C# 900 14122 44587 68988 x 1.36 = 93823.68
XML 48 310 1133 16133 x 1.90 = 30652.70
HTML 124 400 802 12994 x 1.90 = 24688.60
MSBuild scripts 14 0 91 3660 x 1.90 = 6954.00
Javascript 48 51 189 2143 x 1.48 = 3171.64
NAnt scripts 14 13 13 530 x 1.90 = 1007.00
make 1 6 0 25 x 2.50 = 62.50
ASP.Net 1 0 0 3 x 1.29 = 3.87
-------------------------------------------------------------------------------
SUM: 1150 14902 46815 104476 x 1.53 = 160363.99
-------------------------------------------------------------------------------
Nach der Korrektur eines mittelschweren Bugs, können beim Jungfrauenspiel nun auch Jungfrauen und alte Schachteln von Drachen geraubt werden. Damit ist ein wichtiger Schritt zu einem bugfreien Spiel getan.
In den nächsten Tagen werden die Kampfberichte noch weiter aufgeräumt und es kann an die vielen kleinen Fehler gehen, die das Spielen des Jungfrauenspieles momentan etwas erschweren.
Soeben wurde die neue Version des Jungfrauenspiels hochgeladen. Diese enthält folgende Korrekturen:
Insgesamt bin ich mit den ersten Tagen sehr zufrieden, ich habe über 50 Bug- und Korrekturmeldungen mittlerer bis hoher Qualität erhalten. Das in der Website integrierte Feedback-Fenster hat sich wie auch beim letzten Spiel wieder ausgezahlt.
In den nächsten Tagen werde ich den FBK und das JFS von Subversion auf Mercurial versuchen zu portieren. In dieser Zeit können keine weiteren Korrekturen erstellt werden, ich hoffe, dass ich das Wichtigste bis zu den ersten Kämpfen und Spionagen korrigiert habe.
Wie eben angekündigt, ist die Testphase des Jungfrauenspiels nun gestartet und ihr könnt unter http://www.jungfrauenspiel.de/ daran teilnehmen.
Wie versprochen wird morgen die Testversion des Jungfrauenspiels starten.
Diese Testversion soll die Grenzen und Probleme des FBK aufdecken und mir einen ersten Überblick über die Qualität der Implementierung verschaffen.