Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

51

27.02.2011, 02:19

Naja, um ehrlich zu sein seh ich auch keinen besonderen Grund nicht C# zu benutzen. Ist eine solide und mächtige Sprache, liefert sehr gute Performance (sicherlich den meisten herkömmlichen Skriptsprachen weit überlegen) und das Argument dass es zu schwer ist kann ich nicht ganz nachvollziehen denn dein Artist muss ja nur das bisschen C# können was er eben für deine Skripte braucht. Der Code den du da oben als "selbsterklärend" bezeichnet hast wäre mit dem entsprechenden Framework übrigens 1:1 gültiger C# Code...

Du kannst deine Skripte dann gleich in einer richtigen IDE (Visual Studio) schreiben und debuggen (!), du kannst deine Skripte ohne Probleme wenn sie fertig sind direkt in deine exe einkompilieren, du brauchst keine komplexen Layer die die Kommunikation zwischen Skript und Anwendung regeln weil die Anwendung selbst schon in .NET geschrieben ist, ... Wenn du mich fragst hat C# hier wahnsinnig viele Vorteile an die eine normale Skriptsprache nichtmal ansatzweise rankommt...

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »dot« (27.02.2011, 02:31)


daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

52

27.02.2011, 02:40

Ok, ich bin glaube ich auch einfach schon zu müde um mich verständlich auszudrücken :S

Eine Scriptsprache ist in der Regel besser geeignet um eine DSL zu schreiben. Ok, C# hat mittlerweile viel ab geguckt und ist auch viel leichter zu verstehen als z.B. C++

Hier mal ein paar Spielereien die in C# nicht ganz so elegant gehen:

javascript:

Quellcode

1
2
3
4
5
6
7
hero = new GameEntity(
    location: new Point(3, 4),
    health: 100,
    onKilled: function() {
        game.getResource("scream.wav").play();
    }
}


Ruby:

Quellcode

1
2
3
4
5
GameEntity.create("hero") do |hero|
    hero.health = 100

    hero.onKilled = Proc.new { ... }
end


Bei beiden Beispielen kann man ein Objekt erstellen, welches nicht extra zu einer Liste hinzugefügt werden muss (z.B. game.Objects.Add(hero)) sondern automatisch hinzugefügt werden kann (da das Objekt quasi schon vorher gültig ist).

Ist ja eigentlich auch egal, soll ja jeder machen was er will. Nur wollte ich halt sagen, das Skriptsprachen mehr Vorteile haben als einfach nur zur Laufzeit ausgeführt werden zu können. Stichwort DSL, sexy Code etc

Edit:
Du kannst deine Skripte dann gleich in einer richtigen IDE (Visual Studio) schreiben und debuggen (!), du kannst deine Skripte ohne Probleme wenn sie fertig sind direkt in deine exe einkompilieren, du brauchst keine komplexen Layer die die Kommunikation zwischen Skript und Anwendung regeln weil die Anwendung selbst schon in .NET geschrieben ist, ... Wenn du mich fragst hat C# hier wahnsinnig viele Vorteile an die eine normale Skriptsprache nichtmal ansatzweise rankommt...


Ja, aus Sicht des Programmierers! :D Egal, es ist spät, ich will ins Bett und wir haben eh beide Recht :) Also gute Nacht ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

53

27.02.2011, 02:49

Nur wollte ich halt sagen, das Skriptsprachen mehr Vorteile haben als einfach nur zur Laufzeit ausgeführt werden zu können. Stichwort DSL, sexy Code etc

C# bietet Named Parameters und Lambdas, d.h. dein erstes Beispiel ließe sich wieder fast 1:1 in C# übernehmen (statt function() einfach new delegate()), das GameEntity könnte sich in seinem Konstruktor automatisch zu deiner Liste adden. Aber natürlich haben DSLs auch Vorteile, ist nur eben die Frage inwiefern man sowas wirklich so dringend braucht dass all die riesigen Vorteile nebensächlich werden...

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

54

27.02.2011, 02:53

Ich merk schon, du willst auf jeden Fall noch Recht haben heute :)

Ich weiß das es mittlerweile durchaus auch mit C# sehr viel Möglich ist, aber um z.B. das mit dem Konstruktor zu realisieren, müsstest du alle Eigenschaften die das Objekt benötigt, um gültig zu sein, übergeben können. Da ist C# auf jeden Fall nicht annähend so flexibel wie Javascript oder Ruby.

Ja, man kann auch ohne Probleme C# nehmen, aber bitte kehrt jetzt nicht die Vorteile von Scriptsprachen unter den Teppich :S

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

55

27.02.2011, 03:08

Ich merk schon, du willst auf jeden Fall noch Recht haben heute :)

Eigentlich gehts hier nicht ums irgendwie Recht haben sondern darum das ein oder andere Argument anzuführen warum C# doch vielleicht eine mindestens genauso gute Entscheidung als Skriptsprache für ein Spiel sein kann wie z.B. JavaScript, Ruby, Lua, etc. um die Aussage von Chromanoid etwas zu untermauern nachdem du gesagt hast dass du das eher nicht so siehst...

Ich weiß das es mittlerweile durchaus auch mit C# sehr viel Möglich ist, aber um z.B. das mit dem Konstruktor zu realisieren, müsstest du alle Eigenschaften die das Objekt benötigt, um gültig zu sein, übergeben können. Da ist C# auf jeden Fall nicht annähend so flexibel wie Javascript oder Ruby.

JavaScript und Ruby können sicherlich nicht erraten was ich gerne für Werte hätte und Defaultwerte kann das zugrundeliegende Framework definieren, mit der Skriptsprache hat nun wohl eher weniger zu tun? C# und generell .NET bieten einem schon sehr viele Möglichkeiten von wegen Flexibilität, ich denk da z.B. jetzt auch an den Reflection Mechanismus mit Attributen im Code etc. Ich seh zumindest grad nicht wo JavaScript oder Ruby wesentliche Vorteile von wegen Flexibilität bieten würden. Auch diese Sprachen sind general purpose Sprachen und ihre Syntax nicht beliebig anpassbar. Natürlich steht es jedem frei zu verwenden was ihm persönlich besser gefällt, nur in der Tatsache dass andere Sprachen auch einer anderen Syntax folgen sehr ich nicht wirklich einen objektiven Grund warum die Syntax von C# generell eher nicht brauchbar sein sollte. Natürlich gibt es immer Fälle wo die eine Sprache syntaktisch besser geeignet ist als die andere, darum gibts ja überhaup erst verschiedene Sprachen. Und auch wenn wir nun Ruby und JavaScript etwas mehr syntaktische Flexibilität zugestehen: Die Syntax ist sicherlich sehr wichtig aber auch nicht alles sodass man die Entscheidung für die Sprache nicht nur auf Syntaxebene fällen kann, und gerade da bietet C# eben sehr große Stärken die man imo nicht einfach übersehen oder gar ignorieren sollte.

Ja, man kann auch ohne Probleme C# nehmen, aber bitte kehrt jetzt nicht die Vorteile von Scriptsprachen unter den Teppich :S

Um den Vorteil von Scripting im Allgemeinen gehts ja gar nicht, es geht ja doch gerade um C# als Skriptsprache. Und ich bestreite auf keinen Fall dass andere Sprachen ihre Vorteile haben, C# ist nur eine Sprache und ich argumentiere hier gerade überhaupt nicht in Richtung "C# für alles". Nur wenn du schon eine .NET Anwendung hast dann bietet die Tatsache dass man eine .NET Sprache auch fürs Skripting verwenden kann massive Vorteile. Ich will nichts unter den Teppich kehren, ich versuch nur zu verhindern dass C# ohne Grund unter den Teppich gekehrt wird ;) Jede Sprache hat ihre Berechtigung und die Idee einer DSL ist auch nicht verkehrt. Nur um ehrlich zu sein denk ich kaum dass der Nutzen den Aufwand eine DSL zu entwickeln im Kontext hier in irgendeiner Form rechtfertigt.

Nochmal: Ich bring nur ein Paar Argumente für C# und nicht gegen alles Andere, ich versuch nicht C# als Wundermittel anzupreisen. Für eine nicht .NET Anwendung sind z.B. die wesentlichen Vorteile von C# schon wieder total hinfällig...

Dieser Beitrag wurde bereits 15 mal editiert, zuletzt von »dot« (27.02.2011, 03:56)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

56

27.02.2011, 13:20

Ich kann dot nur zustimmen. Wenn das Projekt schon C# ist und C# die Möglichkeit bietet es dynamisch zur Laufzeit nachladen oder ändern zu können, dann spricht genau nichts sinnvoll dafür da jetzt Javascript oder Ruby drüber pressen zu wollen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

57

27.02.2011, 14:44

Bei der Entwicklung von "TES IV: Oblivion" wurde auch auf IronPython gesetzt. (Im Ordner befinden sich "IronPython.dll" & "IronMath.dll").
Allerdings benutzen Spiele wie GTA IV (und ich glaube auch Call of Duty) LUA. Alles Spiele, die die Community erweitern konnte.
Obwohl Oblivion seinen eigenen Skript-Dialekt hat. Wenn einem egal ist, wie groß der Interpreter ist, den man letzendlich
mitliefern muss, denke ich, dass IronPython eine gute Lösung ist. Ich bin der Meinung, man sollte sich ersteinmal damit
auseinander setzen, WARUM man eine Skriptsprache verwenden will, und vor alllem WOFÜR. Wenn man z.B. ein ausgefeiltes
Plugin System haben will, wäre es sicher Sinnvoll Skriptsprachen mit großem Umfang zu verwenden. Ansonsten wie oben schon
gesagt, z.B. unter C# die Mitgelieferte verwenden.

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

58

27.02.2011, 14:56

Du benutzt wohl den Oblivion Mod-Manager (OBMM): Der hat IronPython. Oblivion selbst hat eine eigene Skriptsprache.

BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

59

27.02.2011, 15:55

@Oberon: Ja, den benutze ich... Dann hab ich da wohl was verwechselt :D

Frage: Mit wlecher Skriptsprache kann ich auf Variablen aus meinem Programm zugreifen?
Z.B.:

Programm.cs

C#-Quelltext

1
2
3
4
5
[...]
MainWindow win = new MainWindow();
win.show();
scriptEngine.CreateFromFile("script.endung");
[...]


Skript:

Quellcode

1
2
win.Title = "BLABLA"
win.Icon = Icon("Datei.ico")

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

60

27.02.2011, 15:59

Frage: Mit wlecher Skriptsprache kann ich auf Variablen aus meinem Programm zugreifen?

Wenn dein Programm .NET ist dann lässt sich das mit einer .NET Sprache als Skriptsprache sicherlich am Einfachsten machen. Generell geht das aber natürlich nicht von selbst du musst eben einen entsprechenden Integrationslayer schreiben der die Skriptsprache mit deiner Anwendung verknüpft...

Werbeanzeige