Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Miniblogs / Entwicklertagebuch - [OC] Projekt Maddino.
- - By Maddino (More than 50 posts.) Date 23.04.2014 19:07 Edited 02.05.2014 18:36
Parent - By Nachtfalter (More than 1000 posts.) Date 23.04.2014 20:01
Hallo Maddino!

Freu mich auf neuen Content, vielleicht mit ein paar netten Testrunden. OC Go!
Parent - By Mupf (More than 200 posts.) Date 23.04.2014 20:08
OC braucht content, content, content!
Freut mich dass du so was machst, und hey, vielleicht motiviert das hier ja mehr Leute, sich mal in OC einzuarbeiten :wink:
Parent - - By Maikel (More than 500 posts.) Date 23.04.2014 22:03
Schön zu hören dass sich jetzt auch Entwickler an OC wagen!

Falls du (mehr) Feedback willst kannst du das Projekt auch gerne in das Deutsche Subforum von OC vorstellen.

Hört sich schonmal gut an das Ganze, und ein paar mehr Melees für OC wären sicherlich nicht schlecht wo Sven die Liga langsam zum laufen bringt.
Parent - - By Maddino (More than 50 posts.) Date 24.04.2014 11:38

>Hört sich schonmal gut an das Ganze, und ein paar mehr Melees für OC wären sicherlich nicht schlecht wo Sven die Liga langsam zum laufen bringt.


Oh es wird an der Liga gearbeitet :shocked: Wusste ich noch gar nicht! Wisst ihr schon in etwa wann ihr sie freigeben wollt?
Parent - By Maikel (More than 500 posts.) Date 24.04.2014 12:03
Eine Testliga laeuft schon, aber bis das ganze dann auch alles mit einem neuen Release funktioniert dauert wahrscheinlich noch 1-2 Monate.

Sven2 kann dir bestimmt mehr erzaehlen, oder er sollte mal ein Blogpost erstellen :happy:
Parent - - By Kanibal (More than 200 posts.) Date 24.04.2014 13:15
Presented by and auf clonkspot(tm)!
Parent - By Luchs (More than 1000 posts.) Date 24.04.2014 15:36
...allerdings voraussichtlich nur die CR-Liga.
Parent - By Gecko (More than 500 posts.) Date 24.04.2014 17:13
Ich wünschte ich hätte auch die Zeit mich mal so richtig mit OC zu befassen!
Allerdings bremsen mich meine ganzen anderen "Nicht-Clonk"-Projekte aus...

Bin jedenfalls sehr gespannt. Denn das was imho OC noch so richtig fehlt ist Content und Leute die diesen Content spielen.
Parent - - By Pyrit (More than 200 posts.) Date 25.04.2014 16:20
Finde ich sehr gut. Man könnte vielleicht auch eine Liste machen mit Hindernissen, denen du beim Entwickeln begegnet bist. Z.B. eben "Wie greift man auf das Inventar des Clonks zu" oder "Wie mache ich, dass ich mit Spacebar mit einem Objekt interagieren kann".
Dann kann man zu diesen grundlegenden Themen vielleicht Tutorials schreiben, mit jeweils mit einem Beispielscript, welches solche einfachen Aufgaben behaldelt.
Parent - - By Maddino (More than 50 posts.) Date 25.04.2014 17:51
Das ist eine sehr gute Idee. Ich werde mir die Probleme + den Lösungen denen ich begegne aufschreiben und dann im OC - Forum veröffentlichen.
Parent - By Maikel (More than 500 posts.) Date 25.04.2014 18:05
Im OC wiki kannst du auch ruhig Deutsche Tutorials anfangen, da sind die besser zu finden wenn es viele werden.
Parent - - By Nachtfalter (More than 1000 posts.) Date 25.04.2014 18:23
Oder gleich mit Gecko für seine Seite basteln!:birthday:
Parent - - By Maddino (More than 50 posts.) Date 25.04.2014 19:18
So war der Plan.

Aber bei Gecko gibt es ja keine News mehr :-(
Parent - By Gecko (More than 500 posts.) Date 25.04.2014 20:05
Gibt bald neue! Ist noch nicht vorbei!
Parent - By Newton (More than 50 posts.) Date 26.04.2014 08:28
Hurra :birthday:

Ich freu mich drauf. :happy:
- - By Maddino (More than 50 posts.) Date 24.04.2014 17:58
static Sword2;

func Initialize()
{
  Sword2 = CreateObject(Sword, 475, 169);
  Sword2 -> SetR(180);
  Sword2 -> SetPosition(474, 159);
  Sword2 -> SetProperty("Collectible",0);
}

func RelaunchPlayer()
{
  Sword2 -> Fling(0,-6); 
  Sword2 -> SetRDir(12,10);
  Schedule(Sword2, SetSpeed(0,0,1), 200, 0);
}


Ich bin gerade am Entwickeln einer tollen Animation die ausgeführt wird, wenn ein Spieler stirbt. Das Problem liegt bei SetSpeed.
Die Engine sagt mir:
[17:57:48] ERROR: SetXDir: must be called from object context.
[17:57:48]  by: Scenario->SetSpeed(0,0,1) (System.ocg\Object.c:11)

Ziel ist es ein Schwert in der Luft rumwirblen zu lassen (mit tollen Partikeln!!). Doch wenn es wieder auf den Boden aufkommt, rutscht es weg, statt stehen zu bleiben. Wollte ausprobieren, wie ich das mit SetSpeed timen muss, um es zu verhindern. Verstehe aber jetzt diesen Error nicht.
Parent - - By Luchs (More than 1000 posts.) Date 24.04.2014 18:13

>Schedule(Sword2, SetSpeed(0,0,1), 200, 0);


Du rufst hier SetSpeed direkt auf, deshalb hat es keinen Objektkontext. Du willst vermutlich eher einen String mit der Funktion übergeben.

Kann OC schon Funktionspointer/Closures?
Parent - By Zapper (More than 500 posts.) Date 24.04.2014 18:51

>Kann OC schon Funktionspointer/Closures?


Per Günther's latest work™ schon
Parent - - By Maddino (More than 50 posts.) Date 24.04.2014 19:00
Jap hattest Recht. Muss ein Sting sein!

func Initialize()
{
  Sword2 = CreateObject(Sword, 475, 169);
  Sword2 -> SetR(180);
  Sword2 -> SetPosition(474, 159);
  Sword2 -> SetProperty("Collectible",0);
}

func AnimationStop()
{
  Sword2 -> RemoveObject();
  Sword2 = CreateObject(Sword, 475, 169);
  Sword2 -> SetR(180);
  Sword2 -> SetPosition(474, 159);
}

func RelaunchPlayer()
{
  Sword2 -> Fling(0,-6); 
  Sword2 -> SetRDir(12,10);
  Schedule(Sword2, "AnimationStop()", 58, 0);
}


Wollte ich jetzt so lösen. Bekomme aber einen Haufen solcher Errors:
[18:57:56] ERROR: unknown identifier: AnimationStop (Objects.ocd\Items.ocd\Weapons.ocd\Sword.ocd\Script.c:337:1)
[18:57:56]  by: Object(1)->FxIntScheduleTimer(Object(1),{Name = "IntSchedule", Repeats = 0, Script = "AnimationStop()"}) (System.ocg\Schedule.c:29)


Warum kennt die Engine AnimationStop nicht?
Parent - By Maddino (More than 50 posts.) Date 24.04.2014 19:59
Hat sich Zapper zum Dank geklärt:

Schedule(nil, "AnimationStop()", 58, 0);

ist die Lösung. Habe AnimationStop() im Objekt aufgerufen, die Funktion ist aber im Szenario definiert! ;-)
Parent - By Zapper (More than 500 posts.) Date 24.04.2014 18:50
Bei einem Funktionsaufruf werden immer alle Parameter sofort ausgewertet (wie in allen anderen Programmiersprachen auch!).
Wenn du also Schedule(..., Foobar(),...) benutzt, dann wird als allererstes "Foobar()" ausgewertet. In deinem Fall eben "SetSpeed". Und das alleine geht nicht aus dem selben Grund, warum du auch überall vorher "Sword->" dazuschreiben musstest: es fehlt sonst das Bezugsobjekt! Vom Szenario kannst du die Geschwindigkeit so jedenfalls nicht ändern :)

Wenn du Schedule benutzen willst um einfach globalen Code auszuführen wäre das in deinem Fall zB
Schedule(nil, "Sword2 -> SetSpeed(0, 0, 1)", 200, 0); // weil Sword2 eine globale Variable ist
oder vllt sogar (ungetestet):
Schedule(Sword2, "SetSpeed(0, 0, 1)", 200, 0);

Du könntest auch ScheduleCall benutzen, was eine Funktion in einem Objekt aufruft (in dem Fall werden die Parameter spaeter übergeben):
ScheduleCall(Sword2, "SetSpeed", 200, 0, 0, 0, 1);
- - By Maddino (More than 50 posts.) Date 24.04.2014 21:09
Ist es bei OC eigentlich möglich, die einzelnen Inventarplätze auf Inhalt zu untersuchen? Ich werde aus Contents() nicht ganz schlau.. steht der index für den einzelnen Inventarplatz?
Parent - By Luchs (More than 1000 posts.) Date 24.04.2014 21:34
Da musst du vermutlich im Script des Clonks selbst nachgucken - Contents() hat keine Löcher.
Parent - - By Zapper (More than 500 posts.) Date 24.04.2014 22:00 Edited 24.04.2014 22:02
clonk->GetItem(i) gibt dir das Item an der Stelle i
clonk->GetItemPos(item) gibt dir die Position vom item

Wenn du in OC durch alle Inventarobjekte vom Clonk durchgehen willst, geht das zB so:
for (var item in clonk->GetItems()) // tu was mit item

Oder allgemeiner für alle Objekte:
var item, i=0;
while (item = clonk->Contents(i++)) // tu was mit item
Parent - - By Maddino (More than 50 posts.) Date 25.04.2014 10:40
Hey! Das ist genau das was ich gesucht habe :birthday::birthday:

Warum steht das nicht in der Docu?
Parent - - By Luchs (More than 1000 posts.) Date 25.04.2014 12:16
Weil die Dokumentation primär globale Funktionen dokumentiert, die größtenteils in C++ in der Engine implementiert sind. Für sowas spezifisches wie das Clonk-Inventarmanagement kann ja jeder problemlos einfach im entsprechenden Skript nachgucken.
Parent - - By Zapper (More than 500 posts.) Date 25.04.2014 12:51
..das stimmt zwar. Aber das ist keine gute Begründung. Eigentlich wär der Idealfall, dass auch die Scriptlibraries vernünftig dokumentiert sind, wie bei anderen Projekten auch.. :)
Parent - By Maikel (More than 500 posts.) Date 25.04.2014 13:27
Die sollten erstmal vernunftig geschrieben und kommentiert werden.
Parent - - By Luchs (More than 1000 posts.) Date 25.04.2014 13:34
Im verlinkten Skript steht ja zumindest an jeder Funktion ein Kommentar. Insofern müsste daraus wohl primär mal eine Doku generiert werden?
Parent - By Zapper (More than 500 posts.) Date 25.04.2014 19:55
Joa. Günther hatte mal in den Parser eingebaut, dass der ne Doku generieren kann oder so. Aber dann nie weiter verfolgt
Parent - By Maddino (More than 50 posts.) Date 25.04.2014 14:38
Ja das habe ich jetzt verstanden. Ich hätte auch im Script gesucht, wenn Zapper nicht gleich schon die Lösung präsentiert hätte.
Ist aber halt nicht sonderlich Einsteiger-freundlich. Ich als Neuling sehe zumindest zuerst in der Doku nach, wenn sich dort nichts findet, bin ich erst mal ratlos. Aber jetzt weiß ich ja wie es geht ;-)
- - By Maddino (More than 50 posts.) Date 26.04.2014 13:02 Edited 26.04.2014 16:09
Ich beschäftige mich gerade mit den OC Partikeln und bin kurz vor dem Verzweifeln. Ich habe es erst mit ElectroSparks und Rauch versucht. Jetzt dachte ich mir vlt. klappt es ja bei Feuer. Aber leider passiert einfach nichts! Bei den meisten Problemen kann ich mir selbst Abhilfe schaffen, aber diesmal will es einfach nicht klappen. Das mag daran liegen, dass ich auch das System nicht richtig verstehe.

