ZweiDe

Übersicht Sonstiges Smalltalk

Gehe zu Seite Zurück  1, 2, 3 ... 16, 17, 18, 19, 20  Weiter

Neue Antwort erstellen

Fetze

BeitragMo, Mai 31, 2010 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleine Meldung am Rande: ZweiDe ist jetzt gratis und OpenSource!

Hier gibts das Paket: http://www.fetzenet.de/zweide/dl/ZweiDeSource.zip. Zum Einstieg kann man http://zweide.fetzenet.de konsultieren, das ein Manual bereit hält (Vorsicht, Website außer Newsmeldung aus Zeitmangel nicht aktualisiert!).
Um das im Archiv enthaltene Project-Template zu nutzen, einfach das Template-Zip in den entsprechenden ProjectTemplates-Ordner von Visual Studio kopieren. Es sollte dann unter "Neues Projekt" verfügbar sein.

Kleine Einstiegshilfe für Nicht-C#'ler:

  1. Visual C# 2008 Express herunterladen und installieren.
  2. Das ZweiDe Sourcecode Paket herunterladen und Archiv irgendwohin entpacken. Wer will kann die .sln-Datei im Hauptverzeichnis öffnen (Das ist die Projektmappe), eines der Testprojekte als Startprojekt wählen und den Play-Button oben drücken. Sollte dann kompilieren und das entsprechende Testprojekt starten (== Irgendwas buntes öffnet sich Wink )
  3. ZweiDeProjectTemplate.zip ist ein Projekt-Template für Visual Studio. Nicht entpacken! Stattdessen die Datei so in C:\Dokumente und Einstellungen\DeinName\Eigene Dateien\Visual Studio 2008\Templates\ProjectTemplates <Windows XP> oder so ähnlich kopieren.
  4. Wenn man jetzt Visual Studio öffnet und unter Datei ein "Neues Projekt" erstellt, kann man als Template das ZweiDeProjectTemplate auswählen. Anklicken, Ok, Play-Button drücken, sollte direkt laufen.
  5. Das Projekt dann irgendwo mal speichern. Wenn man dann ZweiDe Extensions hinzufügen möchte, die entsprechenden .dll-Dateien als "Verweis" hinzufügen, die Funktionen und Klassen sind im namespace Fetze.Module.ZweiDeXT.x oder sowas. Vorraussetzung für Extensions: Man hat sie zuvor kompiliert, die sind nämlich nicht im Projekt Template drin. Geht so ähnlich wie in Punkt 2 - nur vorher Projektmappenkonfiguration auf "Release" umstellen und "Projektmappe neu erstellen" wählen, das kompiliert ZweiDe und alle Extensions. Die .dll-Dateien findet ihr dann im jeweiligen /bin/Release-Unterordner.


Viel Spaß damit. Smile



Edit:
Falls ihr Visual Studio 2010 nutzt, müsst ihr in den Projekteigenschaften des Startprojekts das Zielframework auf .Net 3.5 stellen. .Net 4.0 ist scheinbar nicht mehr vollständig abwärtskompatibel.
  • Zuletzt bearbeitet von Fetze am Di, Jun 01, 2010 19:56, insgesamt 2-mal bearbeitet

DaysShadow

BeitragMo, Mai 31, 2010 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh cool, doch so schnell Smile Wollte es schon lange mal testen und jetzt werde ich das erst recht tun.
Dankeschön!

MfG DaysShadow
Blessed is the mind too small for doubt

coolo

BeitragMo, Mai 31, 2010 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow cool :O

Vielen dank!
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

ComNik

BeitragMo, Mai 31, 2010 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Oha Danke Very Happy
Allein der Lerneffekt...

Ich bin lesen...

[Edit:]Hmm, C# wirkt ganz schick eigentlich.[/Edit]

lg
ComNik
WIP: Vorx.Engine

Fetze

BeitragMo, Mai 31, 2010 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
@ComNik
Ja, schick ist C# allemal Smile War auch eines der Dinge, die mich zu Beginn geködert haben Laughing

