Der Landvogt

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2997
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Der Landvogt

Beitrag von Jonathan »

Das Spiel ist jetzt wirklich fast fertig!

Ich hatte die letzten Tage noch ein paar Kleinigkeiten eingebaut, unter anderem ein neues 3D Modell für das letzte fehlende Gebäude. Jetzt gibt es zumindest keine Platzhaltergrafiken mehr. Heute hab ich dann einen kleinen Beta-Test veranstaltet, mit meinem Neffen als "Opfer". Hier ein paar Einsichten:

- Das Tutorial scheint wirklich ganz gut zu funktionieren. Ich hab ihn nur die Texte lesen lassen und nichts anderes erklärt und er hat im Wesentlichen alle Spielmechaniken selbst korrekt verstanden. Ein paar Kleinigkeiten wurden notiert (Die Forschung heißt "Kneipe", schaltet aber das Wirtshaus frei, Tongrube produziert Lehm statt Ton). Meine größte Sorge war, das Spieler frühzeitig aufgeben, weil sie nichts verstehen. Das scheint aber nicht so zu sein.

- Der Spielanspruch ist recht ordentlich. Der Tester hatte meistens eine ganz gute Idee, was er als nächstes tun wollte und musste dann herausfinden, was die Abhängigkeiten und Bedingungen dafür sind und dementsprechend entscheiden, was der nächste Schritt zu seinem Ziel ist. Das hat die meiste Zeit auch ziemlich gut funktioniert. Das Spiel schien für ihn fast ein großes Puzzle zu sein, wo man nicht nur bauen, sondern auch ein wenig denken muss. Fand ich gut :)

- Laut seiner Aussage, gab es auch immer etwas zu tun. Man muss nie minutenlang darauf warten, genügend Rohstoffe zu haben, oder das ein Gebäude endlich fertig gebaut wird. Gleichzeitig ist das Spiel meistens nicht wirklich hektisch, d.h. man muss fast nie schnell auf etwas reagieren (Hungersnöte sind eine Ausnahme). Das fand ich echt gut, da mich warten oder grinden bei vielen Spielen sehr genervt hat. Ich vertrete ja die Meinung, dass wenn dein Spiel mehrere Geschwindigkeitsstufen hat, dein Spieldesign kaputt hat. Vierfache Geschwindigkeit ist eine billige Ausrede denn derartige Wartezeiten sollten von vornherein nicht auftreten.

- Das Balancing ist fordernd, aber größtenteils gut schaffbar. Es ist schwierig das Bevölkerungslimit zu erhöhen, und die letzte Ausbaustufe des Doms ist recht knackig was die benötigten Arbeiter angeht. Aber sollte man eine effiziente Siedlung gebaut haben, kann man es schon schaffen. Das war im heutigen Testspiel leider eher bedingt der Fall, so dass ich am Ende für die letzten 10 Minuten etwas aushelfen musste. Außerdem wurde durch einen Bug Bier nicht als Verbrauchsmittel registriert, d.h. man kann die Produktionskette bauen und muss die Kosten entsprechend bezahlen, aber bekommt keine Zufriedenheit dafür. Sobald das gefixt ist, sollte auch das Endgame direkt etwas einfacher werden.

Insgesamt ist beim Anspielen dann doch eine längere Liste an Kleinigkeiten zusammen gekommen. Die werde ich die nächsten Tage abarbeiten. Die Spielzeit lag für das Tutorial bei ca. 30 Minuten und beim Hauptspiel bei gut 2 Stunden, bis der Dom fertig war. Das finde ich für ein Hobbyprojekt ziemlich gut, man kann es an einem langen Abend durchspielen und damit Spaß haben. Realistisch gesehen wird es eh niemand Wochenlang spielen, aber wenn der durchschnittliche Spieler damit einen Abend lang Spaß hatte, ist mein Ziel damit total erreicht.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 5411
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Der Landvogt

Beitrag von Schrompf »

Wow, Du bist echt weit gekommen!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2997
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Der Landvogt

Beitrag von Jonathan »

Tag/Nachtwechsel:
Landvogt_BPaYRSfp13.mp4
(12.97 MiB) 7-mal heruntergeladen
Das ganze wird im Missionsscript (AngelScript) jetzt so gesteuert:

Code: Alles auswählen


// daytime in [0, 1]
/*	morning		0.0
	noon		0.25
	evening		0.5
	midnight	0.75

*/

spline_float time_warp(
			{0.f, 0.98, 1.f},
			{0.f, 0.5f, 1.0f},
			{1.5f, 1.5f, 1.5f});

vec3 compute_sun_direction(float daytime)
{
	float t = daytime * 2 * pi;

	// flat: 0. top down: pi/2
	float midpoint = (pi/2) * 0.5;
	float range = (pi/2) * 0.3;
	float alt = midpoint + range * sin(t);
	vec3 light_dir = sphere_position_from_angle(vec2(t, alt), 1);
	return light_dir;
}

// daytime in [0, 1]
vec3 compute_sun_color(float daytime)
{
	vec3 morning	= vec3(1, 0.4, 0.3);
	vec3 noon		= vec3(1.0, 0.9, 0.9)*0.9;
	vec3 evening	= vec3(1, 0.4, 0.3);
	vec3 midnight	= vec3(0.0, 0.0, 0.2);
	
	//spline_vec3 sun_color(
	//	vector_vec3 ={morning,	noon, 	evening,	midnight,	morning},
	//	0.2);
	spline_vec3 sun_color(
		vector_float={0.f, 		0.05f, 0.25f,	0.40f,	0.5f,		0.75f, 		1.f},
		vector_vec3 ={morning,	noon,	noon,	noon, 	evening,	midnight,	morning}, 0.1f);

	return sun_color.value_at_t(daytime);
}

vec3 compute_ambient_color(float daytime)
{
	vec3 day = vec3(1, 1, 0.8)*0.3;
	vec3 night(0.4, 0.4, 0.4);
	
	spline_vec3 ambient_color(
		vector_float={0.f, 	0.5f,	0.75f, 	1.f},
		vector_vec3 ={day,	day,	night,	day});
	
	return ambient_color.value_at_t(daytime);
}


void update_light()
{
	float f = get_game_time();
	float day_length = 300;
	//float day_length = 10;
	float t = fmod(f / day_length, 1);
	
	t = time_warp.value_at_t(t);
		
	set_sun_direction(compute_sun_direction(t));
	set_sun_color(compute_sun_color(t));
	set_ambient_color(compute_ambient_color(t));
}
Die Tageszeit liegt also zwischen 0 und 1 und abhängig davon wird die Sonne als direktionale Lichtquelle bewegt, sowie die Farbe für direkte und ambiente Beleuchtung angepasst.

Weil man nicht die halbe Zeit im dunkeln spielen will, wird die Tageszeit recht stark verformt:
python_r8CGuL3eOD.png
Insgesamt dauert ein Tag jetzt 5 Minuten. Die Nacht ist aber nur knapp 10 Sekunden lang, d.h. startet man das Spiel geht die ersten 20 Sekunden oder so die Sonne auf, dann ist es ein paar Minuten Tag, dann sieht man, wie die Schatten länger werden und dann ist kurz Nacht und der Nächste Tag beginnt. Im Tagesverlauf wandern dann die Schatten auch entsprechend, so das Gebäude nicht immer von der selben Seite beleuchtet werden.

Naja, das ganze war ein bisschen ein Test für Splines: https://zfx.info/viewtopic.php?f=35&t=5698

Komplett zufrieden bin ich mit allem noch nicht, man könnte vielleicht die Farben und die Kurven noch optimieren. Ich kann zwar die Skripte per Klick neu laden, aber trotzdem ist das Desginen damit ein bisschen schwierig. Eigentlich würde man dafür lieber einen grafischen Editor haben wollen, wo man Punkte auf einer Zeitleiste setzen kann und so. Ganz zu schweigen davon, dass man eigentlich auch den Himmel mit anpassen müsste. Und auch die "direktional + ambient"-Komponenten Lösung ist bestimmt nicht so gut, vermutlich würde man statt ambienten Licht lieber 1-2 Gegenlichter haben wollen, damit Bereiche im Schatten nicht komplett unstrukturiert sind, sondern trotzdem noch von ihren Normalvektoren beeinflusst werden. Oder halt Ambient Occlusion einbauen und so.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten