PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konzeptideen für Strategiespiel gesucht (Kein MakerSpiel)



MagicMagor
04.02.2004, 04:31
Aloa ihr Leute,

ich bastel seit ein zwei Tagen mit PureBasic (www.purebasic.de) an einem Spielchen. Naja genaugenommen sitze ich noch an der Engine *g* aber bis auf eine Grundidee steht noch kein Konzept. Und da bräuchte ich soviele Ideen wie möglich.

Das Spiel (Arbeitstitel "People") ist ein Aufbaustrategiespiel. Sprich ihr habt eine isometrische Map, auf denen ihr Gebäude baut. Diese liefern wieder Rohstoffe für neue Gebäude oder für die Forschung etc...
Klingt vielleicht langweilig, aber im Grunde basiert auf demselben Prinzip Anno1602 (obwohl das um Längen komplexer ist als mein kleines Projekt)

Das Szenario in dem der Spieler startet ist angelehnt an das frühe Mittelalter (900-1200 n. Chr.), spielt allerdings in ner eigenen Welt.
Was ich brauche sind Vorschläge für

- Rohstoffe
- Terrainarten
- Gebäude
- Mögliche Forschungen
- Sonstiges was man nettes einbauen könnte *g*

Um es mal gleich vorweg zu sagen. Das Spiel wird definitiv keinen Computergegner besitzen, ebensowenig wie eine irgend geartete Multiplayerunterstützung. Man spielt entweder frei, wie in SimCity, solange man Lust hat, oder man spielt Missionsartig (sammle in der und der Zeit X von Resource A).
Das Projekt befindet sich noch in einem extrem frühen Stadium.. ihr könnt also jede Menge Ideen äußern (ob ich sie umsetze ist was anderes).

Falls einer mit meiner Beschreibung nichts anfangen kann, hier ein kleines QBasicSpiel was genau diese Idee verfolgt. Stellt euch einfach dazu ne Isometrische Karte vor, auf der ihr die Gebäude bauen würdet.
People2 (http://www-public.rz.uni-duesseldorf.de/~axkoe001/people2.zip)

Archon
04.02.2004, 04:55
Ist zwar alles eigentlich klar, aber dennoch:

Rohstoffe:
-Holz
-Stroh
-Nahrung
-Wasser?
-Steine
-Eisen / Stahl etc. (Erze?)

Terrain:
-Ödland
-Gras
-Schnee
-Wüste
-Vielleicht Unterwasser bzw. Mond (je nach Fähigkeiten)
-Städte
-Berge
-Ruinen
-Dschungel

Gebäude:
-Rathshaus
-Wohnhäuser
-Schmieden
-Schmelzewerke
-Holzfällerhütten
-Mienen
-Kirchen / Kloster
-Fischerhütten
... verdammt gibt das viel ^^
-Bibliotheken
-Schulen
-Ausbildungszentren (wie fische ich / wie jage ich / was weiss ich was noch)
-(Kassernen)
-(Burgen)
-Schlösser
-Marktplätze
... sag lieber was du schon hast ^^
() = Kriegerisch (=überflüssig???)

Forschungen:
-Schnelleres Abbauen von Rohstoffen sowie schnelleres bauen von Häusern
-Vielleicht Mondfahrt / Unterwasserreisen

Ein paar Ideen:
-Vielleicht wäre es noch gut, wenn man noch einem Gott dienen könnte und dieser den Spielverlauf "mitmacht" So kann man Götter für einen schnellwachsenden Wald oder für sich schnell fortpflanzende Fische odwer was weiss ich was
-Naturkatastrofen würde ich auch einbinden! z.B.: Dass ein Sturm aufkommt ... je nach Fertigkeiten kann man solche Stürme ohne weiteres überstehen
-Man sollte auch per Händler selber angefertigte Gegenstände handeln können
z.B.: Man sammelt Gold und 2 Diamanten, macht daraus Schmuck (durch viele viele Gebäude ;)) und am Ende gibt man es einem Händler mit. Nach einiger Zeit kommt dieser mit viel Geld oder Rohstoffen zurück

Hoffe das das mit deinem Projekt was wird und viel Glück dabei

btw.:
Ich nehme mal an, dass du das Programm beherscht, hast du dir die Vv "gekauft" oder proggst du mit der Testversion?

btw2.:
Srry, falsch ich was falsch verstanden habe, kenne anno nicht wirklich (ausser aus der werbung)

Ynnus
04.02.2004, 05:10
Hallöchen MagicMagor,

Ich hab hier speziell für die PB Entwicklung einen Beitrag von einem User der eine solche Aufbauengine gebastelt hat (und auch noch daran arbeitet), die könntest du dir ja mal ansehen, ich hab dazu auch den Sourcecode wenn er dort nicht mehr zum Download vorliegen sollte.
http://robsite.de/php/pureboard/viewtopic.php?t=2876&start=0

