Suche Mitarbeiter für Game Framework



  • Allgemein wird als Zielplattform Windows (2k+) anvisiert, verwendet wird der MS VC 7.0 Compiler ...

    😉



  • WTF ?!?!?!?

    Gibts denn keine ernsthaften Antworten, Fragen bzw. User mehr ???



  • Auf Spieleprogrammierer nciht achten, istn (langweiliger) Troll.



  • schade, dass ihr nich ogl benutzt



  • Wir benutzen kein OGL, weil immo kein OGL Coder im Team ist 😉



  • Seit wann bin ich denn niemand ?!?!?!?

    Die Engine ist so ausgelegt das theoretisch auch OpenGL möglich ist. Der Renderer ist also gewrapped. Grössere Probleme liegen allerdings bei den Konvertierungen. OpenGL benutzt ein anderen Matrix System, n anderen KoordinatenSystem etc... verschiedene Texturformate ...

    Wenn du also gerne den OpenGL Renderer übernehmen wollen würdest, warum nicht ! Ist aber ne verfluchte scheiss arbeit, ich kann auch OpenGL aber das ist mir zuviel ! Es gibt ausserdem noch soviele Dinge die wir vorher noch am allgemeinen Framework festlegen müssen.
    Aber du kannst dich da gerne ransetzen und mitcoden, nach einem kleinen Test deiner Fähigkeiten natürlich ! 😃
    Was kannst du denn so ...



  • also im hinblick auf vertex shader bzw vertex programm, sollte man die allgemein üblichen matrizen nutzen und nicht die transponierten von d3d, wenn ihr denn vertexshader nutzen wollt, müßt ihr sie ja sonst eh immer zurück transponieren... und wenn es ein wrapper ist, dann sollte man ja net merken dass dort d3d drunter steckt 😉

    und das coordinatensystem ist doch nur ne matrixmultiplikation, mehr nicht, oder?

    schwere könnte das mit dem texelzentrum ausschauen,sowat kann teuflisch nerven.

    übrigens code ich änliches wie ihr 🙂

    rapso->greets();



  • Das mit dem Koordinatensystem ist sicherlich kein Problem, das ist eine Matrix die man ändert ... Mit den Matrizen hab ich mich noch nicht näher beschäftigt, das könnte ein gutes Stück komplizierter werden. Also momentan verwenden wir den MatrizenStandard von D3D. Man könnte vielleicht mit na Policy eine andere Matrixklasse setzen und somit den ganzen Ärger mit den Matrizen verhindern ... Aber das wäre trotzdem ein verdammt grosser Aufwand, weil egal ob bei Frustum-Berechnungen oder sonstigen spässen man zwangsläufig irgendwann auf Matrizenmanipulation stösst. Und gerade in Shadern dürfte das gefährlich werden. hmmm ...
    Obwohl, wieso eigentlich ...
    Solange man sich nicht auf die Reihenfolge innerhalb der Matrix verlässt benutzt die Api genau ihr richtiges mul um Punkte zu transformieren etc...
    Man man man ... hat jemand Erfahrung mit dem shit ? Das ist genau der Grund warum ich das net machen will 😃

    PS:

    übrigens code ich änliches wie ihr 🙂

    Na ich nehm das mal als Kompliment 😃 Vielleicht kannste ja nützliche Tips geben 😃



  • ich seh das genau andersrum, da ja die matrix in einer klasse gekapselt ist (hoff ich doch für euch *fg*) muss man nur die construktoren ändern. und vielleicht ein wenig für das frustum.
    bei shadern sind eher d3d matrizen gefählich, denn wenn man sich da mal das transponieren vergißt, bevor man die matrix in den shader setzt, sieht man erstmal nix auf dem screen und dann gibt's das "such den bug" spiel.

    also als tips hätte ich:

    ich hab früher für den vorgänger 3ds files genutzt, nun nutz ich *.ase files, das hat den vorteil, dass texturnamen nicht auf 8zeichen beschränkt sind (deswegen fand der früher bei mir texturen nicht), und die texturen sind mit pfadangaben, somit finden man die über alle platten hinweg (was bei grafikern auch verständlich ist, dass sie ihre texturen in verschiedenen verzeichnissen geordnet haben)

    HLSL ist zwar an sich für jeden coder genial, aber ich würde mich nicht drauf verlassen, dass grafiker das lernen werden, ich hab dafür versuch den assembler von vs/ps 2.0 in ein scriptingsystem zu stopfen, ich weiß ja nicht ob ich ne bessere lösung habt, aber wenn ja, dann würd ich die gerne erfahren 😃

    das problem mit transparenten objekten bei multipass hab ich nicht wirklich gu lösen können bis jetzt, habt ihr da was?

    für schatten kann man besser shadowmaps verwenden als volumes, weil...
    ...1. kann man 2 oder mehr in einem pass drauf legen
    ...2. shadowmaps kann man seltener berechnen als die echte scene (performance++)
    ...3. weniger overdraw, weil shadowmaps kleiner sein können als die screen resolution und einmal normal rendern braucht wohl sowieso weniger power, als back+front faces eines volume + eventuell projektion des objekts auf die nearclippingplane (das an sich emfpinde ich als totalen tod für die performance)
    ...4. da man im pixelshader 32reads auf texturen hat, kann man abhängig vom abstand des caster und empfängers ein größeres sampeling grind benutzen, dadurch bekommt man in der nähe scharfe kanten und in der entfernung ziemlich weihe (das schaut in meinen test mächtig geil aus), das ist wohl nicht performant möglich mit volumes.

    für sound ist openAL ziemlich geil, weil es quasi schon ein wrapper ist für EAX,D3D..

    ihr könnt mir ja auch ein paar tips von euch geben 😃

    rapso->greets();



  • ShadowMaps haben zu viele Nachteile.. Nicht nur, dass sie nur für Spotlights mit kleinem Kegel zu verwenden sind (es ließen sich ja 6 Lights mit je 90° Cone für eine Lichtquelle nehmen), die Qualität lässt auf mittlerer bis größerer Entfernung auch noch stark nach, so dass es oft zu irgendwelchen Anzeigefehlern kommt..

    Klar, Volumes sind weit aus schwerer zu berechnen und ev. auch langsamer, dafür aber auch sicherer und genauer.. Und der Stencil Pass ist nun auch nicht so unbedingt langsamer als der Pass um ShadowMaps zu berechenen (der eine speichert Z Werte, der andere ließt ZWerte und schreibt in den StencilBuffer)..

    Oder? 🙂



  • für ein omni light braucht man 2 shadowmaps (siehe google -> dual parabolid maps)

    das nachlassen der auflösung auf entfernung hin ist ja gerade das, was softshadows erlaubt, damit schaut es besser aus als mit volumes, die sogar ein flugzeug von der sonne aus beleuchtet mit hardshadows verzwingen. (falls jemand sowat beklopptes machen würde 😉 )

    an sich sind volumes leicht zu berechnen, siehe nvidia GDC2003 paper, wenn man's geschickt anstellt, kann man das sogar 100% im vertexshader machen (wenn man das mit der cpu rumfummeln würde, dann erwartet man ja eh nicht top performance )

    der stencil pass ist an sich erheblich langsammer, für die shadowmap (sogar beim omni light) braucht man 2 passes falls die lichtquelle im frustum liegt. bei den shadowvolumes braucht man mindestens 2, bei entgegen der clippingplane extrudierten volumes sogar 3 (front,back,cap)

    shadowsmaps:
    beim zeichnen der beleuchtung braucht man ein zread+colorread+colorwrite falls nicht schatten

    volumes:
    (z&Stencil)read + colorread + colorwrite falls nicht schatten + stencilclear am ende damit man keine stencilartefakte bekommt für die nächste lichtquelle oder man schreibt jedesmal beim colorwrite auch noch den stencil auf 0, dürfte sich aber nichts nehmen beim performanceverlust.

    mit shadowmaps kann man außerdem jede geometrie ohne aufwand beschatten, bei schadowvolumes muss man dafür sorgen, dass die volumes noch extrudet werden, egal ob blendshappes,skinned-mesh, partikel (z.b. blätter auf bäumen)

    also bis auf dass shadowvolimes mehr akkurate schatten werfen, sehe ich keinen vorteil, weder in performance noch flexibilität, und die qualität hebt sich je nach scene gegenseitig auf denk ich mir.

    hmm... vielleicht habent volumes nen kleineren speicherverbrauch.. aber sonst?

    rapso->greets();



  • hui, das mit der dual parabolid map muss ich übersehen haben *g* Jetzt ändert sich natürlich einiges, statt 6 Passes nur noch 2 zum Erstellen einer kompletten Map *g*
    Shadowing ist nach Lighting das nächste Teilthema, wurde also noch nicht wirklich bearbeitet.. daher bin ich auch noch nicht so ganz informiert drüber 😉

    stencilclear am ende damit man keine stencilartefakte bekommt für die nächste lichtquelle oder man schreibt jedesmal beim colorwrite auch noch den stencil auf 0, dürfte sich aber nichts nehmen beim performanceverlust

    Der StencilBuffer befindet sich in mitten des ZBuffers, ist also kein Problem, fast im Gegenteil, sogar gleich schnell alles zu löschen statt nur die ZWerte.

    mit shadowmaps kann man außerdem jede geometrie ohne aufwand beschatten, bei schadowvolumes muss man dafür sorgen, dass die volumes noch extrudet werden, egal ob blendshappes,skinned-mesh, partikel

    Das ist mit SVs auch np, solange man für alle eine gemeinsame Geometrie Basisklasse nimmt.. ist aber natürlich mit SMaps einfacher, stimmt wohl



  • Ich muss sagen du weisst wie man jemanden überzeugt.
    Ich hab das Problem das ich mit ShadowMaps nicht wirklich was anfangen kann. Mit net soo das Mathegenie wie unser Sense hier 😃
    Und alles was mit Matrizen zu tun hat könnte schon fast kompliziert werden *G*

    Aber was hast du gegen HLSL ??? Ich meine Grafiker lernen doch eher HLSL als deine Scriptsprache 😃
    Momentan arbeiten wir noch mit HLSL aber besser würde ich schon CG finden, alleine weil unsere "Engine" ja auch für MultiApi ausgelegt ist. Und verschiedene Shader für ein und das selbe, i weiss net 😃

    Vielleicht kann man ja von deinem aktuellen Projekt mal was sehen ... falls es OpenSource sein sollte. Würde mich brennend interessieren. Mitarbeiten willste ja sicherlich nicht, ich meine gebrauchen könnten wir dich sicherlich, aber wer n eigenes Projekt hat, hat meistens keine Zeit 😞
    Aber das Angebot steht !

    @Tips:
    Nunja, nichts was du nicht auch weisst 😃
    Wir konzentrieren uns eigentlich eher auf die StandardOptimierungen, also optimales Ausnutzen des VRAM's etc... Presorted Meshs, bla, bla ... Wir wollen halt wirklich das richtige PPL unterbringen so das es keinen Performanceverlust dadurch gibt. Naja, werd mich mal wieder ransetzen an unseren MS3D-Loader ...
    *gähn* Bin nur irgendwie so müde *schnarch*



  • Original erstellt von DerSensemann:
    **
    Der StencilBuffer befindet sich in mitten des ZBuffers, ist also kein Problem, fast im Gegenteil, sogar gleich schnell alles zu löschen statt nur die ZWerte.
    **

    wenn du multipass machst (was man mit shadowvolumes bei mehr als einer lichtquelle machen _muss_, dann mußt du nur den stencil clearen und nicht den zbuffer, den brauchst du ja noch für die folgenden passes, der clear gestalltet sich dann in der gpu so: zread, stencil wegmaskieren,zwrite ... wenn man stencil und zbuffer gleichzeitig löscht (muss man sogar machen, man sollte nie nur den zbuffer löschen), dann nutzen die karten ihr zero-cycle-clear, sie löschen also den ganzen zbuffer in einem takt, indem sie einen bittable in der graka auf null setzen, da der ganze bittable auf dem chip ist, ist das _wirklich_ möglich alles in einem takt zu löschen und da das parallel zu anderen befehlen abläuft, heißt das zero-cycle-clear (je nach marketingabteilung)

    Original erstellt von DerSensemann:
    **
    Das ist mit SVs auch np, solange man für alle eine gemeinsame Geometrie Basisklasse nimmt.. ist aber natürlich mit SMaps einfacher, stimmt wohl**

    was meinst du mit SV, software? falls du mit software das ganze objekt skinnen möchtest und dann das volume daraus generierst, wird das nicht sehr performant. alleine schon wenn du jedes frame den buffer lockst, sachen reinschreibst, unlockst limitiert das schon sehr.
    außerdem frage ich mich wie ne basisklasse die sprites mit volumes versehen will beim partikelsystem (wie schon gesagt, z.B. die blätter von bäumen).
    und wenn ihr mal viele animierte objekte habt mit 3bones skinning (nötig für z.B. schulterblätter bei menschen, damit die bewegungen dort einigermassen gut aussehen), habt ihr zig matrizen die ihr verrechnen müßt und dann noch die transformation von tausenden von vertices.. was die cpu sowieso nebenbei kann beim transformieren (weil pixelshader viel limitierender sind als die vertexshader es sind)

    naja, das sind jedenfalls mit die gründe, weshalb ich maps nehme.

    rapso->greets();



  • SVs ^= ShadowVolumes 🙂

    Aber stimmt mit dem Stencil Buffer.. Erst denken, dann posten 🙄 *grummel*

    Naja, wie dem auch sei, kannte bisher keine Möglichkeit ne 360° Rundumsicht in 2 Passes in ne Texture zu rendern und nu wo ich es kenn, schaut die Sache wie gesagt scho ganz anders aus 😉



  • Original erstellt von ChaosAngel:
    **Ich muss sagen du weisst wie man jemanden überzeugt.
    Ich hab das Problem das ich mit ShadowMaps nicht wirklich was anfangen kann. Mit net soo das Mathegenie wie unser Sense hier 😃
    Und alles was mit Matrizen zu tun hat könnte schon fast kompliziert werden *G*
    **

    naja, ihr könnt ja volumes nehmen und ich mache maps, und was besser ausschaut und läuft wird genommen ;), aber nein, wie im richtigen leben ist es schlecht nur eines sache zu machen, ich werde mir auch überlegen wie ich rigendwie ne hybride lösung mache, vielleicht wird's ma von nütze sein, who knows.

    Original erstellt von ChaosAngel:
    **Aber was hast du gegen HLSL ??? Ich meine Grafiker lernen doch eher HLSL als deine Scriptsprache 😃
    Momentan arbeiten wir noch mit HLSL aber besser würde ich schon CG finden, alleine weil unsere "Engine" ja auch für MultiApi ausgelegt ist. Und verschiedene Shader für ein und das selbe, i weiss net 😃
    **

    ich hab nix gegen HLSL, ich mag leiber in c coden als mich damit abzuquällen das rendering mit scripts zu beschreiben. aber wenn selbst du meinst, dass du mit matrizen probleme bekommen könntest, dann werden grafiker die vorher nichtmal normalen benutzten, weil smoothinggroups reichen, total ins schleudern kommen, wenn sie etwas derartiges lernen müssen (schliesslich gibt es nen grund weshalb sie nicht coder sondern grafiker geworden sind)
    CG ist doch aber an sich auch eine HLSL, soweit ich bisher las, ist es sogar compatible vom source her mit dem HLSL von m$.
    mein kolege ist aber von RenderMonkey total begeistert, und da ati heutzutage im durchschnitt um faktor 2schneller im pixelshader ist als NV, ist es nicht verwschendete zeit sich das anzuschauen.

    aber manchmal erzeugen die dinger nicht optimalen code, ich hab schon mehrmals gesehen dass sie mul und add hatten anstatt mad, wieso auch immer.

    Original erstellt von ChaosAngel:
    **Vielleicht kann man ja von deinem aktuellen Projekt mal was sehen ... falls es OpenSource sein sollte. Würde mich brennend interessieren. Mitarbeiten willste ja sicherlich nicht, ich meine gebrauchen könnten wir dich sicherlich, aber wer n eigenes Projekt hat, hat meistens keine Zeit 😞
    Aber das Angebot steht !
    **

    meine engine wird free sein für die, die freeware machen, mods... und für kommerzielle kann man halt anfragen, ich arbeite schliesslich (alleine) seit nem jahr dran, hab editoren, converter, scriptsrapche, culling algos.. alles selber von grund auf implementiert.. sowas möchte ich nicht gerne verschenken.. (so nebenbei, habt ihr das bei heise letztens gelesen, dass einer mit nem opensource projekt pleite ging und sich wundert, weshalb ihm niemand was bezahlt wenn er sein opensource projekt nutzt, war ein ein-disketten-server oder so 😃 )

    wäre es jetzt gemein euch das selbe angebot zu machen? *gggggggg* ich suche auch ewigkeiten leute, aber naja, ich würde mein projekt ja auch um nichts auf der welt verlassen.
    ps. ein framework hab ich schon zum teil fertig, läuft mit plugins, so kann man ein plugin machen für ein menü, und wenn das zuende ist, returnt es nen string mit dem namen und den parametern des plugins, dass ausgeführt werden kann. das lässt sich super debuggen und mit mehreren leuten entwickeln.. *tip*

    Original erstellt von ChaosAngel:
    @Tips:
    Nunja, nichts was du nicht auch weisst 😃
    Wir konzentrieren uns eigentlich eher auf die StandardOptimierungen, also optimales Ausnutzen des VRAM's etc... Presorted Meshs, bla, bla ... Wir wollen halt wirklich das richtige PPL unterbringen so das es keinen Performanceverlust dadurch gibt. Naja, werd mich mal wieder ransetzen an unseren MS3D-Loader ...
    *gähn* Bin nur irgendwie so müde *schnarch*

    [/QB][/QUOTE]

    ich hatte meine MS3D loader nach langer zeit mit sammt animationen und optimierungen fertig, ich war wirklich dermassen dämlich das sourceverzeichniss zu löschen.. (nein, hab kein cvs am laufen gehabt), aber an sich würde ich das lieber alles aus max raushollen, weil es oft ein argument ist ob man ne engine benutzt oder nicht, ob die grafiker die contenttools bedienen können.
    wenn ich alles von max aus machen lasse, bzw. von meinen editoren, dann hat man ein paar kleien ++.

    ich hab auch nen textur manager der abhängig von der meshauflösung nur die richtigen daten, für die vertexdaten muss ich noch einen schreiben... in oGL mit den nvidia extensions bekommt man eh nur ein riesiges array das man vollstopft, so will ich das auch mit d3d anstellen.

    bin auch müde 😃
    aber noch ist es nicht zeit für meine 2h schöhnheitsschlaf täglich...



  • ich hatte meine MS3D loader nach langer zeit mit sammt animationen und optimierungen fertig, ich war wirklich dermassen dämlich das sourceverzeichniss zu löschen..

    Nunja, das ist wirklich ... 😃 ... *Pech*

    Naja, ich sitz gerade an den Optimierungen, gleich kommen die TriangleStrips ...
    Aber das Modelformat ist nur vorläufig, damit man einfach mal was zum testen hat ... Sonst gibt es irgendwie keine guten Modelformate die ich ausfindig machen konnte. Auch an Levelformaten haperts arg... dazu kommt das ich mich mit dem Job vom Grafiker überhaupt nicht auskenn. Naja, Sense arbeitet an nem 3DS Converter.

    @Plugins
    Hatten wir im vorherigen Framework ebenfalls. Ist uns aber nicht gelungen umzusetzen, scheiterte am Runtime-ApiSwitch. Ausserdem legen fertigen DLL's einen auf einen Compiler fest. Da ansonsten DLL's nicht Exceptionsafe arbeiten. StringProbleme mit std::string und ihrem beschissenen cctor gibts auch noch (wrong heap deletion)



  • du mußt die dll als multithreaded DLL compilen, dann übernimmt der den heap von der exe, ansonsten nimmt er für die dll nen eigenen, jedenfalls war es bei mir so.

    das problem tritt dann auf, wenn man in der exe delete macht für etwas was im heap der dll ist, dafür muss man sonst creator und destroyer funktionen bereitstellen in der dll.

    ich würde euch von 3ds abraten, besonders wenn ihr für eure berechnungen normalen braucht (z.b. tangent space bumpmpping), denn es gibt nur smoothgroups in den 3ds, exportiert mal mit max eine texturierte kugel in 3ds rein und laded die dann wieder, dort wo die texturkante ist wird es auch für die normalen ne kante geben.
    das kann man wohl eventuell rausbekommen, aber es kann passieren, dass man dann ne kante glättet, von der man eigentlich wollte dass es ne kante bleibt.
    im *.ase file sind die normalen gespeichert, auch wenn man da vertices splitten muss, weil manche von ihnen doppelt belegt sind mit normalen, es schaut wenigstens richtig aus.
    und da es nur text ist, ist sehr sehr simpel das format zu debuggen, man kann ja sofort sehen (im WatchWindow vom debug), wenn ein string falsch ist.
    das texturzusammensuchen koennte nervig sein, falls die verteilt rumliegen, filenames waren oft zu kurz... das alles hat mich an Dionysos 1 dazu bewegt ASE zu nutzen...
    es sei den euer converter ist zuweit um ihn neu zu schreiben 😉

    habt ihr schon einen archiver?

    rapso->greets();



  • Woher das Heap Problem stammte wussten wir ...
    Das mit der Multithreaded DLL allerdings nicht 😃
    Das Problem war das der cctor von std::string nicht wirklich kopiert, sondern intern mit Referenzen arbeitet...
    Wenn man also n String an die DLL übergibt (copy by value) und der dann dort gelöscht wird wenn der ursprüngliche string bereits gelöscht ist. Der string in der DLL hält dann den letzten refcount und wird dann mit einem delete in der DLL gelöscht -> falscher Heap zugriff

    @3ds I finds auch scheisse 😃
    Da streite dich mal mit Sense

    @Archiver
    Was meinst du damit ...
    Sowas wie PakFiles ? Also n virtuelles Filesystem ham wa ... Wenn auch für eigene PakFiles, bei richtigen habs wieder stringlength Begrenzung und andere Probleme 😞



  • dann haben wir beide wat von eurem bug gelernt 🙂

    und ja, das meine ich mit archiver... ich muss mich noch dran setzten 😕 und möchte nicht wirklich etwas wie zip verwenden.. dachte ihr habt vielleicht scho wat.

    ich werde das archivieren vielleicht mit nem plugin für den windowscommander machen (bzw totalcommander), mal sehen wat drauss wird.

    rapso->greets();


Anmelden zum Antworten