Hier mein Code:
EDIT
        Sword2->CreateParticle("Fire",0,0,0,0,100,Particles_Fire(),200);  //Feuer beim Schwert
        CreateParticle("Fire",474,159,0,0,100,Particles_Fire(),200); //Feuer an der Position beim Schwert (global)

Meistens komm ich durch Probieren auf die richtige Lösung, aber hier ändert sich nichts, egal welche Werte ich auch nehme. :sad::sad: Als ich es mitSmke probiert habe, fiel plötzlich ihrgendeine hässliche Grafik vom Himmel in den Boden und verschwand dann. War das der Rauch? :tongue:
Parent - - By Zapper (More than 500 posts.) Date 26.04.2014 13:39
OK. Frage #1 bei Problemen: Was geht nicht und woran siehst du, dass es nicht geht? :)

Einfach mal ins blaue geschossen bei den beiden Zeilen:
Du hast aber schon eine Partikelgrafik "Feuer" irgendwo, ja? Die ist jedenfalls nicht im Originalpack drin. Da gäbe es zB Fire oder FireDense
Parent - - By Maddino (More than 50 posts.) Date 26.04.2014 16:07
Auch wenn ich Fire benutze..

Was geht nicht?
Man sieht keine Partikel :sad:
Parent - - By Zapper (More than 500 posts.) Date 26.04.2014 17:00
Wenn ich GoldRush.ocs starte, einen beliebigen Baum anklicke und dann
CreateParticle("Fire",0,0,0,0,100,Particles_Fire(),200) in das Eigenschaftenfensterchen schreibe, dann sehe ich Feuerpartikel in der Mitte des Baumes.

Sicher, dass du mir alles erzaehlst?
Du bekommst keine Fehlermeldungen und deine Zeile da wird auch wirklich ausgeführt?
Parent - - By Maddino (More than 50 posts.) Date 27.04.2014 09:40
Ok.. ganz blöde Geschichte.

Um nicht zu laggen, hatte ich die Effekte ganz zurück geschraubt und Feuerpartikel ausgestellt :sad:
Es geht jetzt alles.
Parent - By Zapper (More than 500 posts.) Date 27.04.2014 10:26
Huch, Effekte runterdrehen sollte nix mehr ändern, aber das mit den Feuerpartikeln hatte ich wohl vergessen!
Das bau ich dann wohl einfach aus, dass man das abschalten kann <.<
- - By Maddino (More than 50 posts.) Date 02.05.2014 12:35
So! :birthday: Es ist soweit. Ich kann erste kleine Ergebnisse präsentieren. Obwohl ich immer wieder auf kleine, nervige Probleme gestoßen bin, hat es viel Spaß gemacht, erstmals für OC zu entwickeln. Ich bitte euch, die Szenarien bei Möglichkeit zu testen. Ich hätte zwar gerne ein paar Testrunden veranstaltet, aber bei meinem derzeitig Internetzugang, wird daraus wohl nichts. :sad:

Bei den beiden Szenarien handelt es sich um kleine Melee. Würde mich über Feedback freuen: Was fehlt noch? Gibt es Fehler, auf die ich nicht gestoßen bin? Gerade in Hinsicht auf Deko gäbe es wohl noch einiges zu verbessern. Leider bin ich kein Grafiker und habe auch sonst von Leveldesign keine Ahnung. (Mir fehlt da einfach das Talent)

Jetzt habe ich ersteinmal genug von Melee und werde mich einem Siedelszenario widmen: Robinson Clonker
Story: Ein Clonk strandet auf einer einsamen Insel und muss dort überleben, bis er gefunden wird.
Features: Urwald-Clonks (also ein neues Skin), Händler-KI, neues Spielziel (Survival), vieles mehr!