@All
Was den Lerneffekt betrifft: Lest mit Vernunft. Ich hab seit dem Grundentwurf von ZweiDe eine ganze Menge dazugelernt, aber pragmatischerweise nicht alle Erkenntnisse auch rückwirkend umgesetzt, weils "so halt auch geht" und alle meine Folgeprojekte darauf basieren. Ach, und die Testprojekte in der Projektmappe sind nicht gerade aufgeräumt. Sind, wie der Name schon sagt, hackige Testprojekte, die ich zur Entwicklung verwendet hatte. Sie sind eigentlich nur deswegen dabei, damit man ne einfache "Anwendungsreferenz" hat, also mal gucken kann, wie man diverse ZweiDe Funktionen so nutzt.

Ansonsten: Wenn ihr Fragen zur Benutzung habt oder eure ersten Schritte / Erkenntnisse präsentieren wollt, immer her damit! Freue mich über jeden Kommentar Smile
 

Sora

BeitragDi, Jun 01, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Finde ich auch eine prima Idee. Wollte ebenfalls schon lange mal ein bisschen in C# reinschnuppern, aber die ersten Schritte ewig nur im Konsolenfenster zu verbringen, lässt die Motivation immer schnell wieder sinken, mit ZweiDe macht das Lernen mit einer Art Basic Feeling wesentlich mehr Freude. Danke.

Eine Frage habe ich auch noch gleich, hatte bisher die alte C# 2008 Express Edition drauf, dort lief alles super, jetzt habe ich vorhin auf die 2010er Version aktualisiert und erhalte stets "Der Typeninitialisierer für \"Fetze.Module.ZweiDe\" hat eine Ausnahme verursacht." Habe alles genauso wie zuvor gemacht, nur das Temptate logischerweise nach ..\Visual Studio 2010\Templates\ProjectTemplates\ kopiert. Weiß jemand was ich falsch gemacht haben könnte?

DaysShadow

BeitragDi, Jun 01, 2010 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieselbe Meldung bekomme ich auch, hab aber dann erstmal nicht weiter etwas versucht, da ich die 08er Version ebenfalls noch drauf habe.
Wüsste aber dann auch gern wo der Fehler evtl. liegen könnte.

MfG DaysShadow
Blessed is the mind too small for doubt

coolo

BeitragDi, Jun 01, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe auch noch die 08er Version drauf und es funktioniert ohne Probleme. Nur das Beispiel mit den Kollisionen (2er ists soweit ich weiß) erzeugt ein "Windows hat ein Problem festgestellt" beim beenden. Der Rest funktioniert tadellos.

Ich bin immernoch begeistert, ich denke schon fast, dass ich komplett auf C#+ZweiDe umsteige, ist ja quasi BMax für C# Smile Danke Fetze noch einmal.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

Fetze

BeitragDi, Jun 01, 2010 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Uff, mit VS2010 gehts nicht mehr? Das ist komisch. Ich kann leider nicht viel dazu sagen, da ich selbst ebenfalls noch VS08 nutze.. theoretisch sollte VS aber doch abwärtskompatibel sein? o_O

Nungut. Ich korrigiere den Beitrag oben mal auf VS 2008. Kann derweil mal jemand mit VS2010 und etwas C#-Vorkenntnis die Projektmappe (also nicht das Template) komplett durchkompilieren und schauen, ob sich da eine Problemursache feststellen lässt? Ist jetzt zwar nicht direkt dringend, aber es würde mich schonmal interessieren, was da los ist. Möglicherweise funktioniert einfach nur das Projekttemplate (mit VS08 erstellt) in VS10 nicht mehr.

Ich möchte außerdem noch hinzufügen, dass die Beispiele aus der Demoversion oder gekauften Vollversion mit dem Sourcecode Release möglicherweise nicht mehr kompatibel sind, da sich da schon noch einiges geändert hat. Wenn da was nicht geht, einfach ignorieren und in nem neuen Projekt schauen, wie es jetzt geht. Sollte in den meisten Fällen analog / identisch / sehr ähnlich sein.
coolo, ich vermute, dass in deinem Fall sowas das Problem ist - die Kollisions-Extension nutze ich nämlich in genau der releasten Version für Nullpunkt Smile


Danke soweit für die Resonanz! Smile

ComNik

BeitragDi, Jun 01, 2010 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich weiss nich ob das hilft, aber Rechtsklick -> Projektmappe erstellen endet in meinem VC# mit einem Erstellen erfolgreich.

Testprojekt Builds haben aber das gleiche Problem Sad

lg
ComNik
WIP: Vorx.Engine

DaysShadow

BeitragDi, Jun 01, 2010 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstellen ist nicht das Problem, beim Ausführen kommt der Fehler.

MfG DaysShadow
Blessed is the mind too small for doubt
  • Zuletzt bearbeitet von DaysShadow am Di, Jun 01, 2010 19:02, insgesamt 2-mal bearbeitet

Fetze

BeitragDi, Jun 01, 2010 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist jetzt genau das Problem? Schlagen die Builds der Testprojekte fehl, oder tritt ein Fehler auf, wenn sie erstellt sind und gestartet wurden?

1. Wenn letzteres der Fall ist: Wenigstens im Debugmodus sollten bei Kompilierung innerhalb der Projektmappe weitere Informationen abrufbar sein, also genaue Position des Fehlers im Code oder weitere Details. Kann das mal wer debuggen?

2. Wenn ersteres zutrifft, könnte sich ein Blick in die Projektmappenkonfiguration oder die Eigenschaften der betroffenen Projekte lohnen.


Edit: Okay, danke DaysShadow. Goto 1.

DaysShadow

BeitragDi, Jun 01, 2010 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
"Der Typeninitialisierer für "Fetze.Module.ZweiDe" hat eine Ausnahme verursacht."

ZweiDe.Init ruft das hervor.

Ahja, Fetze, wäre eine Befehlsübersicht möglich oder gibt es die schon? Eine pdf mit sowas fänd ich prima, wenn es nicht zuviele Umstände macht.

MfG DaysShadow
Blessed is the mind too small for doubt

Fetze

BeitragDi, Jun 01, 2010 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm... nichts genaueres..?.. nagut. Ich lade mir mal ebend VS2010 Express und sehe mir das näher an. Melde mich zurück.

Zur Befehlsübersicht würde ich vorschlagen, du nutzt die Klassenansicht von Visual Studio, die ist eigentlich recht gut benutzbar und erfüllt im Wesentlichen denselben Zweck. Entweder findest du sie standardmäßig rechts im Layout oder du kannst sie über das Ansicht- oder Fenster-Menü einblenden. Smile
Wenn man ne Funktion o.Ä. gefunden hat, die passend / interessant klingt, einfach doppelt drauf klicken und man ist direkt im zugehörigen Codefile. Geht natürlich nur in der Projektmappe des Archivs oder anderen Projektmappen, die die ZweiDe-Projekte beinhalten. Für alle anderen sind die aus den <summary>-Kommentaren im Code erzeugten .xml-Dokumentationsdateien, die dann zu den meisten Befehlen in der Autovervollständigung (für wenigstens eine Überladung der Funktion) Kommentare anzeigen. Alles in allem im Vergleich zu anderen Modulen relativ gut dokumentiert Smile

Wem das so nicht reicht und wer unbedingt noch eine Nicht-VS-Funktionsübersicht haben will, kann sich mit Tools wie "Sandcastle Helpfile builder" auch eine .html- oder .chm-Hilfedatei generieren lassen. Würde aber eher davon abraten, das macht viel Arbeit und ist letztendlich auch nicht viel besser als die Klassenansicht in VS. Laughing
  • Zuletzt bearbeitet von Fetze am Di, Jun 01, 2010 19:12, insgesamt einmal bearbeitet
 

Sora

BeitragDi, Jun 01, 2010 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Fehler kommt direkt schon, wenn du nachdem du ein neues Projekt -> ZweiDe erstellt hast, versucht den Code zu kompilieren.

Vielleicht hilft dir das:
Code: [AUSKLAPPEN]

Unbehandelte Ausnahme: System.TypeInitializationException: Der Typeninitialisier
er für "Fetze.Module.ZweiDe" hat eine Ausnahme verursacht. ---> System.IO.FileLo
adException: Die Assembly im gemischten Modus wurde während Version v2.0.50727 d
er Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Ko
nfigurationsinformationen geladen werden.
   bei Fetze.Module.ZweiDe..cctor()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Fetze.Module.ZweiDe.Init(Int32 gfxWidth, Int32 gfxHeight, Int32 gfxBitDep
th, Boolean isWindowed, Int32 swapInterval, Boolean noResize, Int32 aaLevel)
   bei ZweiDeProjectTemplate1.Program.Main(String[] args) in ***visual studio 2010\Projects\ZweiDeProjectTemplate1\ZweiDeProjectTemplate1\Pr
ogram.cs:Zeile 15.

Fetze

BeitragDi, Jun 01, 2010 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Leute, Problem gefunden: Ihr müsst unter Viual Studio 2010 in den Projekteigenschaften des zu startenden Projekts unter "Anwendung" als Zielframework .Net 3.5, 3.0 oder 2.0 angeben. Das funktioniert auch beim Projekttemplate! Werde am hochgeladenen Source aber erstmal nichts ändern, da das beim Konvertieren zu einer Visual Studio 2010 Solution ohnehin abgeändert wird.

Der Auslöser des Problems ist vermutlich eines der Zugrundeliegenden Tao.*.dll-Module. Das Tao-Framework wrappt OpenGL, Glfw, FreeType, etc. für C# und ist auf .Net 2.0 ausgelegt. Mit .Net 4.0 wurde da wohl irgendwas inkompatibel. Ließe sich vllt mit zusätzlichen Manifestdateien oder einem 4.0-Rebuild des Tao Frameworks beheben, aber das müsst ihr selbst machen, wenn ihr unbedingt .Net 4.0 wollt, für sowas fehlt mir grad echt die Zeit Laughing

Vermutlich werdet ihr aber mit .Net 3.5 gegenüber 4.0 nicht wirklich etwas vermissen. Smile

Fetze

BeitragDo, Jun 03, 2010 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
coolo hatte per PN ein, zwei Fragen zu ZweiDe gestellt. Mit seiner Zustimmung poste ich mal nen Auszug daraus hier, falls noch andere ähnliche Fragen haben:

coolo hat Folgendes geschrieben:

Wie ist es möglich eine "Punkt auf Textur" Kollision zu programmieren, ohne die Textur vorher in eine Pixmap umzuwandeln, da die Textur ständig geändert wird ist es nicht möglich das "vorraus" zu berechnen. Hierbei wäre nur die Information "kollidiert" und "kolllidiert nicht".

Zur Kollision: ZweiDe unterstützt keine Per-Pixel Kollision wie BlitzMax, da Kollisionen per-Pixel zu prüfen in den allermeisten Fällen langsam, unflexibel und sehr beschränkt ist. Kollisionen musst du mit der ZweiDeXT.Collision-Extension prüfen, ein entsprechendes Anwendungsbeispiel findest du in Testprojekt2 aus der Download-Projektmappe. Smile
Das Kollisionssystem in ZweiDe basiert auf konvexen Polygonen und Kreisen (in beliebiger Kombination): Man definiert ein Collision.Shape aus beliebig vielen Primitives. Das kann man dynamisch zur Laufzeit tun oder ein fertiges Shape aus einer (lesbaren Text-)Datei einlesen. Dann instanziiert man ein Collision-Objekt unter Angabe eines Collision.Shape und ruft initial und bei sonstigen Veränderungen von Position, Rotation oder Skalierung dessen Update-Methode auf.
Um zwei Collision-Objekte auf Kollision zu prüfen, benutzt man obj1.CollideWith(obj2, ...), wobei man sich optional zusätzlich zu Kollidiert/Nichtkollidiert die Kollisionspunkte oder den MTV zurückgeben lassen kann. Der MTV ist der Vektor, um den Objekt 1 verschoben werden muss, damit gerade so keine Kollision mehr stattfindet. Reagiert man in Kollisionen durch Anwendung des MTV jedes Frame, bekommt man den typischen "Sliding"-Effekt zu sehen: Objekt 1 "schlittert" an der Oberfläche von Objekt 2 entlang. Im Testprojekt2 sind entsprechende zwei Zeilen im Code unter "#region Collision object 0" auskommentiert.

coolo hat Folgendes geschrieben:
Außerdem noch eine andere Frage: Wie sieht es mit Platformunabhängigkeit aus? Wie viel Aufwand wäre es ZweiDe auf Mac OS X zum laufen zu bringen? Hast du das schon probiert?

