Step event c# ?

  • C#

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

  • Step event c# ?

    Hallo alle zusammen,
    ich habe mir mal etwas wissen angeeignet um meine Fähigkeiten in Richtung einer anderen Sprache zu erweitern.
    WPF ist mir bisher sehr verständlich gewesen nur gibt es eine Sache die ich zwischen den ganzen Events vermisse: das Step-Event.
    Bisher habe ich es im GM dazu genutzt das Interface zu manipulieren, Animationen für Menüs, eigene Controls erstellen usw. nur weiß ich jetzt nicht wie ich das anstellen soll. Also an die die sich mit WPF VS und C# etwas auskennen: Kann ich einer klasse einen Code hinzufügen der Regelmäßig, am besten jedes Frame wie das Step-Event ausgeführt wird?
    viele Grüße,
    Patrik
  • #Patrik,

    mir ist hierbei nicht ganz klar warum du bei Animationen oder Controls?! absichtlich die Ausführungsgeschwindigkeit beschränken möchtest.
    Auch ist mir nicht ganz klar warum du so eine Frage stellst da die Lösung doch sehr einfach ist und bereits in den Basics nachzulesen ist.

    z.B.: einfach einen Counter per delta timing hochzählen lassen, erreicht er eine bestimmte Zahl führst du deinen "Ausführungsbeschränkten Code" eben aus und setzt den Counter zurück.
    ne alternativ und in meinen Augen bessere Idee wäre das es noch etwas direkter zu machen und in einer Variable die Milisekunden seit Systemstart zu speichern, die aktuellen Milisekunden mit denen in der Variable zu subtrahieren und checken ob genügend Milisekunden (das ist ein tausendstel einer Sekunde) vergangen sind, wenn dann führst du deinen Code aus und aktualisiert die Milisekunden in der Variable.

    Mfg.
  • Hier mal was ich genau machen will:
    Ich möchte hätte gerne einen Color Picker, erstes Problem den gibt es für MSW8 Anwendungen nicht out-of-the-box. Aber nicht einfach irgend einen: ich möchte einen Button der zunächst wie ein ganz normaler Toggle-Button funktioniert jedoch wenn man ihn zieht und bewegt eine runde Farbpalette erscheint mit der man die Farbe wählen kann. Beim GM wüsste ich wie ich das mache. Da würde ich einen Button erstellen, Im step event eine klick Überprüfung und ob die Maus bei geklickter Taste noch an der selben Stelle ist. Dann folgt der Button der Maus und eine Farbpalette erscheint. Nichts davon wüsste ich direkt in C# und mit Events umzusetzen.
  • Was soll ich da noch sagen außer: Lies dich ein in die Dokumentationen und informier dich.
    Die professionelleren Sprachen (ja, ich zähle da dreist jetzt mal C# zu) und die ganzen Bibliotheken und SDKs sind alle für sich schon viel größer als der GM. Du wirst da entweder ein Tutorial finden müssen, das genau das tut, was du willst, oder du musst dich komplett reinknien.

    Edit: C#-Flame korrigiert.
  • @MewX
    Höhere Sprache?
    Mag sein dass C# gegenüber den anderen der C-Familie als hoch angesehen werden kann, aber um ihn mal nicht zu verwirren würde ich mal anmerken dass C# eine viel "niedrigere" Sprache ist als GML, denn darum gehts ja. Man hat viel weniger Struktur vorgegeben. Hängt ja auch damit zusammen dass GML eine "Skriptsprache" ist.

    @Partik:
    Als ich mit C# angefangen habe, habe ich auch erstmal naiv nach step-events oder sowas gesucht...
    Dass games in solchen Sprachen anders gemacht werden kannst du aber daran erkennen wenn du einen der professionellen Spiele ansiehst (egal welches. Gilt von Need for Speed bis Counterstrike). Da ist das Spiel immer darum bemüht die höchstmögliche FPS zahl rauszuholen. D.h. sie ist nicht vorgegeben.
    Im grunde musst du dein Problem somit in einem Loop lösen (den gibt WPF wahrscheinlich sowieso vor). Soll etwas immer mit einer bestimmten Zeit verzögert werden, musst du diese bereits angesprochene "Delta-Time" verwenden.

    Wie das aber direkt zu realisieren ist weiss ich auch nicht (mein einziges Spiel in C# war ein 4-gewinnt). Also beherzige MewX's Tip und "knie dich rein" :)
    Andererseits.. wieso überhaupt C#? DIe ist nicht unbedingt die beste Sprache für Games denn man darf nicht vergessen sie ist extrem Windows-Gebunden und wird ähnlich wie GML teilweise interpretiert (wenna uch viel efektiver).
    Wenn du sowieso von 0.1 startest, fang gleich mit C++ an, oder mit Java (*duck* ._. ). Dort hast du noch mehr Auswahl an Engines und nicht so viel schwerer zu lernen (wenn man nicht gleich in die Tiefe steigen will)...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Hab mich missverständlich ausgedrückt bzw. habe mich anscheinend beim Schreiben des Satzes umentschieden, was ich schreiben will. Ich habe das mal korrigiert.

    Wenn du mit Google und "Game Loops" nicht zufrieden bist, kann ich dir dieses Buch ans Herz legen (Englisch): Game Coding

    Edit: Aber ja, C# halte ich für Spiele auch wenig geeignet. C++ muss es schon sein, wenn du es "richtig" machen willst. Wenn du nur Ergebnisse haben willst, nimm das, von dem du weißt dass es funktioniert und mit dem du die meiste Erfahrung hast.
    Das ist jetzt eher eine allgemeine Aussage. Mir ist klar, dass du hier gerade wahrscheinlich etwas anderes vorhast.
  • Ja und zwar etwas GANZ anderes.
    Nun, ich glaube der Knackpunkt ist dass ich weder jetzt noch in der Zukunft vor habe Spiele zu entwickeln. Zumindest fürs erste. Ich hab gemerkt dass ich es absolut nicht ausstehen kann ein Spiel mit Inhalt zu füllen, Engines hab ich gerne gebaut.
    Warum C#? Ich dachte es wäre eine höhere ergo performancereichere Plattform als der GM. Dass es interpretiert wird wusste ich bisher nicht. Momentan mache ich C# eig. auch nur weil Learnvisualstudio.net einen tollen Einstieg dazu bietet und ich bisher alles verstanden habe und auch umsetzen kann. Ich meine mich auch daran zu erinnern dass mir jemand dazu geraten hat.

    DragonGamer schrieb:


    Im grunde musst du dein Problem somit in einem Loop lösen (den gibt WPF wahrscheinlich sowieso vor).

    Und genau dass ist es was mich so Wurmt! Es gibt keinen von WPF Vorgegebenen Loop. Ich hab alles abgesucht, vielleicht bin ich auch zu blöd den zu finden :( .
    Und wenn ich irgendwo in eine WPF Anwendung einen Loop setzt wird das Interface in der Zeit nicht aktualisiert. Wenn dies manuell auslöse( wie hier screen_redraw() ) bekomme ich aber seltsame Effekte auf dem Bildschirm, eben als würde ich im GM einen einzigen riesigen Loop machen und jedes mal screen_refresh aufrufen.

    Nur weil dieser Teil fehlt bin ich überhaupt so verwirrt.
  • Benutzer online 1

    1 Besucher