Kartenspiel Problemchen & ggf. Hilfe gesucht

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kartenspiel Problemchen & ggf. Hilfe gesucht

    Hallo Hallöchen,

    ich bin schon etwas länger an Bord als meine Beitragsanzahl vermuten lässt, darum nicht wundern. :)
    Ich habe ein mehr oder weniger kompliziertes Brettspiel entworfen (so in Real Life) und wollte es nun als PC-Game umsetzten. Erster Einfall war mir dann der Game Maker und beim zweiten Nachdenken meine nicht vorhandenen Kenntnisse. Programmiert habe ich schon öfters mit Java und die grundlegenden Actions verstehe ich soweit auch, darum wollte ich eine sehr abgespeckte Version programmieren, welche nur ein Kampfsystem beinhaltet, um ein Gefühl zu bekommen und später keinem hier mit Fragen auf den Zeiger zu gehen. Dennoch stieß ich auf lästige kleine Problemchen die ich mir mit der Suchfunktion des Forums nicht lösen konnte.

    Zum einen benötige ich (wie so viele Spiele) ein Deck von dem man per Mausklick in den Raum erstellt werden.
    - Mein Gedanke war dass jede Karte ein Objekt ist (vllt nicht die eleganteste und sauberste Lösung) und eine, per Zufall ausgewählte Karten, auf den nächst freien Slot (5 Stück) lege.
    - Doch wie erstelle ich inGame ein neues Objekt mit den dafür zugewiesenen Variabeln ? Ich habe schon viele Threads durchgeguckt und versucht einfach das Grundsystem der GML zu verstehe, da es ja stark an Java o.ä. erinnert, doch es hat noch nicht "klick" gemacht.

    Und zur Info: Es ist evtl. eine von vielen Fragen die mir noch aufkommen. Ich fänd es auch sehr nett wenn mir jemand bei der Entwicklung zur Seite steht und mir ggf. nützliche, für mein Vorhaben, geeignete Tutorial zeigen kann und im Gegenzug könnte ich Grafiken liefern. Also wer Interesse hat kann mich bei Skype hinzufügen, Nickname gleicht meinem Usernamen im Forum.

    Im Vorraus vielen Dank! ^^
  • Also um die Grundlagen von GML, Objekte usw zu lernen.. könntest du dir ja mal das hier ansehen:
    GML - Die Einsteigerreferenz
    Da du schon eine Sprache einigermaßen kannst, würde ich dir empfehlen den Drag and Drop Kram zu überspringen und gleich mit GML anzufangen. Die aktions-Blöcke verwirren sonst nur.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Sehr abstrakte Konzepte im GM umsetzen ist nicht ganz so einfach. Generell hast du aber zwei Möglichkeiten:

    Über Datenstrukturen:
    Du benutzt die ds-Befehle des GMs und simulierst dir damit Objekte mit Attributen im klassischen Sinne. Du könntest z.B. pro Attribut eine Liste führen und einfach dafür sorgen, dass der jeweilige Index in jeder Liste zum gleichen Objekt gehört. Das kann aber problematisch werden, wenn du einen Stapel "Mischen" willst. Dafür empfiehlt sich dann eine Liste, die sämtliche Referenzen auf alle "Objekte" hält und du über diese die anderen Objekte ansprichst. (3. Eintrag in dieser Metaliste enthält z.B. den Wert 7. Unter Index 7 stehen also in den Attributlisten die zum 3. Eintrag zugehörigen Werte).

    Über GM-Objekte:
    Du kannst Objekte im GM auch ähnlich benutzen wie in Java und ihnen Attribute zuweisen. Dabei hast du natürlich auch jede Menge überflüssige Attribute (wie z.B. x und y). Das ist übersichtlicher, allerdings musst du dich mit Befehlen wie instance_destroy() herumschlagen. Eine Metaliste brauchst du hierbei auch, nur hält sie hier die Instanzen-Ids. Bei vielen Objekten (100+) kann dein Spiel auch unnötig langsam werden, da die Instanzen sehr viel Overhead haben. Inwieweit das in aktuelleren GM-Versionen noch der Fall ist, weiß ich nicht, aber das solltest du vorher auf jeden Fall mal testen.


    In beiden Fällen gilt: Trenne Spiellogik strikt von der grafischen Darstellung. Fange nicht an, die "echten" Karten auch auf dem Bildschirm zu zeichnen und zu bewegen. Dabei verläufst du dich am Ende nur. Schreib lieber Funktionen, die das für dich erledigen. Kapsel auch generell alle üblichen Befehle in eigene Funktionen, damit du am Ende mit z.B. card_create(type, color) arbeiten kannst und die Funktion legt dann automatisch die ganzen Listeneinträge an und füllt diese entsprechend. Du hast aber in beiden Fällen Overhead.