Laden...

Forenbeiträge von Chaoscoder Ingesamt 51 Beiträge

11.09.2007 - 18:39 Uhr

Original von LonelyPixel
Zurück zum Thema: Ich glaub das mit dem "Betriebssystem von Null weg" hat sich mittlerweile erledigt. 😉

Ja hat sich erledigt 🙂

Mit Bedienbarkeit Windows stimme ich voll überein. Das ist auch der Grund wieso WIndows immer noch verbreiteter ist (neben Kompatibilität). Schade finde ich nur, dass noch nicht beides vereint wurde, so schnell wie Linux und so bedienerfreundlich und kompatibel wie Windows. Aber mal sehen was die Zukunft bringt.

11.09.2007 - 17:30 Uhr

So isses, das Kind das man ständig rumträgt wird nicht richtig laufen lernen.

11.09.2007 - 17:27 Uhr

Das Thema hat sich entwickelt, möglicherweise sollte man es verschieben.

Ein Glaubenskrieg ist nicht notwendig, Linux und Windows verhalten sich wie Äpfel zu Birnen.

11.09.2007 - 14:35 Uhr

Also der linke kleine Finger ist arbeitslos bis auf dass das er für die Shift und Strg-Taste zuständig ist.
Der rechte kleine Finger drückt mir immer auf Enter, manchmal auch der rechteennw Ringfinger.
Buchstaben schreiben tu ich mit allen Fingern ausser dem linken kleinen und dem rechten kleinen und dem Ringfinger.
Der linke Daumen ist komplett arbeitslos, der rechte Daumen drückt die Leertaste.

Also kein 10-Finger System aber meiner Meinung nach ein bereits recht ausgefeiltes System g (tipp schon mindestens seit ich 8 war oder so, damals noch ein 386er mit 4mb ram wenn ich mich recht erinnere)

11.09.2007 - 14:24 Uhr

Linux ist mir einfach sympathischer. Ich hab einfach das Gefühl, dass es mit Systemressourcen besser umgeht. Und Windows war immer schon von Version zu Version ressourcenfressender. Und noch ein Punkt warum mir Linux sympathischer ist: OpenSource. Da hat man einfach ein gutes Gefühl wenn man weiß, dass das Betriebssystem das gerade läuft von tausenden Computer-Spezialisten programmiert/debuggt und bewertet wurde.

11.09.2007 - 13:31 Uhr

Also in Sachen Programme und Kompatibilität ist Linux ja wirklich am aufholen, und in den nächsten Jahren halte ich es sogar für möglich, dass Linux Microsoft früher oder später aus dem Betriebssystem-Markt rausschmeißt, spätestens dann wenn der Linux-Kernel einen standardmäßige Win32/Win64 Interpreter installiert hat (oder optional). Aber dafür gibt es eh schon Wine, was allerdings für den 0815 User noch zu kompliziert ist so finde ich.

In Sachen Performance hat Linux klar die Nase vorn, vorallem was Dateien kopieren angeht, das hab ich schon bemerkt, das sind auf meinem System sicher geschätzte 30-40% schneller.

Also Seit ich Linux installiert habe verbring ich mehr als 90% meiner Computerzeit im Linux, weil ich dort alles machen kann was ich mit Windows auch kann (außer Windows Spiele spielen aber naja) Ein riesen Vorteil von Linux ist das rasante Hochfahren und Herunterfahren, was wohl teilweise daran liegt das Linux ohne Registry auskommt.

@LonelyPixel: Danke für deine Geschichte, jetz is mir klar wie lang sowas dauert. Ist wohl auch der Grund dafür warum es nur so wenige Betriebssysteme gibt, vorallem für moderne PCs. Allein die Menge an Fehlern die man beim Progammieren machen kann ist ja riesig.

10.09.2007 - 15:17 Uhr

Zum RAM: Mich stört nur wenn der RAM voll ist und das Windows anfängt auf der Festplatte auszulagern. Also ich hab so an die 480 MB RAM und wenn Windows fertig geladen ist (mit ein paar Antivirus Diensten usw.) dann hab ich noch gerade 180 MB frei. Und dann immer diese komischen Laderuckler bei Windows. Wenn ich einen Ordner erstellen will, dann klicke ich mit der rechten Maustaste - dann rattert ca. 5 sekunden lang die festplatte - NEU - wieder 2 bis 3 sekunden rattern - dann ORDNER - wieder rattern - und dann ist der Ordner mal fertig. Das ist doch Irre! Und liegt wohl daran dass Windows die Context-Menü einträge aus der Registry lädt, aber das allein kann es nicht sein.

Edit: Danke für den Links auf ReactOS, das ist genau das richtige für mich.

10.09.2007 - 15:14 Uhr

Hallo Herbivore,

