Framework do tworzenia mechaniki symulacji miejscowości


#1

Ahoi!
Tworze framework do symulacji miejscowości. Jest to pierwszy etap szerszego framwork’u do mechaniki gier strategicznych i RPG.

Podstawowe cechy:

  • turowy / rts active pause
  • symulacja reprezentuje “miejscowość”, wewnątrz której transport jest pomijalny.
  • poziom abstrakcji to listy mieszkańców, nieruchomości, przedsiębiorstw, procesów produkcyjnych, towarów wraz z ich interakcjami
  • edytor biblioteki, definicji nieruchomości, towarów, procesów itp
  • edytor scenariusza, na bazie konkretnej biblioteki tworzenie miejscowości
  • symulator, grywalny z prostym interface’em

Gdzie projekt w tej chwili jest:

  • prototyp podstawowej funkcjonalności w Javie, bez interface’u.
  • przede mną zmiana technologii i języka na Unity C#
  • Zaczynam tworzyć dokumentacje na bazie dotychczasowych doświadczeń z zastosowanych wzorców projektowych, szczegółowej struktury programu, drzewa klas, przepływu informacji

Kim jestem:
Fizyk/inżynier/programista po 40stce.
OD 30 lat interesuje się mechaniką gier, RPG, strategicznych, tych papierowych, bitewnych, planszowych jak i komputerowych.

Po co to piszę:

  • Ze względu na prozę życia projekt ciągnie się już bardzo długo. Chętnie znalazłbym współpracowników do tworzenia framework’u jak i jego zastosowania rozwiązania do konkretnej gry (warunki do uzgodnienia).
  • Chętnie bym usłyszał co o takim projekcie myślicie.

#2

Z Twojego opisu nie wynika co gracz może robić. Jakbyś mógł to opisz szerzej co właściwie zrobiłeś od strony funkcjonalnej / jak są use case’y?


#3

Co gracz może robić:

  • Co ma być w pierwszej najprostszej wersji: dodawanie/edycja przedsiębiorstw, ustalanie procesów produkcyjnych , przydzielanie “mieszkańców” do przedsiębiorstw, budowanie nieruchomości i innych produktów. Przeliczenie tury.
    *Co jest w napisane w Javie save w XML do edycji tekstowej z minimalistycznymi przedsiębiorstwami, procesami produkcyjnymi, mieszkańcami, magazynami , towarami. Przeliczenie tury. Zatrzymałem się w trakcie implementacji właściwości wymaganych do procesów produkcyjnych - czas na trzecie przepisanie kodu.

Use case’y:

  • gra - jak wyżej
  • backend do gry uzytkownika. Tworzenie mechaniki symulatora poprzez:

1.Tworzenie mechaniki symulatora poprzez stworzenie własnej biblioteki produktów, procesów produkcyjnych (obecnie XML, w następnym etapie w edytorze z GUI /JSON) i wybór szczegółów mechaniki poprzez wybór z istniejących klas i interfejsów lub rozszerzenie czy napisanie nowych klas.
2. Cała mechanika, przeliczanie tury, serializacja i deserializacja danych z save’a , odpytywania i interakcja z interface’u gry obsługiwanie przez framework.

  • backend do gry użytkownika z gotowym zbilansowanym modelem

Co właściwie zrobiłem:
korzystając z biblioteki

`<library>
<goodstypes>
	<gt cl="1" id="fr">
		<name>Raw food</name></gt>
	<gt cl="1" id="f">
		<name>Food</name>
	</gt></goodstypes>
<processes>
	<proc cl="1" id="fp2">
		<name>Simple food production</name>
		<con a="3">fr</con>
		<prod a="6">f</prod>
	</proc></processes>
`

program zmienia stan gry z

`<SettlementSimulator>
<Library>bin\data\library.xml</Library>
<Settlement cl="1" id="w1">
	<name>Wioska</name>
	<Citizens>
		<cit cl="1" id="1"></cit>
		<cit cl="1" id="2"></cit></Citizens>
	<Storages>
		<storage cl="1" id="ms">
			<goods a="23">f</goods>
			<goods a="48">fr</goods></storage></Storages>
	<Enterprises>
		<ent cl="1" id="fpf">
			<proc>fp2</proc>
			<name>farma</name>
			<cit>1</cit>
			<cit>2</cit>
			<storage>ms</storage></ent></Enterprises></Settlement></SettlementSimulator>`

na stan gry:

<SettlementSimulator>
    <Library>bin\data\library.xml</Library>
    <Settlement cl="1" id="w1">
        <name>Wioska</name>
        <Citizens>
            <cit cl="1" id="1"/>
            <cit cl="1" id="2"/>
        </Citizens>
        <Storages>
            <storage cl="1" id="ms">
                <goods a="35.0">f</goods>
                <goods a="42.0">fr</goods>
            </storage>
        </Storages>
        <Enterprises>
            <ent cl="1" id="fpf">
                <proc>fp2</proc>
                <name>farma</name>
                <cit>1</cit>
                <cit>2</cit>
                <storage>ms</storage>
            </ent>
        </Enterprises>
    </Settlement>
</SettlementSimulator>