So, ja, und dein QBasic Beispiel beinhaltet ja schon eine Menge an Dingen die du übernehmen könntest. Was sollte man dort noch hinzufügen? Wenn es ähnlich wie Sim City sein soll, ohne PC Gegner und so, dann würde ich Häuser ebenso ausbauen lassen, jeh nachdem wie das Umfeld der Siedlung ist. So ist es ja auch in Anno, wenn die Rohstoffe stimmen dann bauen die Leute ihre Häuser aus.

Wenn du eine Stadt aufbauen sollst, (als Beispiel für eine Mission) dann würde ich ein Haupthaus zu Beginn platzieren und man kann nur in gewissem Radius umher neue Häuser anbauen. Dann müsstest du dir überlegen ob es so ablaufen soll, Bauen per "Haus an Position setzen" oder Bauen indem man nur sagt, "mehr Häuser ausbauen" und die Siedlung vergrößert sich sozusagen automatisch, die Häuser werden automatisch gesetzt, wenn die Rohstoffe passen.
Tja, dann solltest du dich vielleicht an Titeln wie Anno orientieren, die Leute sollten genug Nahrung haben, also brauchst du Felder oder sowas in der Art. Da es Mittelalter ist, kommt Feldwirtschaft dem wohl recht nahe, was so damals typisch war. Dann benötigen die Leute nach und nach, jeh höheres Hausausbaulevel mehr Rohstoffe und Luxusgüter. Dabei bedenken, viele Dinge sind um 1000 n. chr. noch nicht bekannt gewesen, Gewürze und co. wurden imo erst später von Indien und so hergeschippert. Vielleicht bräuchtest du eine Art Schule oder sowas.

Dann ist ein wichtiger Punkt, ob du mit richtigen Einheiten spielen willst oder nicht. Wenn nicht, so würde jeden Arbeitstag etwas der Rohstoffe "entstehen", etwa wie in deinem QBasic Spiel nach Ende der Runde produziert das Sägewerk einfach mal so Holz. Andererseits kannst du das auch grafisch gestalten wie in Anno, dass ein Typ aus dem Forsthaus kommt und die Bäume umholzt. Kommt drauf an ob es mehr wirtschaftlich aufgebaut sein soll mit vielen Tabellen und Statistiken, dass man nach jeder Runde Rohstoffe erhält und neu kalkulieren muss oder mehr auch in realistischer Geschwindigkeit wie Anno, dass man dem Geschehen zusehen kann, wie die Dinge produziert werden.

Das sind erst einmal die wichtigsten Konzeptpunkte welche du für dich ausarbeiten musst, aber ich denke mal das wirst du in etwa schon erledigt haben. ;)

Technische Daten:

Bei 1,2Ghz Duron und Geforce 4 ti 4200 kann man mit PB ca. 2000 Sprites pro Frame anzeigen und es läuft noch mit 30 FPS. Wenn noch komplexere Abläufe hinzukommen sind es vielleicht noch 1500, aber auch das sollte reichen. Damit kann man bei 800 x 600 und 32 x 32 Pixel Tilegröße drei Layer voller Sprites packen, somit den Bildschrim 3 mal voll aufbauen mit Tiles welche 32 x 32 Pixel groß sind und der Speed reicht noch aus. Das wird bei einem solchen Aufbauspiel aber sicher nicht der Fall sein, also du könntest so gesehen die grafische oder die wirtschaftliche Variante deines Spieles umsetzen. ;)

MagicMagor
04.02.2004, 06:07
Erstmal danke für den ausführlichen Beitrag, Sunny.

Also diese AufbauEngine hab ich mir mal angeguckt (noch nich den Code, leicht müde), aber sie scheint mir zu komplex zu sein, für daß was ich machen will. Werde es vielleicht als Referenz benutzen, aber momentan versuch ich mich lieber an was eigenem (is auch viel schöner wenn 100% vom Spiel selbst geschrieben ist).

Ich hab mir ehrlich gesagt noch nicht um wirklich viel Gedanken gemacht. Also einiges steht schon. zB wird es keine Einheiten geben. Quasi eine reine Umsetzung des QBasicSpiels auf eine "modern" Umgebung, mit Map und generell mehr Gebäuden/Rohstoffen etc.. das war im Grunde mein Ansatz.
Ich kann ehrlich gesagt alle Gebäude und Rohstoffe nehmen, die Anno benutzt, aber ist mMn dann bisl geklaut. Ich will keinen primitiven AnnoKlon schreiben, sondern schon was mit "eigener Note".
Den Ausbau der Häuser wollte ich allerdings so wie in Anno machen. Eignet sich einfach wunderbar. Häuser selber sollten aber schon vom Spieler gesetzt werden. Ich hab keine Lust (als Spieler) wenn das Programmm mir selber die Karte "zusiedelt". Außerdem kann man so das Wachstum steuern.

Die Resourcenproduktion selber.. nunja ich glaube "Echtzeit" wie Anno wäre schon besser. Im QBasicSpiel war der Output eines Gebäudes fest definiert. zB jedes Sägewerk hat 5 Holz produziert. Nach Forschungen konnte das zwar ansteigen aber jedes Sägewerk hat gleichviel produziert. Davon will ich eigentlich weg.
Ich hab mir gedacht ein Terrain hat ein oder mehrere Rohstoffe, die darauf produziert werden (zB Wald->Holz) und jede Kachel kriegt eine Productivity für jeden Rohstoff. Wenn man das dann noch mit zB 3 verschieden dichten Waldsprites verbindet hat man ein wenig mehr Varianz. Auch eine Idee wäre zB Abnutzung bei Gebäuden. Je geringer der Zustand umso geringer die Produktion. Dadurch kriegt die Map auch eine größere Bedeutung als nur Wald=Platz für Sägewerk.

Was die Zeitperiode angeht: Nichts spricht dagegen das Spiel über Forschung bis ins Spätmittelalter treiben zu lassen.

Wegen den Animationen:
Die Maximale Mapgröße beträgt ja 15x15 Kacheln. Das wären 225 Terrainsprites plus (maximal) 225 Gebäudesprites. Insgesamt mit GUI etc.. komm ich vielleicht auf 500 Sprites. Kachelgröße is übrigens 64x64. Ich kenn mich mit den Speicheranforderungen da nicht so aus, aber wieviel mehr Rechenleistung erfordert es ne große Anzahl an Sprites zu animieren? Davon mal abgesehen, daß jede Animationsstufe in den Videospeicher geladen werden muss. Außerdem bin ich da abhängig von meinem Freund, der die Sprites für mich macht. *g*

@Archon

Mir gefällt die Idee dieser "Fähigkeiten" die du da rein bringst. Ich hatte schon die Idee, dem Spielerprofil RankingPoints zu verpassen, womit er höhere Missionen und höhere Ausbaustufen freischaltet. So eine Art RPG-Aspekt wäre sicher nicht verkehrt. (Nur mal gucken wie sich die Fähigkeiten im Spiel umsetzen lassen.)

V|RUS
04.02.2004, 13:49
KESSEN joa so in etwa nur noch ein bischen mit Secret of Mana mischen und schwubs ^^

Ynnus
04.02.2004, 18:40
Nun ja, Animieren ist ja nichts anderes als anstelle des Sprites ein anderes Sprite mit anderer Animationsstufe anzuzeigen. Und das ist im großen und Ganzen als nichts anderes als normale die Sprites zu zeichnen. Und da man ja sowieso jedes Frame die Sprites neu aufzeichnen muss, könntest du zum Animieren einfach ein anderes Sprite anstelle eines anderen anzeigen lassen und hättest dadurch den Effekt einer Animation.

Und mit 500 Sprites kommst du noch gut hin, das sollte da keine Probleme geben. Ich habe derzeit ein Tileset von 640 x 640 Pixel aus dem die kleinen Teile direkt in der Engine "herausgeschnitten" werden und angezeigt werden. Also wie beim Maker quasi. Das sind dann bisher 385 KB. Ist im PNG Format. Selbst wenn du jetzt für explizit jedes Tile etwa 5 Animationsstufen haben wolltest würdest du mit 1925 KB Videospeicher noch hinkommen. Und das ist doch durchaus vertretbar. Dazu kommen zwar noch andere Dinge, sind ja nicht nur Sprites für die Map, sollte aber passen. Diese 1925 KB im Videospeicher beinhalten 500 verschiedene Tiles, das sollte doch reichen. Darunter können dann auch die Animationsstufen sein.

Mal ohne Animationen, so könnten die Tilesets ausgeteilt werden:
Auf ein Tileset passen dann also 100 Tiles, macht 100 Häuser oder 50 Häuser wobei manche zwei Felder benötigen, wenn es dir danach steht.
Dann könntest du ein zweites Tileset für Untergrund und Boden sowie Landschaften machen, 100 Tiles sollten da auch reichen. Das macht dann ca. 768 KB große Sprites aus.
Bisher bin ich ganz gut damit ausgekommen, wenn auch ich 475 Tiles auf einem Set habe, so benötige ich für einen Baum schon 20 Tiles. Mit den 100 größeren Tiles solltest du also hinkommen, wenn ein Objekt maximal 64 x 64 Pixel dann groß ist, was bei einem Spiel aus der Perspektive reichen sollte. ;)

MagicMagor
04.02.2004, 20:17
Hm.. Sunny ich arbeite nicht nach nem TileSet-Verfahren wie es der Maker macht.

Ich habe zB 10x10 Felder. Dann ist jedes Feld 1 Sprite. Und jedes Gebäude sollte auch 1 Feld brauchen. Die Terraindaten hab ich nämlich momentan in nem Array gespeichtert. Selbiges hatte ich für die Gebäude vor. So kann ich einfach ablesen welches Gebäude der Spieler angeklickt hab, wenn ich die ArrayPosition des Terrains habe, auf das er geklickt hat.

Wenn du ne Idee hast, wie ich sonst vom Terrain auf das exakte Gebäude zugreifen kann, wenn das Gebäude mehrere Tiles groß ist, immer her damit. *g*
Aber vermutlich wirds bei meiner jetzigen Vorgehensweise bleiben. Das erlaubt halt sowohl Terrain als auch Gebäude in 64x64 zu machen, was sich dann natürlich im Detailreichtum niederschlägt.


KESSEN joa so in etwa nur noch ein bischen mit Secret of Mana mischen und schwubs ^^
Entweder hast du nicht durchgelesen/kapiert was ich geschrieben habe, oder du hast dich einfach im Thread vertan. Was zum Geier hat Secret of Mana mit einem StrategieSpiel ala Anno zu tun?

Ynnus
04.02.2004, 20:31
naja, das Mappingverfahren bezieht sich eher darauf wie du die Sprites einlesen willst. Entweder 500 einzelne PNGs, BMPs, TGAs, JPEGs oder was auch immer, oder lieber ein großes Sprite welches in der Engine in Echtzeit auf die gerade benötigte Tilestelle zerlegt wird und dann angezeigt wird. 500 Sprites verbraucht schonmal 500 Handles zu den Sprites.

Die Positionen in ein Array zu legen ist aber dahingegen sinnvoll, so mache ich es auch, und bei dir muss ja jedes Feld mindestens eine Grafik haben, somit ist es auch keine Verschwendung weil das Array somit immer voll ist. Objekte würde ich allerdings als Linked List anlegen, also ein Dynamisches Array wobei man einzelne Elemente leicht herausnhemn kann und sowas. ;)

Dann ist doch wichtig zu wissen, sollen Untergerund und Gebäude verschmolzen sein? Also, ein 64 x 64 Pixel großes Sprite welches da Haus auf dem entsprechenden Boden zeigt oder nur das Haus wobei es auf einer transparenten Maske liegt die dann wegfällt. Wenn du Methode 1 wählst, dass du also immer nur ein Sprite pro Bild hast ohne transparente Farbe in den Sprites, dann kannst du die Häuser ja direkt im Array setzen. WIllst du aber die Objekte ohne Untergrund setzen, dann müsstest du sie besser in einer Linked List machen, weil dann ja erstmal jedes Array mit dem Boden belegt ist, und dann noch Häuser gesetzt werden sollen. Diese kannst du aber schlecht ins Array aufnehmen da du dafür eine neue Ebene bräuchtest. Dann würde das Array zu groß werden und den Rahmen sprengen. Damit hab ich so meine Erfahrung, ich hatte noch vor Kurzem ein Array welches ich wie folgt diemnsionierte:

array(200,200,200,12) - das machte dann zum Schluss 4000 MB Arbeitsspeicher, was doch etwas zu viel ist^^ Deshalb würde ich nur die Mapkoordinaten sichern, also nur array(200,200) und nicht mehr. 200 ist dabei die Mapgröße x bzw. y. Bei 64 x 64 Pixel macht das eine Map von 12800 Pixel und das macht 12,5 Bildschirme voll bei 1024 x 768 Pixel. Sollte reichen, andernfalls kannst du das Array auch mit 300 oder 400 Dimensionieren. Wenn du jetzt aber Objekte anzeigen lassen willst, nicht an den Untergrund gebunden, transparent die dann zusätzlich zum Sprite an der Stelle angezeigt werden sollen, dann würde ich das als Linked List machen. Gründe dafür sind, dass du ja sicherlich nicht jedes TIle auf der Map mit einem Haus besetzen wirst. Das in einem Array zu speichern wäre Platzverschwendung da in Arrays der Speicher ja vorreserviert wird. Selbst wenn du später nahezu alles voller Häuser hättest würde zumindest zu Spielbeginn eine Menge an Speicher wegfallen der unbenutzt ist.
Dies, wie gesagt, gilt aber nur denn Gebäude nicht Objektgebunden sind, ohne Untergrundgrafik umher. ISt diese schonb mit dabei kannst du das Gebäude einfach anstelle des Bodensprites mittels Array anzeigen lassen.