ja die Treiberproblematik ist eigentlich auch das was mich am meisten abschreckt.
Ich muß mich mal umsehen wie es mit Linux so aussieht, denn da ist ja alles Open-Source, und ein Linux basierendes System auf meinen Vorstellungen zu entwerfen ist verglichen damit ein komplett neues Ding zu machen ja tausendmal leichter, obwohl immer noch unglaublich aufwändig. Aber die Treiberproblematik wäre damit beseitigt. Naja und das mit den Programmen ist auch Mist, die einzige Möglichkeit heute noch ein Betriebssystem zu etablieren ist es kompatibel mit Windows-Programmen zu machen.

@Programmierhans: Danke für die Links.

Naja ich träum mal weiter von meinem Betriebssystem und lerne daweil Linux kennen.

Ich habe irgendwie den unheimlichen Drang irgendetwas zu programmieren.

10.09.2007 - 14:48 Uhr

Hallo Community.

Weil mich immer wieder gewisse Dinge an Betriebsystemen wie z.b. Windows stören habe ich mir überlegt wie mein eigenes Betriebssystem aussehen würde. Dinge die mich an Windows stören sind z.b. das Windows ein absoluter Ramfresser ist und beim Hochfahren sehr stark an der Festplatte arbeitet, das liegt wohl an der Registry, an den ganzen Hintergrunddiensten, dynamische Programme (COM und was es da alles gibt) usw.

An Linux, das ich zurzeit am anlernen bin, gefällt mir, dass es schnell hochfährt und wenig RAM beansprucht was wohl daran liegt, dass alles in Dateien existiert und es standardmäßig keine Registry oder soetwas braucht.

Aber nun zu meinen eigenen Ideen:

Mein Betriebssystem würde sich auszeichnen durch:

  1. verschiedene Betriebsmodi: z.b. einen Anwendungsmodus und einen Spiele-Modus. Im Spiele-Modus fährt das Betriebssystem ähnlich wie eine Konsole hoch (z.b. X-Box) und kann auf viele Dienste verzichten, außerdem bieten sich da viele Optimierungen an, die natürlich auf Kosten der Flexibilität zwischen Anwendungen, die man bei Spielen nicht braucht, kommen.

  2. das Betriebssystem teilt jedem größeren Programm eine sogenannte "Domain" zu, das umfasst einen eigenen Speicherbereich für Programmcode (Executeable) und einen dynamischen Speicherbereich für Programmdaten. Der Vorteil von Domains ist, dass sie parallel laufen können, also in einem echten parallel-processing, die dafür nötige Hardware muss wahrscheinlich erst geschaffen werden. Dies ist dadurch möglich, dass Domains sogenannte "Gates" besitzen, dass sind Schnittstellen wo in Domains laufende Programme Daten abladen oder aufnehmen können. Das verschieben der Daten von einer Domain zur anderen übernimmt das Betriebssystem. Der Vorteil dieser Aufspaltung liegt z.b. darin, dass es nicht zu solch lächerlichen Rucklern kommen kann wie bei Windows, wenn man z.b. ein Programm ladet, oder ein Programm sehr prozessorlastig ist, dass dann auf einmal die Maus ruckelt, oder andere Programme dadurch geblockt werden. Außerdem werden Festplattenaktivitäten gleichmäßig aufgeteilt, so wie alle anderen Ressourcen.

Das Verhalten der Domains, sowie die Prozessorzuteilung, Speicherzuteilung usw. soll während des Betriebs einstellbar sein.

Ich bin mir sicher, dass durch obengenannte Optimierungen noch sehr viel mehr aus älteren Computersystemen rauszuholen ist.

Weiß jemand ob es virtuelle Maschinen gibt, mit denen ich ein eigenes Betriebssystem testen kann? Falls nicht hol ich mir einen alten PC und nimm den als Versuchsobjekt.

Falls sich jemand mit Betriebssystemprogrammierung auskennt und/oder Internetseiten kennt die als Einführung in das Thema dienen wäre das sehr hilfreich.

Würd mich interessieren, ob ihr die obengenannten Umrisse für umsetzbar/praktikabel haltet oder vielleicht noch Vorschläge hättet.

mfG, Chaoscoder

05.08.2007 - 20:08 Uhr

Achja, danke für den AntiAlias Tipp, das kann ich dann gleich in mein Setup für Anzeigeeinstellungen einbaun, ist sowieso komfortabler als dass immer in den Anzeigeeinstellungen der Grafikkarte einstellen zu müssen.

05.08.2007 - 20:07 Uhr

Hm, von Kollisionssachen hab ich leider keine Ahnung weil noch nie gemacht aber ich würde es vorerst so machen:

Also mein Terrain-Mesh erzeuge ich ja aus einer Heightmap, die bei mir programmintern eine Array von floats ist (später vlt. Bytes müsste auch reichen). Also für Heightmap-basierte Objekte zahlt es sich sicher aus die Kollisionsabfrage mit den Daten aus der Height-Map zu machen als mit dem Mesh (wie Mesh-Kollisionen funktionieren weiß ich nicht)

Eine Gerade erstellen, die normal zur Basisebene des Terrains steht (z.b. XZ Ebene) und an der Oberfläche des Terrains beginnt (Berechnung aus height-map, müsste mathematisch der Mittelwert der vier umgebenden Werte sein, glaube ich) und die Kugel im Mittelpunkt schneidet. Dann noch die Länge der Gerade mit dem Radius der Kugel vergleichen. Wenn kleiner --> Kollision. Wenn größer, keine Kollision. Das ist natürlich jetz nur für sehr flache Terrains korrekt berechnet. Ich hab allerdings keine Ahnung wie das normalerweise berechnet wird. Hm, am besten du machst dir selbst Gedanken. Aber falls ich das Problem mal gelöst habe poste ich dir das natürlich und den zugehörigen Code.

12.07.2007 - 15:50 Uhr

Naja zurzeit geht nix voran.
Bin am Überlegen eine fertige Engine zu verwenden wie z.b. Ogre und was für Physik.

Das mit der Kantenglättung kann man sicher irgendwo in die d3d-params einstellen oder im renderstate, mal sehen. Werd die Einstellung dann im Setup einbauen.

Also, wenn ich wieder mal fest am werkeln bin und sich was getan hat werde ich hier sicher wieder posten!

21.06.2007 - 01:28 Uhr

Grafiken für Wasser wären mal schön, vielleicht sogar animiert.
Wenn du dann noch Grafiken für Schiffe hättest wär es schon ganz fein.
Soundeffekte....bischen Schnikschnak 🙂 (falls du noch nicht hast ich habs nicht getestet nur Screenshot angesehen)
Du könntest auch noch Koordinaten zu den Feldern schreiben
Und eine Liste welche Schiffe der Gegner noch hat

21.06.2007 - 01:10 Uhr

Gleich viel übersichtlicher 🙂

20.06.2007 - 15:48 Uhr

Original von B1rd

  
cbName.Items.Add(k.strNachname.ToString()+ " " + k.strVorname.ToString());  
  

Einen String mit ToString() zu bearbeiten ist wohl überflüssig. Oder macht das irgendwelche Formatierungen?

20.06.2007 - 15:45 Uhr

Es gibt folgende statische Funktion:


static Form Form.ActiveForm()

Vielleicht ist das hiflreich
Ansonsten ist eine Referenz sicher hilfreich.
Ich würde eine globale Klasse vorschlagen, die alle Forms enthält, dann kannst du von jedem Punkt im Code auf alle Formen zugreifen.


public static class Globals
{
   public Form Hauptform;
   public Form Aboutform;
   // usw. usf.
}

13.06.2007 - 22:38 Uhr

So, hiermit revidiere ich die Aussage im ersten Post, dass ich vorhabe das Projekt alleine fertigzustellen. Nachdem ich draufgekommen bin, dass NET Programme ohnehin Quellcode-transparent sind suche ich hiermit nach Leuten, die Lust haben sich dem Projekt anzuschließen. Außerdem ist das Projekt für einen einzelnen zu groß. Aufgabenbereiche sind momentan unter anderem folgende:

* Grafik-Engine - Unterstützung für verschiedene Arten von Textur-Mapping (Bump, Specular...), Mesh-Loader für verschiedene Formate, Mesh-Generator der ein Mesh aus Primitiven erzeugt während der Laufzeit, vieles vieles mehr (Animationssystem mit Bones usw.)
* Mathematik Einheit - Alle möglichen Funktionen für Vektoren, Ebenen, Kugeln und Funktionen um diese miteinander zu schneiden usw.
* Physiik-Einheit: Aufbauen einer Physik Engine, anfangs eine einfache mit BoundingSphere Kollisionen später dann mit wahlweise Polygon-Genauen Kollisionen und noch später vielleicht deformierbare Meshes (vlt. mit Vertex Shader muss mich da erst einarbeiten wie das funktioniert)
* Sound-Engine - Normaler Stereo Sound und alle möglichen Sachen wie z.b. Lautstärkereduzierung mit Entfernung der Quelle, Halleffekte, Doppler Effekt usw.

Wer mitmachen will muss sich natürlich an gewisse Konventionen halten, damit das Projekt ordentlich und übersichtlich bleibt:

* Objektorientierter Ansatz (keine statischen klassen mit ausnahme: statische klassen als funktionsträger und ausnahme für globale Variablen, zurzeit eine Klasse: nennt sich Globals)
* Quellcodekommentierung an stellen, wo es sinnvoll ist
* Mit der Kapselung nimm ich es für die meisten Klassen nicht so streng, weil dadurch gewisse Objekte leichter angesprochen werden können mit kürzerem Quellcode. Für komplizierte und kritische Klassen ist Kapselung vorgesehen.
* Konventionen für Namensgebung und Klassengestaltung (teile ich noch detailliert mit wenn jemand Interesse hat)
* Ein paar allgemeine Regeln, was vermieden werden soll und was bevorzugt (codetechnisch)

Ein gewisses Grundverständnis und ein wenig Erfahrung mit Programmierung und die Kenntnis von Grundlagen sind Voraussetzung.

Damit ihr euch ein Bild machen könnt veröffentliche ich hiermit den Source-Code. Die Ordnerstruktur ist in der "Ordner.txt" erklärt.

Zum Schluss noch:
Ich habe kein Problem damit wenn jemand auf unbekannte Zeit lang mitmachen will. Weil ich selbst auch nicht jeden Tag lust oder Zeit habe zu programmieren soll sich keiner gebunden fühlen. Wir haben keinen Zeitplan, in der Hinsicht ist es ein offenes Projekt.

Falls jemand meinen Code verwenden will, darauf aufbauen will oder einzelne Sachen rauskopiert so hab ich kein Problem damit.

Falls jemand einfach nur Fragen hat stehe ich auch zur Verfügung!

Link: Mankind Source vom 13.6.07

13.06.2007 - 22:00 Uhr

Wie wärs mit einer Drag&Drop Klasse, falls es sowas nicht schon gibt:


public class DragDrop
{
   object Objekt;   // Das aufgenommene Objekte

   public void Aufnehmen(object Objekt)
   {
      this.Objekt = Objekt;
   }

   public object Ablegen()
   {
      return Objekt;
   }
}

13.06.2007 - 21:54 Uhr

public Color MischeFarben(Color A, Color B, float AnteilA)
{
   float R, G, B;
   float AnteilB = 1 - AnteilA;

   R = (float)(A.R) * AnteilA + (float)(B.R) * AnteilB;
   G = (float)(A.G) * AnteilA + (float)(B.G) * AnteilB;
   B = (float)(A.B) * AnteilA + (float)(B.B) * AnteilB;

   return Color.FromArgb((byte)(R), ((byte)(G), ((byte)(B));
}

* AnteilA reicht von 0 bis 1 (= 0 bis 100%)
* AnteilB errechnet sich logscherweise aus 1 minus AnteilA.
* Temporäre Float-Werte werden verwendet um zu verhindern, dass Rundungsfehler vor der Addition auftreten.
* Nicht getestet!!!

13.06.2007 - 21:43 Uhr

Der Grund warum es so langsam ist, ist, dass du das Problem von der falschen Seite her angehst.

Wenn du z.b. nur 10 Ameisen hast brauchst du ja auch nur 10 Pixel zeichnen. Und nicht 100x100 Pixel, es sei denn deine Ameisen sind größer als 1x1 Pixel aber dann sollste du Bitmaps verwenden. Dass das PutPixel von GDI sehr langsam ist hat wahrscheinlich den Grund weil der Buffer bei jedem PutPixel locked und wieder unlocked wird. Aber 10 Pixel x 10 Frames pro Sek., das ist sicher kein Problem.

Also ich würde folgenderweise vorgehen (pro Frame):

  • Den Malvorgang im PictureBox.OnPaint Event coden
    1. PictureBox clearen (z.b. mit weißen Hintergrund übermalen), dafür gibs sicher eine Funktion
    1. Alle Ameisen durchgehen und jede einzelne Ameise malen mit den Variablen PositionX, PositionY und vlt. Farbe

Für deine Ants kann ich dir nur empfehlen ein ArrayList zu verwenden (using System.Collections). Dein map[] Array ist für die Grafikdarstellung überflüssig.

Falls du später mal mehr ants hast und die Darstellung trotz allem ruckelig wird dann sieh dich mal nach einfachen C#-Controls um die DirectX oder andere schnelle Malfunktionen unterstützen. Vermeide es nur auf jeden Fall größere Flächen und so mit einem Loop zu zeichnen und jeden Pixel einzeln zu setzen. Für sowas gibt es immer eigene Funktionen, z.b. DrawRectangle, DrawBox oder so ähnlich.

10.06.2007 - 12:23 Uhr

Ist halt eine zweischneidige Klinge. Ich find's ok dass man überall Code klauen kann, aber nicht ok wenn man damit Geld macht. Naja.

10.06.2007 - 12:05 Uhr

Hey du hast Recht, NET Programme sind komplett transparent. Mal schaun ob es in den Optionen da irgendwas gibt...

10.06.2007 - 11:56 Uhr

Soweit ich weiß machen decompiler nix anderes als den Maschinencode (eine Sprache die kaum einer versteht) in eine andere Sprache umzuwandeln die auch keiner versteht. Die logische Strukturierung wie du sie im Quellcode hast geht dabei größtenteils verloren.

Aber in gewisser Weise muss ich dir Recht geben, ich weiß nicht was .NET so alles an Debug-Informationen reinspeichert wenn man das ganze im Debug kompiliert, da kann man vlt. wieder einiges daraus machen. Aber nichts wirklich brauchbares.

10.06.2007 - 06:05 Uhr

lol du bist echt witzig!
also aus einer exe kann man sowas nie im leben rausklauen

Das wäre so als wenn du dir von außen ein nagelneues Auto anschaust und dann zuhause 1:1 den motor nachbaust.

Bleibt halt nicht sitzen auf deinen potentiellen 5.000 Dollars.

Ganz nebenbei: Ich bin auch schon potenzieller Multimillionär und Lamborghini fahrer g

09.06.2007 - 23:32 Uhr

Naja wenn du eine .exe Datei inst netz stellst brauchst du keine angst haben dass dir einer deine KI klaut.

Achja was deine supertolle KI angeht...
Blöffst du manchmal? Aaach.....

09.06.2007 - 20:28 Uhr

Achja Vista - ganz vergessen dass es das auch noch gibt. Die haben sicher eine eigene Abteilung die nur Icons erstellt, is ja auch irgendwie logisch dass die edel aussehen müssen schließlich sollen Millionen verschiedene Nutzer diese attraktiv finden.

09.06.2007 - 20:03 Uhr

Wenn du eine ernsthafte KI machen willst solltes du ein Bewertungssystem entwickeln. Die KI sollte das eigene Blatt bewerten können, nach einem Punktesystem. Da fliessen z.b. Wahrscheinlichkeitsrechnungen ein, z.B. mit welcher Wahrscheinlichkeit das Blatt besser werden kann oder schlechter. Wenn die Wahrscheinlichkeit dass es besser wird höher ist als dass es schlechter wird dann zahlt es sich aus neue karten zu ziehen. Außerdem sollte die KI die Karten des Spielers bewerten können nur bleibt da leider nicht viel Möglichkeit, weil die KI ja nicht das Poker-Face des Spielers sehen kann. Aber ein Vorschlag wäre z.b. dass die KI, je nachdem gegen welchen Spieler sie spielt, sich bestimmte Muster merkt, z.b. wie lange der Spieler zum Nachdenken braucht, und dann Rückschlüsse zieht welche Zeitdauer z.b. mit einem guten Blatt (der Spieler ist sich sicher) oder mit einem schlechten Blatt (der Spieler denkt länger nach) zusammenhängen.

Du solltest auf jeden Fall Grafiken verwenden, denn sonst ist das Spiel wirklich unspielbar für den Durschnitts-User. Am besten verwendest du Picture-Boxes für die Grafik-Anzeige, für ein Kartenspiel reicht das aus, weil man keine schnelle oder flickerfreie Darstellung braucht.

09.06.2007 - 19:54 Uhr

Welche coole Grafiken hat Microsoft eigentlich? Das Logo ist simpel und sonnst kenn ich kaum Grafiken von Microsoft.

08.06.2007 - 16:49 Uhr

Alle Releases gibt es hier zu laden:

Mankind v0.001 - Erste Techdemo
Mankind v0.002 - Zweite Techdemo
Mankind v0.003 - Beleuchtung Test
Mankind v0.004 - Partikel System die 1.e

Die Steuerung ist "On-Screen" erklärt z.b. Befehle wie Gitternetzmodus, Texturen abschalten oder Zeit beschleunigen oder verlangsamen.

Bei Bugs oder Grafikfehlern usw. wäre es nett wenn ihr hier kurz was dazu schreibt und mir die im Spielordner befindliche Mankind.log mitschickt, da werden Tastatureingaben und alles andere geloggt, damit ich nachvollziehen kann wo der Fehler passiert ist. (Bitte nur Bugs von der neuesten Version (0.004) posten!!!)

Keine Angst! Das Programm loggt nur die Tasteneingaben die ihr in Mankind macht, ansonsten wird nichts geloggt.

Momentan sind mir keine Bugs bekannt aber Direct3D9 ist Voraussetzung.

08.06.2007 - 16:06 Uhr

Meine Engine hat sich weiterentwickelt und ich habe jetzt Lichter und ein einfaches Partikelsystem eingebaut, sowie ein kleines Terrain generiert aus einer Height-Map.

Falls jemand Fragen hat (auch programmtechnisch) so werde ich sie gerne beantworten.

Hier eine kleine Vorschau auf Version 0.005, ein Test der Physik Engine.
Features in v0.005:

  • Kugeln
  • BoundingSphere Kollisionsabfrage (simpel)
  • Elastische Stöße (Billiardkugelprinzip)
  • Kollision der Körper mit dem Terrain
  • evtl. Kollision der Partikel mit anderen Körpern (muss hier noch ein Ausschließungsprinzip finden um die CPU zu schonen)
  • Luftreibung für Kugeln (Annäherung Reibung = Geschwindigkeit^2 * Faktor)

Sachen wie Impulserhaltung sind selbstverstädnlich.

Und hier ein Vorschau auf v0.005 - zeigt die Landschaftsform in der ich die Physik=Kugeln testen werde.

06.06.2007 - 12:15 Uhr

Möglicherweise geht es auch so mit dieser eingebauten Funktion:

object object.MemberwiseClone();
06.06.2007 - 04:14 Uhr

Ja das denk ich auch, danke für die raschen Antworten.

Edit: ist ja auch viel einfacher wie diese komplizierten Kopier-Algorithmen in den Links

06.06.2007 - 02:03 Uhr

Ich möchte hier kurz mein Projekt vorstellen für alle Interessierten. Es handelt sich um Spiele-Programmierung.

Ich arbeite an einem Spiel, das ich vorhabe alleine fertig zu stellen. Der Zeitraum ist offen und wird möglicherweise bis zu einem vernünftigen Release 3, 4 Jahre oder noch sehr viel länger dauern, je nachdem wie es sich entwickelt.

Geplante Features des Spiels:
* Sci-Fi Singleplayer RPG mit langer Spielzeit (1st Person oder 3rd Person)
* Waffen, Muntion und alles andere können vom Spieler selbst hergestellt und beliebig modifiziert werden
* Ebenso können Mechs gebaut werden die der Spieler später brauchen wird um härter Gegner zu überstehen
* Spieler kann Häuser oder Raumschiffe selbst einrichten
* Skillsystem mit verschiedenen Abteilungen (z.B. Elektronik, Mechanik, Medizin, Programmieren (man kann auch CPUs programmieren)...)

Geplante Features der Engine:
* Alle üblichen Sachen die sonst auch überall drin sind: Bump-Mapping, Specular Mapping, Schatten, Normal-Mapping, LOD...
* Ein NURBS-Ähnlicher dynamischer Terrain Generator: Das Terrain wird mit Nurbs definiert und während dem Spiel in eine Mesh gecachet. Diese Mesh wird dann noch mit Octree optimiert gerendert. Detailstufen für das Terrain-Mesh sind stufenlos einstellbar, genauso wie das Octree-Detail.
* Ein Displacement-Mesher der eine flache Textur räumliche Struktur gibt. Wenn der Spieler also ganz nahe an eine Wand läuft wird aus der Bump-Textur oder Normal-Textur ein Mesh generiert. Der Spieler sieht ein dreidimensionales Objekt anstatt einer flachen Wand, das auch richtig beleuchtet wird. Die Engine entscheidet ob ein Displacement-Mesher in der jeweiligen Situation sinnvoll ist (Wahrscheinlich eh fast nie) und setzt ihn nur ein wenn genug Performance zur verfügung steht.
* Ein dynamisches Performance-Watch System. Der Spieler gibt an, welche Frame-Rate er erreichen möchte. Das Spiel sucht dann automatisch die geeigneten Einstellungen für LOD usw. Natürlich können Einstellungen auch erzweungen werden.

So, das war nur ein kleiner Überblick. Sobald es eine sehenswerte Tech-Demo zu sehen gibt werde ich sie hier natürlich posten. Zurzeit baue ich noch das Grundgerüst der Engine auf (Textur-Handler, Dateiformate, Virtuelle Dateisysteme). Im Moment hab ich eine Techdemo wo sich ein paar texturierte Würfel (einstellbar bis zu 10.000 oder mehr g) drehen und rumspringen.

Zum Schluss muss ich noch sagen, dass ich plane, das Spiel so zu gestalten, dass es nicht mehr als 10-20 Megabyte zum Download benötigt. Natürlich ist trotzdem alles im Spiel fein texturiert und modelliert, auch Sounds und Musik ist da mit drinnen. Falls da jemand ins Grübeln kommt: Ich hab mir etwas feines ausgedacht, mitdem ich das realisieren kann (Nein, das Programm lädt keine zusätzlichen Daten vom Internet oder sonstwoher)

Also ich bin mir fast sicher, dass sich hier so mancher eine Idee abschauen wird (vorallem vom technischen) aber was solls.

PS: Das Projekt bleibt Closed-Source. Wenn ein paar Editoren stehen werde ich mich vielleicht nach ein paar Leuten umsehen, z.b.:
* Leute die Texturen generieren
* Leute die Sounds generieren
* Leute die Models generieren
* Leute die die Map aufbauen
* Leute die Spielinhalte (Missionen / Quests) einfügen
usw. usf. ihr wisste eh was da alles zu tun ist, jede menge

Achja: Ein kleiner Screenshot kann nie schaden.

Edit: Ok, ich muss das Bild erklären. Es handelt sich dabei um ein Array von Würfeln, die alle mit Textur gerendert werden und nach einer Sinus/Cosinus Transformation bewegt werden. Die Ränder der Würfel kann man leider schlecht sehen, weil ich so eine dunkle Textur genommen habe.

05.06.2007 - 18:23 Uhr

Ich habe folgendes Problem.

Wenn ich zwei Objekte A und B derselben Klasse habe und schreibe:

A = B

dann führt das im Normalfall dazu, dass A zum selben Speicher verweist als B. Das heißt wenn ich nun Variablen innerhalb der Klasse B ändere verändern sich diese auch innerhalb von A weil ja A und B gleich sind.

Gibt es in C# irgendeinen Befehl oder Kennzeichner der wenn ich (A = B) schreibe sozusagen den Inhalt von B nach A kopiert, wobei A dann ein Klon von B ist und keine Instanzierung.

Ich würde es so machen:


public class cVektor3D
{
    public double x,y,z;

    public static cVektor3D operator =(cVektor3D a)
    {
        // Werte übernehmen und neuen Vektor zurückgeben 
    }
}


Einziges Problem: So wie's aussieht gibt es keinen "operator =" auf jeden Fall sagt der Compiler "Overloadable unitary operator expected".

Weiß jemand eine Lösung?

04.06.2007 - 22:41 Uhr

Du meinst sicherlich ein vorgegebener Style, der definiert wie ein Button auszusehen hat, egal wie man ihn dann letztendlich skaliert oder welchen Text er bekommt.
Also ein Style hat dann Eigenschaften für:
Strichtyp, Strichstärke, Farbe, Füllfarbe, Texttyp usw. usf.

Ich kenne da nur Corel-Draw da gibt es solche Styles.

31.05.2007 - 15:44 Uhr

Hm, falls du viel Zeit hast Versuch einen eigenen Ansatz zu machen. Pass aber auf dass du nicht das Rad neu erfindest. Viel Erfolg!

31.05.2007 - 15:39 Uhr

Ja ihr habt Recht je früher ich das mach desto besser...
Danke!
Mfg!

31.05.2007 - 13:17 Uhr

Wunderbar ich hab's, danke für die schnelle Antwort!
Nein DLL zahlt sich nicht aus.

Ich schreibe eine Spielengine (2D mit Rotationen, Alpha usw. mit Direct3D, später 3D) und da ist im Code eine Klasse für das Lesen und Schreiben von Texturdefinitionsdateien. Die will ich jetzt auch in einem Textur-Editor verwenden. Für so Kleinigkeiten zahlt sich eine DLL nicht aus. Nachteil ist natürlich, dass ich bei einem Update der Engine meistens auch ein Update des Editors mitliefern muss. Vielleicht mach ich später den Game-Code in eine DLL wenn das Projekt größer ist und die Funktionen die von den Editoren verwendet werden umfangreicher werden.

31.05.2007 - 05:24 Uhr

Ich hatte grad eine gute Idee.
Vielleicht könntest du in deiner Toolbar auch noch die Prozesse integrieren (wie bei der Windows-Leiste unten aber halt mit mehr Funktionen) Dann hätte man alles in einem und könnte die Standard Windows-Startleiste unten ganz weglassen (falls das windows-seitig überhaupt geht)
Fänd ich gut weil die standard-startleiste nimmt soviel platz weg
Die laufenden Programme oder Prozesse könnte man dann wahlweise als kleine Symbole darstellen, dann läuft die Taskleiste nicht so schnell voll. Und falls man Info über die Anwendung braucht einfach mit der Maus drüber und der Tooltip zeigt alle interessanten Eigenschaften (kann man dann in den Optionen einstellen)

31.05.2007 - 05:20 Uhr

Super Teil!
Einstellungen für Farbe und Textformatierung wäre noch sehr gut.

Ein Bug im Commands-Editor (Optionen): Wenn ich einen Ordner auswähle der ein Symbol hat und danach einen Ordner dem kein Symbol zugewiesen wurde dann wird bei diesem Ordner der kein Symbol hat trotzdem eines angezeigt.

31.05.2007 - 04:59 Uhr

Wie kann ich eine einzige C-Sharp Datei in mehreren Projekten nutzen.
Wenn ich sozusagen eine .cs Datei in einem zweiten Projekt adde wird diese Datei kopiert und es existieren ab dann zwei Versionen. Ich will aber nur eine Version der .cs Datei haben die von zwei Projekten verwendet wird. Wie mach ich das? Ich hab keine Option gefunden.

03.01.2007 - 18:29 Uhr

Aber keiner zeigt dich an wenn du ihm einen Fusel vom Pullover klaust obwohlst auch Diebstahl ist g

21.12.2006 - 11:44 Uhr

Hi. Du kannst das abkürzn indem du eine eigene Funktion baust.

Einfacher geht's so nicht aber es ist übersichtlicher.


// Gibt für einen Fahrenheit Wert den entsprechenden Celsius Wert zurück
private double Fahrenheit2Celsius(double dFahrenheit)
{
      return (dFahrenheit - 32) * 5 / 9;
}

// Schreibt den Celsius Wert von dFahrenheit in textBox2
private void CelsiusAusgeben(double dFahrenheit)
{
      textBox2.Text = Fahrenheit2Celsius(Convert.ToDouble(textBox1.Text)).ToString("F");
}

private void button1_Click(object sender, EventArgs e)
{
      CelsiusAusgeben();
}
                      
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{                   
      if (e.KeyCode == Keys.Enter)
      {
            CelsiusAusgeben();
      }
}

21.12.2006 - 11:34 Uhr

Naja, SelectedText ist ja eine andere Variable und die ComboBox hatte anscheinend noch keine Zeit zu initialisieren.

Mach doch: Console.WriteLine("Ausgabe Leer: "+this.comboBox1.Text);
oder zuerst mit comboBox.Select(0,0); anwählen und dann ausgeben vielleicht geht's so aus musst du probieren

mfg

17.11.2006 - 01:25 Uhr

Zurzeit läuft die Grafik nur in den Windows-Forms mithilfe von fixen Pictureboxen, also 2D. Habe auch nicht vor das Spiel anfangs sehr grafikaufwendig zu machen, das wird zuerst teilweise noch sehr textbasiert sein. Später bau ich dann Grafiken für Items, Gebäude usw. ein.

Im Endeffekt sind die Windows-Forms sicher nicht die beste Lösung aber ich denke mal später kann man das noch auf DirectDraw umschreiben.

16.11.2006 - 17:04 Uhr

ein kleiner screenshot für wen's intressiert!

16.11.2006 - 16:59 Uhr

Wer hat Lust sich an Programmierung/Design eines auf Windows-Forms basierenden SciFi-Spiels zu beteiligen.

Das Spiel ist gerade in der Startphase - seit ca. 4 Tagen in Entwicklung. Geplante Entwicklungszeit bis zum Erstrelease ca. 1/2 Jahr wenn nichts unvorhersehbares dazwischenkommt.

Erste Grundgedanken die jedoch noch umgelegt / ausgeführt werden können:

Der Spieler repräsentiert einen Bürger in einem (vorerst) friedlichen galaktischen Imperium. Der Spieler hat primäre Attribute (Stärke, Geschick, Logik, Intuition, Willenskraft) woraus sich sekundäre Attribute wie (Gesundheit, Mentalkraft...) entwickeln. Ausserdem kann der Spieler verschiedene Fähigkeiten trainieren wie z.b. -- Mechanik, Elektronik, Rhetorik, Handeln...

Ausserdem gibt es noch übermächtige Fähigkeiten die erst später im Spiel verfügbar werden wie z.B. Transzendenz (hilft leichter zu entspannen und regenerieren) oder 7ter Sinn (hilft negative Energien zu orten g)

Wie das Spiel genau funktioniert weiß ich noch nicht hab aber an eine Art Karriere-Simulation gedacht. Also Anfangs nimmt der Spieler eine Arbeit an oder kann Verbrechen begehen. Später kann er sich als Handwerker selbst sachen basteln und damit handeln und noch später sollte es möglich sein eigene Fabriken zu bauen oder zu kaufen um damit am Marktgeschehen (das übrigens 100% dynamisch wird) teilzunehmen.

Also wirds auch verschiedene Rohstoffe (Metall, Stein, Titan, Uran...) geben die dann weiterverarbeitet werden.

Würd mich freuen wenn jemand seine Meinung dazu rauslässt!
MfG!!!!

30.08.2006 - 20:35 Uhr

Original von Puppetmaster
Ich denke es muss doch möglich sein, bei einer Form die Control-Leiste zu entfernen (in MFC wars ziemlich einfach wenn ich mich recht entsinne).

Klar kannst du die entfernen, das geht wenn du die Eigenschaft Form.BorderStyle = None stellst. Das geht auch in der Design-Ansicht. Das ist dann der WS_POPUP Style ohne Ränder und Titelleiste.

30.08.2006 - 19:16 Uhr

Ich würde dafür keine eigene Form erzeugen.

Sind das immer dieselben und gleichviele Eigenschaften/Daten bei jeder Auswahl? Falls ja bräuchtest du die Daten nur mithilfe von Labels anzeigen lassen.

Vielleicht gib's ja irgendwo eine Tab-Control bei der man die Tab-Buttons oben wegblenden kann, dann würde ich sowas verwenden.

Oder du erzeugst die gewünschte Anzeige inkl. allen Buttons/Labels usw. On-The-Fly also per Code.

30.08.2006 - 16:45 Uhr

Ich hab ein eigenes Custom-Control zur Darstellung verschiedener Formen (Rechteck, Ellipse...) gemacht. Die Formen können auch transparent sein.

Problem:
Wenn ich jetz dieses Control z.B. über einem Button platziere dann ist der Button nicht mehr anklickbar, weil er von meinem Control verdeckt wird.

Wie kann ich das Control sozusagen "durchklickbar" machen? Gibt es dafür eine Funktion/Property??