Was die Plattformunabhängigkeit betrifft: Solange du, wie standardmäßig der Fall, irrKlang für Sound nutzt, ist ZweiDe ziemlich sicher nicht unter Mac oder Linux lauffähig, da die irrKlang.Net Assembly dies nicht unterstützt. Wenn du irrKlang rausschmeißt und dein eigenes Soundsystem (zB. mit Tao.OpenAL) schreibst, erhöhst du die Chance, aber letztendlich bleibt es trotzdem beim Vielleicht. Schau dir diesbezüglich mal das "Mono"-Projekt zur Portierung von .Net auf Linux und Mac an. Letztendlich würde ich aber sagen: Solange du nicht einiges an C#- .Net- und ZweiDeInterna-Erfahrung hast, würde ich dir vom Versuch einer Portierung aus Frustgründen abraten. Das wird sicher nicht einfach. Denkbar bleibt es.




Kleine Anmerkung am Rande: Wer gerne seine Fortschritte und Experimente mit ZweiDe vorstellen möchte, kann dies von mir aus auch gerne in dem Thread hier tun, thematisch passts ja gerade - dann muss dafür nicht jeder seinen eigenen Thread eröffnen.

ComNik

BeitragDo, Jun 03, 2010 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,

zur Antwort habe ich eine allgemeine Frage Embarassed

Gibt es eine Methode zum verhindern dieses Sliding effekts? Oder muss das mit Reibung gelöst werden?

[Edit:]Danke, dann klappt das ja schonmal^^.[/Edit]

Danke,
ComNik
WIP: Vorx.Engine
  • Zuletzt bearbeitet von ComNik am Do, Jun 03, 2010 21:47, insgesamt einmal bearbeitet

Fetze

BeitragDo, Jun 03, 2010 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Sliding-Effekt ist, anders als das in deiner Antwort jetzt klingt, kein Fehler sondern logische Konsequenz des Systems. Es zeigt, dass das Kollisionssystem ein Eindringen des kollidierten Objekts ordnungsgemäß verhindert. Natürlich ist es am Programmierer, auf eine festgestellte Kollision auch ordnungsgemäß zu reagieren, denn Kollisionsabfrage impliziert noch keine Physik. Wer will, kann natürlich physikalische Berechnungen wie (von dir genannt) Reibung, Abprallen von Objekten, etc. implementieren, je nach Bedarf.

coolo

BeitragFr, Jun 04, 2010 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

Erster Erfolg meines Spiels. Die Landschaft ist bereits editierbar. Das heißt, es ist ohne weiteres möglich Landschaftsstücke zu entfernen, hinzuzufügen und anzumalen. Auf Kollision kann auch geprüft werden (Kreis, Linie, Rechteck, Punkt und Texture[=Sehr langsam da hier auf Pixmap Basis gearbeitet wird]).

Als nächstes kommen die Gameobjects (und somit auch der Spieler), danach ein Mapeditor.

Ach noch zwei kleine Fragen Fetze:
1) Wie verwendet man diese UpdateGrids, diese scheinen ja sehr cool zu sein. Ich bin aber zur Hölle nicht in der Lage diese zu verwenden, andauernd kommt irgendeine Syntax Fehlermeldung. Ein kleines Sample würde mir genügen
EDIT: Nun bin ich per Bruteforce auf die Lösung gekommen. Ich bin in C# noch nicht so bewandert.

2) Wie verwendet man die CSScript Klasse, da sind so viele versch. Konstruktoren usw. da kenne ich mich leider auch nicht aus. Ein 10 zeilen Sample wäre hier auch schön.
Ich bin mir nicht sicher was an diesen Zeilen falsch ist:
Code: [AUSKLAPPEN]
script=new CSScript(path,null);
del=script.CreateDelegate(System.Type.GetType( "void", true, true ), "Update","Player");
del.DynamicInvoke( null );

Die dazugehörige Klasse schaut folgendermaßen aus:
public class Player {
        public static void Update() {
            System.Console.WriteLine( "PLAYER UPDATE" );
        }
    }
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

Gehe zu Seite Zurück  1, 2, 3 ... 16, 17, 18, 19, 20  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group