Ich arbeite dabei auch mit einem Grafiker zusammen. (Stormhunter) Mal sehen wie sich das entwickelt. Bis ich damit fertig bin, wird es jedoch etwas dauern, da bei mir die Prüfungen vor der Tür stehen. Auch versuche ich mein altes Menüdesign aus Dr. Faustus ihrgendwie mit einzubringen. Natürlich mit anderen Attributen.

Attachment: M_BETA.ocf.zip (4014k)
Parent - - By Maikel (More than 500 posts.) Date 02.05.2014 13:07
Wir haben grad eine Runde RtD gespielt (1 vs 1) und leider war die Landschaft zu gross um mit Katapulte alles zu beschiessen zu können. Das hat teilweise der Spielspass zerstört, auch sollte man soweit rauszoomen können das man der gesamte Karte sehen kann. Das Leveldesign der Runde ist eigentlich in Ordnung, könnte noch ein paar mehr kleine Himmelsinseln haben (die man schön zerstören kann!).
Parent - By Maddino (More than 50 posts.) Date 02.05.2014 13:17
Standard ist eigentlich die Kanone (also wenn man keine Waffe wählt). Mit ihr kann man auch überall hintreffen! Katapult sollte man bei mehreren Spielern wählen, da man sich mit ihr auch selbst schießen kann. Ich sehe da verschiedene Möglichkeiten:

1. Man kann ingame ein Katapult zur Kanone "verwandeln" und umgekehrt.
2. Power des Katapults erhöhen
3. Katapult raus nehmen (und vlt. das man sich mit der Kanone weg schießen kann einbauen)

Rauszoomen kann man nicht?? Hatte es bisher nur im Editor gespielt. Muss ich mal schauen.
Parent - - By Caesar (More than 15 posts.) Date 02.05.2014 13:14
Siehe Maikel. Außerdem: Ich finde, man sollte seine Platformposition wissen, bevor man die Waffe wählt. Es kommt oft zu Situationen, wo man bestimmte Bereiche nicht erreichen kann. Und ich finde, ein paar mehr Leben könnten auch nicht schaden. Locker das Dreifache.
Parent - By Maddino (More than 50 posts.) Date 02.05.2014 13:18

>Ich finde, man sollte seine Platformposition wissen, bevor man die Waffe wählt. Es kommt oft zu Situationen, wo man bestimmte Bereiche nicht erreichen kann.


Das wäre natürlich auch eine Möglichkeit, um das Katapult so lassen zu können, wie es jetzt ist. :cool:
Parent - - By Mupf (More than 200 posts.) Date 02.05.2014 14:22
Habe beides nur mal kurz allein gestartet.
Schließe mich der restlichen Kritik zu RtD an. Bugfrei und ohne genannte Probleme stell ichs mir sehr spaßig vor.
Schnittengemenge ist ziemlich fad, weil die Landschaft halt flach ist, wäre schon wenn es da mehr Deckung und so gäbe.


Stuck :/
Parent - - By Maddino (More than 50 posts.) Date 02.05.2014 14:29
Danke fürs Feedback und den Stuck! :happy:

>Schnittengemenge ist ziemlich fad, weil die Landschaft halt flach ist, wäre schon wenn es da mehr Deckung und so gäbe.


Das bezweifle ich jedoch. Du hast Schnittengemenge bisher nur alleine gespielt. Bei meinen Tests ging bei 1 vs 1 schon die Post ab! Dabei zu beachten ist: Inventarplatz 2 wird ständig mit Waffen versorgt, falls er leer ist. Das bedeutet du kannst wertvolle Objekte (z. B. Brot) in anderen Plätzen zwischenlagern und bekommst trotzdem Nachschub! Auch ein toller Effekt (der auf Bugs zu überprüfen wäre) ist der offene Rand bei Schnittengemenge. Fliegt man rechts raus, kommt man links wieder rein. Sollte man das vlt. auch bei RtD einsetzen?
Parent - By Mupf (More than 200 posts.) Date 02.05.2014 14:31
Oh, offener Rand ist toll :D
Ja, habs wie gesagt nur oberflächlich und ohne Gegner ausprobiert :happy:
Up Topic Deutsch / Miniblogs / Entwicklertagebuch - [OC] Projekt Maddino.

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill