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

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

221

29.03.2010, 19:37

rewb0rn: ganz nett ;)


EDIT: 400. Beitrag :D
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

222

29.03.2010, 22:16

Mich würde mal interessieren, was ihr von Sat1 für so nen Spiel bekommt, also in welchen Größenordnungen man sich das vorstellen kann.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

223

30.03.2010, 11:57

Zum Budget kann ich leider nichts sagen. Die Werbemittel für das Spiel kommen übrigens auch von uns, also wenn euch die mal irgendwo über den Weg laufen... ;)

Vielleicht noch ein bisschen was zur Technik:
Murmelbowling und Dreisprung sind beides 3D Spiele, auch wenn man so davon gar nichts bemerkt. Bei Dreisprung haben wir erst am letzten Tag die Kamera so auf die Seite gestellt, wie sie jetzt ist. Vorher war das Setting von schräg hinten zu sehen und die Kugel war zunächst frei zu positionieren (ähnlich Murmelbowling) und der Pfeil auf 2 Achsen anstatt auf 1 beweglich. Das Spiel war dadurch aber so schwer, dass selbst ich als Programmierer nur jeden 5. Wurf oder so getroffen habe. Wir werden diese 3D Version vielleicht nochmal irgendwann als Techdemo verfügbar machen, an sich wars nämlich ganz nett und auch das Abprallen am Glas kam im freien Raum noch wesentlich cooler rüber. Bei Fliegende Federn gibts anscheinend noch einen Bug, da 2 Spieler in der Bestenliste unglaublich viele Punkte erreicht haben. Sollte den jemand von euch reproduzieren können bitte Bescheid geben, ich hab den bisher leider nicht finden können.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »rewb0rn« (05.05.2010, 01:20)


BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

224

14.04.2010, 17:52

Da ich mit meiner Engine endlich sichtbare Erfolge habe, dachte ich, dass ich diese gleich mal präsentiere.
Ich habe einen Shader-Generator geschrieben - ein Teil meiner Material-Klasse, die aus ein paar Flags einen kompletten VertexShader und einen kompletten PixelShader zaubert.

Ich habe mal provisorisch etwas zusammengestellt: 1 Quad, das sich dreht.
Dabei werden 2 Instanzen des Quads gerendert (Vorder- und Rückseite). PerPixel wird NormalMapping, Diffuse Shading, Specular Shading und Environmental BumpMapping durchgeführt.

Am Ende sieht das aus wie eine verglaste geflieste Wand, die von einem Spotlicht beleuchtet wird:

(Link)


Damit es besser zur Geltung kommt, habe ich ein kleines Video gecaptured und hier könnt ihr es anschauen:
Video on Youtube

Diese Flags gebe ich an:

C-/C++-Quelltext

1
2
DWORD VSFlags= VS_TransformCoord;
DWORD PSFlags= PS_ShadeDiffuse|PS_ShadeSpecular|PS_Ambient|PS_Emissive|PS_Mirror|PS_NormalMapping|PS_ColorAlpha_Tex;


Und dieser Shader-Code wird automatisch generiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//////////////////////////////////////////////////////////////////
//This HLSL Shader Code was automatic generated by GlowingThunder-Engine
//VertexShaderFlags: 0x1f
//PixelShaderFlags: 0x15f
//IlluminationLayout: Max(32), Dir(0), Point(0), Spot(1)
//Instances: 256

//////////////////////////////////////////////////////////////////
//Includes
#include"Constants.fx"
#include"Sampler.fx"
#include"Textures.fx"
#include"Lighting.fx"


//////////////////////////////////////////////////////////////////
//Layout
struct VSInput
{
    uint IID                    : SV_InstanceID;
    float3 vPosition            : POSITION0;
    float3 vNormal              : NORMAL0;
    float3 vTangent             : TANGENT0;
    float2 vTextureCoord        : TEXCOORD0;
};

struct PSInput
{
    uint IID                    : INSTANCEID;
    float4 vPosition            : SV_POSITION;
    float3 vWorldPosition       : POSITION0;
    float3 vNormal              : NORMAL0;
    float3 vTangent             : TANGENT0;
    float3 vBinormal            : BINORMAL0;
    float2 vTextureCoord        : TEXCOORD0;
};

struct PSOutput
{
    float4 Color   : SV_Target0;
};

//VertexShader
PSInput VertexShaderProc(VSInput In)
{
    PSInput Out;
    
    Out.IID= In.IID;
    
    float4 vWorldPosition= mul(float4(In.vPosition, 1.0), Instance[In.IID].mWorld);
    Out.vPosition= mul(vWorldPosition, mViewProjection);
    
    Out.vWorldPosition= vWorldPosition.xyz;
    Out.vNormal= mul(In.vNormal, (float3x3)Instance[In.IID].mWorld);
    Out.vTangent= mul(In.vTangent, (float3x3)Instance[In.IID].mWorld);
    Out.vBinormal= cross(Out.vTangent, Out.vNormal);
    
    Out.vTextureCoord= In.vTextureCoord;
    
    return(Out);
}

//PixelShader
PSOutput PixelShaderProc(PSInput In)
{
    PSOutput Out;
    
    //NormalMapping
    column_major float3x3 mTBN= {In.vTangent, In.vBinormal, In.vNormal};
    float3 vNormal= mul(TexNormalHeight.Sample(TextureSamplerWrap, In.vTextureCoord).xyz * 2.0 - 1.0, mTBN);
    
    //Illumination
    float3 DiffuseLight= float3(0, 0, 0);
    float3 SpecularLight= float3(0, 0, 0);
    float3 vViewDir= float3(mView._31, mView._32, mView._33);
    LightSource Light;
    float fLightWeight;

    //Light #0 (Spot)
    fLightWeight= Instance[In.IID].aIllumination[0].fLightWeight;
    if(fLightWeight != 0.0)
    {
        Light= aLights[Instance[In.IID].aIllumination[0].LightIndex];
        DiffuseLight.rgb+= fLightWeight * SpotLightDiffuse(Light, In.vWorldPosition, vNormal);
        SpecularLight.rgb+= fLightWeight * SpotLightSpecular(Light, In.vWorldPosition, vNormal, MatSpecularColorPower.a, vViewDir);
    }

    //Mirror (=EnvironmentMapping)
    float3 vReflected= reflect(In.vWorldPosition + float3(mView._41, mView._42, mView._43), vNormal);
    float3 MirrorLight= TexEnvironmentMap.Sample(TextureSamplerWrap, vReflected).rgb;
    
    //Color-Sources
    float4 ColorAlpha= MatColorAlpha;
    float4 SpecularColorPower= MatSpecularColorPower;
    float4 EmissiveAmbient= MatEmissiveAmbient;
    float4 MirrorColorSaturation= MatMirrorColorSaturation;
    
    ColorAlpha*= TexColorAlpha.Sample(TextureSamplerWrap, In.vTextureCoord);
    
    Out.Color= float4(0, 0, 0, 1);
    Out.Color.rgb+= DiffuseLight * ColorAlpha.rgb;
    Out.Color.rgb+= SpecularLight * SpecularColorPower.rgb;
    Out.Color.rgb+= AmbientLight.rgb * EmissiveAmbient.a * ColorAlpha.rgb;
    Out.Color.rgb+= EmissiveAmbient.rgb;
    Out.Color.rgb= (1 - MirrorColorSaturation.a) * Out.Color.rgb + MirrorColorSaturation.a * MirrorColorSaturation.rgb * MirrorLight;
    
    return(Out);
}


Dazu gibt es noch eine Demo. Achtung: Braucht mindestens DirectX 10.0 Hardware!
Ich weiß nicht genau, wie sich das mit dem Redist von VC++ 2010 verhält. Ich habe aber mal de beiden benötigten msvc<r/p>.dll dazugesteckt.
Weiterhin sollte das DirectXRedist von Feb10 installiert sein.
EDIT2: Hier der neue Link: Download

EDIT: HDRR ist noch nicht implementiert! Ihr bekommt nur ein schwarzes Bild, wenn ihr es benutzen wollt.
Die Settings sind im Ordner <Dokumente>\My Games\GT-E Material Shader Generator\ genauso wie das Log.
Wer ein Punktlicht oder Richtungslicht statt einem Spotlicht haben will, der kann NumSpotLights auf 0 setzen und dafür NumPointLights oder NumDirLights auf 1. Aber nie beide auf 1 oder alle 0 oder mehr als 1. Das gibt üble Fehler!

Falls ihr auf "Don't show me again" geklickt habt aber die Einstellungen ändern wollt, könnt ihr entweder in Settings.xml RunAlways auf 1 setzen oder "Demo.exe -config" per Command Line starten.

PS@David: Ich habe mir mal eine EnvironmentMap von der Buch-CD geliehen ;)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlazeX« (14.04.2010, 18:50)


225

14.04.2010, 18:04

sieht gut aus.
Aber HDR funktioniert bei mir nicht, es gibt keine Fehlermeldung, sondern ich seh einfach ncihts mehr.
Außerdem hat das ganze n blaustich.
System:
Prozessor: Q6600 (4 mal 2.4GHz)
Arbeitsspeicher: 3 GB
Grafikarte: ATI HD4850 mit 1GB GRAM
OS: Windows Seven x64

//EDIT: ich she grad, der blaustich ist bei mri auch auf den screenshots, könnte also am monitor liegen - obwohl der normalerweise eher zu grün neigt 8|

Union_Freedom

Treue Seele

Beiträge: 156

Wohnort: Nähe Hannover

Beruf: Student

  • Private Nachricht senden

226

14.04.2010, 18:23

Hey.
Sieht sehr schön aus. HDR funktioniert bei mir ebenso nicht. Sonst geht alles.
Prozessor : E6600 Intel
Grafik : 8800 GTS
OS : Windows 7 32Bit


mfg
Union_Freedom
Coder bei: http://crushing-gods.de/ (Folgt uns)
Erste Eindrücke zu Crushing Gods Link

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

227

14.04.2010, 18:30

Ah, gut. Es funktioniert wenigstens bei dir.

HDRR geht nicht, weil es noch nicht implementiert ist. ^^ Es wird zwar in eine HDR-Textur gerendert, aber die kann nicht in den LDR BackBuffer kopiert werden. Da muss ich noch das PostProcessing-Framework fertig machen und einbinden. Derzeit ersetzt ein einfaches CopyResource das gesamte PostProcessing.

Der Blaustich ist normal und hat nichts mit deinem Monitor zu tun. Der Hintergrund wird nicht mit Schwarz sondern einem ganz dunklen Blau (R=0.0, G=0.0, B=0.1) gecleart. ^^ Ich fand, dass das schöner aussieht als dieses Standard-Schwarz.

228

14.04.2010, 18:34

Wollte auch mal testen. Allerdings bekomme ich nur einen schwarzen Bildschirm "zu sehen".
Hab zuvor im Settings-Dialog rumgewurschtelt und "don't show me again" aktiviert.
Das funktioniert hervorragend. Der Dialog lässt sich nicht mehr blicken. ;)
Log-Datei wäre nicht schlecht (auch wenn es 'ne frühe Version ist).

Dualcore, 9800GTX, Vista
fka tm

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

229

14.04.2010, 18:40

Eine frühe Version? Der Core (einschließlich Log) ist schon fast ein Jahr alt ^^
Schau mal in deinem Dokumente Ordner unter "My Games\GT-E Material Shader Generator\" da ist ein Log.

Wenn du den Dialog wieder sehen willst, starte das Programm mal mit dem Parameter -config, oder setze RunAlways in Settings.xml auf 1.
Du hast bestimmt HDRR aktiviert.

Ich lade gleich mal eine neue Version hoch, die HDRR garnicht erst wählbar macht.

230

14.04.2010, 18:51

Nu hat es geklappt.
Tres chic! ;)

"Frühe Version" hab ich nur vermutet.

Die FPS solltest du (imho) nicht in der Titelleiste anzeigen.

Die EnvironmentMap ist, glaube ich, nicht von David.
Jedenfalls ist sie mir schon x-mal im Netz begegnet.
Sieht nach Terragen aus.
fka tm

Werbeanzeige