# [Projekt]Grafik-Engine



## AMD (28. Juli 2011)

Ich möchte hier gerne mal ein Projekt von mir vorstellen, was ich neben der Uni programmiere.
Es handelt sich um eine 3D Engine auf Basis von OpenGL (Version 3.3).

Angefangen habe ich mit dem Projekt Anfang Mai und nach meiner Ansicht nach habe ich in den knapp 3 Monaten auch einiges geschafft - wobei im letzten Monat alles auf Eis lag wegen den Klausuren in der Uni! In den letzten 3 Tagen ging es allerdings wieder sehr gut vorran aber ich will natürlich die Entwicklung von Grundauf zeigen!


Am ersten Tag wo ich beschloss das Projekt zu starten - hatte das schon länger im Kopf - wurde erstmal ein großer Plan erstellt!
Wie geh ich ran, wie wird alles aufgebaut, was wird benötigt, etc.
Außerdem wurden schon gewisse Basics vom Code erstellt (Initialisierung von OpenGL Sachen, Fenster wurde erstellt, etc.).

Ich wollte die Tage darauf natürlich auch 3D technisch bald erste Ergebnisse und ich habe einen Objektloader geschrieben, der Daten aus einer Datei einliest und dieses als 3D Objekt rendert. Außerdem natürlich auch ein Texturloader damit das ganze auch Farbe hat - wobei aktuell nur *.bmp unterstützt wird (für anfängliche Dinge reichts), was aber später noch mit *.tga etc. ergänzt wird.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Nachdem das stand war ich natürlich in den Ansätzen zufrieden - aber viel mit machen kann man letztendlich trotzdem nicht damit.


Es wurden die Wochen darauf viele Sachen programmiert wie z.B. eine Kollisionserkennung (die aktuell in groben Teilen verworfen wurde und neu geschrieben wird), die Kamerasteuerung über Pfeiltasten oder WASD + Maussteuerung, usw.
Außerdem wurden ein paar Strukturen im Code geändert - der Code muss schließlich ordentlich bleiben! Das ist das A und O bei großen Projekten.

Die Texturdarstellung wurde von einer Linearen Berechnung auf MipMapping umgestellt (geht schnell und sieht besser aus).
MipMapping lässt die Sache in weiteren Bereichen unschärfer aussehen aber das ist im direkten Vergleich mit Linearen Texturen besser, da dies weniger verpixelt und abgehackt aussieht!
Außerdem wurde Anisotropische Filterung eingebaut - welche standart mit 16fach aktiviert ist.
Hier sieht man den Vergleich links mit 16xAF und rechts ohne:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Danach fanden wieder eher Optimierungen statt!
Viele Dinge waren am Anfang einfach 0 Effizient. Die Modelle wurden z.B. in den Arbeitsspeicher gepackt und mussten pro Frame immer vom RAM zum GPU geschickt werden, was die CPU Last deutlich erhöhte, bei nur minimalen Grafikanwendungen. Dies wird natürlich nun ordnungsgemäß in den VRAM gepackt (mit deutlichem Vorteil gegenüber dem RAM).
Zumal wurden Dinge bei der Kollisionsengine und andere Codebreiche Optimiert (z.B. noch dem Objektloader).

Danach habe ich mal anfängliche Versuche mit Wasserrendering und einer größeren Auslagerung in externen Dateien gemacht.
Mit externen Dateien meine ich z.B. Configfiles und Mapfiles. Das heißt z.B. die Auflösung und gewisse andere Settings können in einer externe Datei eingestellt werden bzw. Objekte werden in den jeweiligen Ordnern abgelegt und über eine Datei gemappt.
Dies sieht dann z.B. so aus:

```
#Object Syntax:
#Obj Name x, y, z, X_Rot, Y_Rot, Z_Rot, Flag

MAP Scene_2 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0
```
Mal ein Bild zum Wasser und einer anderen Scene:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Und dann kam erstmal die Uni Pause 

In den letzten 3 Tagen habe ich dann allerdings sehr viel dran gearbeitet.
Viele Dinge im Code wurden aufgeräumt und neu gegliedert - was der Übersicht enorm zugute kommt. Desweiteren wurden die von mir genannten "Stream-Objekte" eingebaut. Dies sind Objekte auf die man keinen großen Einfluss hat aber einfach mal vorhanden sind (z.B. Wasser auf höhe 0, einen Meeresgrund, Himmelssphere)Das diese Objekte extern von den anderen Objekten sind hilft mir für meine weiteren Arbeiten am Code.
Außerdem wurde noch ein Lichtsystem eingebaut, wo Lichtquellen auch wieder in dem Mapfile eingetragen werden können und es gibt noch einen Tag/Nacht wechsel.

Dies sind dann auch die aktuellsten Bilder:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Ich hoffe mal ein paar Leute interessieren sich für das Projekt und bei Interesse würde ich natürlich auch gelegentlich updates einbringen. 

Edit//
Kleines update vom 04.08.:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


(Texturen von GTA 3 "ausgeliehen")


//Bild vom 6.9.2011 - Neues Objekt



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



//Bild vom 6.9.2011 - Multisample Anti-Aliasing (4x)



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



//Video vom 8.10.2011 - Wasser-Shader
https://www.youtube.com/watch?v=LgYjIyV5LC4

//Bild vom 23.10.2011 - Soft-Shadows:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




//Bild vom 25.10.2011 - Masking



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## nahkillo94 (28. Juli 2011)

Wow, sieht gut aus. Also ich hätte Interesse wie es weiter geht und hätte später auch Interesse am Code, wenn du es veröffentlichen willst. 

Wieviel Zeilen Code sind es denn schon und in welcher Sprache? Ich nehmen mal an C++, oder?


----------



## AMD (28. Juli 2011)

Danke und okay 

Aktuell sind es knapp 1400 Zeilen Code in C++ geschrieben.


----------



## IconX (28. Juli 2011)

Sieht sehr ordentlich aus  . Und die Texturen sind weit besser als bei 90 % unserer Konsolenports 

Habe auf jeden Fall Interesse und würde das gerne weiter verfolgen .


----------



## Hübie (29. Juli 2011)

Das sieht doch schon ganz ordentlich aus.
Wie stehts um shaderprogrammierung? Hast du da Erfahrung?


----------



## AMD (29. Juli 2011)

Danke 

Hab ich eher keine Erfahrung mit aber das kommt schon noch und ich hab mir auch schon paar Sachen dazu angeguckt.


----------



## jensi251 (30. Juli 2011)

Sieht sehr gut aus.
Ich hab da zwar keine Ahnung von, aber Respekt 
Und auf jeden fall schöner als Minecraft.


----------



## AMD (30. Juli 2011)

jensi251 schrieb:


> Und auf jeden fall schöner als Minecraft.


 

Ich werde kommende Woche mal wieder neue Bilder posten!
Bin zurzeit weniger am coden sondern eher am Mathe machen - da ich paar Rechnungen durchführen muss die schon ein wenig kompleziert sind... sowas macht teilweise echt keinen spaß aber gehört wohl dazu


----------



## Hübie (31. Juli 2011)

Das glauben wir dir gut und gerne. Viel Erfolg erst mal an der Uni  Freu mich auf Updates.
Wenn du dich an shader rantasten willst empfehle ich Duke Nukem Forever 
Frage auch mal BeetleatWar1977 im 3DC. Der bastelt dauernd neue DoF-Shader für DNF. Sicher kann er dir auch n paar Tipps geben. Das Forum ist Gold wert!


```
// Copyright (c) 2010 NVIDIA Corporation. All rights reserved.
//
// TO  THE MAXIMUM  EXTENT PERMITTED  BY APPLICABLE  LAW, THIS SOFTWARE  IS PROVIDED
// *AS IS*  AND NVIDIA AND  ITS SUPPLIERS DISCLAIM  ALL WARRANTIES,  EITHER  EXPRESS
// OR IMPLIED, INCLUDING, BUT NOT LIMITED  TO, IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL  NVIDIA OR ITS SUPPLIERS
// BE  LIABLE  FOR  ANY  SPECIAL,  INCIDENTAL,  INDIRECT,  OR  CONSEQUENTIAL DAMAGES
// WHATSOEVER (INCLUDING, WITHOUT LIMITATION,  DAMAGES FOR LOSS OF BUSINESS PROFITS,
// BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
// ARISING OUT OF THE  USE OF OR INABILITY  TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
// BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

/*============================================================================
 
                                    FXAA                                 
 
============================================================================*/
#define FXAA_HLSL_3 1

/*============================================================================
                                 API PORTING
============================================================================*/
#ifndef FXAA_GLSL
    #define FXAA_GLSL 0
#endif
#ifndef FXAA_HLSL_3
	#define FXAA_HLSL_3 0
#endif
#ifndef FXAA_HLSL_4
    #define FXAA_HLSL_4 0
#endif    
/*--------------------------------------------------------------------------*/
#if FXAA_GLSL         
    #define int2 ivec2
    #define float2 vec2
    #define float3 vec3
    #define float4 vec4
    #define FxaaBool3 bvec3
    #define FxaaInt2 ivec2
    #define FxaaFloat2 vec2
    #define FxaaFloat3 vec3
    #define FxaaFloat4 vec4
    #define FxaaBool2Float(a) mix(0.0f, 1.0f, (a))
    #define FxaaPow3(x, y) pow(x, y)
    #define FxaaSel3(f, t, b) mix((f), (t), (b))
    #define FxaaTex sampler2D
#endif
/*--------------------------------------------------------------------------*/
#if FXAA_HLSL_3
    #define int2 float2
    #define FxaaInt2 float2
    #define FxaaFloat2 float2
    #define FxaaFloat3 float3
    #define FxaaFloat4 float4
    #define FxaaBool2Float(a) (a)
    #define FxaaPow3(x, y) pow(x, y)
    #define FxaaSel3(f, t, b) ((f)*(!b) + (t)*(b))
    #define FxaaTex sampler2D
#endif
/*--------------------------------------------------------------------------*/
#if FXAA_HLSL_4
    #define FxaaInt2 int2
    #define FxaaFloat2 float2
    #define FxaaFloat3 float3
    #define FxaaFloat4 float4
    #define FxaaBool2Float(a) (a)
    #define FxaaPow3(x, y) pow(x, y)
    #define FxaaSel3(f, t, b) ((f)*(!b) + (t)*(b))
    struct FxaaTex { SamplerState smpl; Texture2D tex; };
#endif
/*--------------------------------------------------------------------------*/
#define FxaaToFloat3(a) FxaaFloat3((a), (a), (a))
/*--------------------------------------------------------------------------*/
float4 FxaaTexLod0(FxaaTex tex, float2 pos) {
    #if FXAA_GLSL
        return textureLod(tex, pos.xy, 0.0f);
    #endif
    #if FXAA_HLSL_3
        return tex2Dlod(tex, float4(pos.xy, 0.0f, 0.0f)); 
    #endif
    #if FXAA_HLSL_4
        return tex.tex.SampleLevel(tex.smpl, pos.xy, 0.0f);
    #endif
}
/*--------------------------------------------------------------------------*/
float4 FxaaTexGrad(FxaaTex tex, float2 pos, float2 grad) {
    #if FXAA_GLSL
        return textureGrad(tex, pos.xy, grad, grad);
    #endif
    #if FXAA_HLSL_3
        return tex2Dgrad(tex, pos.xy, grad, grad); 
    #endif
    #if FXAA_HLSL_4
        return tex.tex.SampleGrad(tex.smpl, pos.xy, grad, grad);
    #endif
}
/*--------------------------------------------------------------------------*/
float4 FxaaTexOff(FxaaTex tex, float2 pos, int2 off, float2 rcpFrame) {
    #if FXAA_GLSL
        return textureLodOffset(tex, pos.xy, 0.0f, off.xy);
    #endif
    #if FXAA_HLSL_3
        return tex2Dlod(tex, float4(pos.xy + (off * rcpFrame), 0, 0)); 
    #endif
    #if FXAA_HLSL_4
        return tex.tex.SampleLevel(tex.smpl, pos.xy, 0.0f, off.xy);
    #endif
}
 
/*============================================================================
                                 SRGB KNOBS
------------------------------------------------------------------------------
FXAA_SRGB_ROP - Set to 1 when applying FXAA to an sRGB back buffer.
                This will do the sRGB to linear transform, 
                as ROP will expect linear color from this shader,
                and this shader works in non-linear color.
============================================================================*/
#define FXAA_SRGB_ROP 0
 
/*============================================================================
                                DEBUG KNOBS
------------------------------------------------------------------------------
All debug knobs draw FXAA-untouched pixels in FXAA computed luma (monochrome).
 
FXAA_DEBUG_PASSTHROUGH - Red for pixels which are filtered by FXAA with a
                         yellow tint on sub-pixel aliasing filtered by FXAA.
FXAA_DEBUG_HORZVERT    - Blue for horizontal edges, gold for vertical edges. 
FXAA_DEBUG_PAIR        - Blue/green for the 2 pixel pair choice. 
FXAA_DEBUG_NEGPOS      - Red/blue for which side of center of span.
FXAA_DEBUG_OFFSET      - Red/blue for -/+ x, gold/skyblue for -/+ y.
============================================================================*/
#define FXAA_DEBUG_PASSTHROUGH 0
#define FXAA_DEBUG_HORZVERT    0
#define FXAA_DEBUG_PAIR        0
#define FXAA_DEBUG_NEGPOS      0
#define FXAA_DEBUG_OFFSET      0
/*--------------------------------------------------------------------------*/
#if FXAA_DEBUG_PASSTHROUGH || FXAA_DEBUG_HORZVERT || FXAA_DEBUG_PAIR
    #define FXAA_DEBUG 1
#endif    
#if FXAA_DEBUG_NEGPOS || FXAA_DEBUG_OFFSET
    #define FXAA_DEBUG 1
#endif
#ifndef FXAA_DEBUG
    #define FXAA_DEBUG 0
#endif
  
/*============================================================================
                              COMPILE-IN KNOBS
------------------------------------------------------------------------------
FXAA_PRESET - Choose compile-in knob preset 0-5.
------------------------------------------------------------------------------
FXAA_EDGE_THRESHOLD - The minimum amount of local contrast required 
                      to apply algorithm.
                      1.0/3.0  - too little
                      1.0/4.0  - good start
                      1.0/8.0  - applies to more edges
                      1.0/16.0 - overkill
------------------------------------------------------------------------------
FXAA_EDGE_THRESHOLD_MIN - Trims the algorithm from processing darks.
                          Perf optimization.
                          1.0/32.0 - visible limit (smaller isn't visible)
                          1.0/16.0 - good compromise
                          1.0/12.0 - upper limit (seeing artifacts)
------------------------------------------------------------------------------
FXAA_SEARCH_STEPS - Maximum number of search steps for end of span.
------------------------------------------------------------------------------
FXAA_SEARCH_ACCELERATION - How much to accelerate search,
                           1 - no acceleration
                           2 - skip by 2 pixels
                           3 - skip by 3 pixels
                           4 - skip by 4 pixels
------------------------------------------------------------------------------
FXAA_SEARCH_THRESHOLD - Controls when to stop searching.
                        1.0/4.0 - seems to be the best quality wise
------------------------------------------------------------------------------
FXAA_SUBPIX_FASTER - Turn on lower quality but faster subpix path.
                     Not recomended, but used in preset 0.
------------------------------------------------------------------------------
FXAA_SUBPIX - Toggle subpix filtering.
              0 - turn off
              1 - turn on
              2 - turn on full (ignores FXAA_SUBPIX_TRIM and CAP)
------------------------------------------------------------------------------
FXAA_SUBPIX_TRIM - Controls sub-pixel aliasing removal.
                   1.0/2.0 - low removal
                   1.0/3.0 - medium removal
                   1.0/4.0 - default removal
                   1.0/8.0 - high removal
                   0.0 - complete removal
------------------------------------------------------------------------------
FXAA_SUBPIX_CAP - Insures fine detail is not completely removed.
                  This is important for the transition of sub-pixel detail,
                  like fences and wires.
                  3.0/4.0 - default (medium amount of filtering)
                  7.0/8.0 - high amount of filtering
                  1.0 - no capping of sub-pixel aliasing removal
============================================================================*/
#ifndef FXAA_PRESET
    #define FXAA_PRESET 99
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 0)
    #define FXAA_EDGE_THRESHOLD      (1.0f/4.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/12.0f)
    #define FXAA_SEARCH_STEPS        4
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (2.0f/3.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 1)
    #define FXAA_EDGE_THRESHOLD      (1.0f/8.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/16.0f)
    #define FXAA_SEARCH_STEPS        8
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 2)
    #define FXAA_EDGE_THRESHOLD      (1.0f/8.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/24.0f)
    #define FXAA_SEARCH_STEPS        8
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 3)
    #define FXAA_EDGE_THRESHOLD      (1.0f/8.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/24.0f)
    #define FXAA_SEARCH_STEPS        16
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 4)
    #define FXAA_EDGE_THRESHOLD      (1.0f/8.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/24.0f)
    #define FXAA_SEARCH_STEPS        24
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 5)
    #define FXAA_EDGE_THRESHOLD      (1.0f/8.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/24.0f)
    #define FXAA_SEARCH_STEPS        32
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#if (FXAA_PRESET == 99)
    #define FXAA_EDGE_THRESHOLD      (1.0f/4.0f)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0f/24.0f)
    #define FXAA_SEARCH_STEPS        16
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0f/4.0f)
    #define FXAA_SUBPIX              2
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0f/4.0f)
    #define FXAA_SUBPIX_TRIM         (1.0f/4.0f)
#endif
/*--------------------------------------------------------------------------*/
#define FXAA_SUBPIX_TRIM_SCALE (1.0f/(1.0f - FXAA_SUBPIX_TRIM))
 
/*============================================================================
                                   HELPERS
============================================================================*/
// Return the luma, the estimation of luminance from rgb inputs.
// This approximates luma using one FMA instruction,
// skipping normalization and tossing out blue.
// FxaaLuma() will range 0.0 to 2.963210702.
float FxaaLuma(float3 rgb) {
    return rgb.y * (0.587f/0.299f) + rgb.x; }
/*--------------------------------------------------------------------------*/
float3 FxaaLerp3(float3 a, float3 b, float amountOfA) {
    return (FxaaToFloat3(-amountOfA) * b) + 
        ((a * FxaaToFloat3(amountOfA)) + b); } 
/*--------------------------------------------------------------------------*/
// Support any extra filtering before returning color.
float3 FxaaFilterReturn(float3 rgb) {
    #if FXAA_SRGB_ROP
        // Do sRGB encoded value to linear conversion.
        return FxaaSel3(
            rgb * FxaaToFloat3(1.0f/12.92f), 
            FxaaPow3(
                rgb * FxaaToFloat3(1.0f/1.055f) + FxaaToFloat3(0.055f/1.055f), 
                FxaaToFloat3(2.4f)),
            rgb > FxaaToFloat3(0.04045)); 
    #else
        return rgb;
    #endif
}
 
/*============================================================================
                                VERTEX SHADER
============================================================================*/
float2 FxaaVertexShader(
// Both x and y range {-1.0 to 1.0 across screen}.
float2 inPos) {
    float2 pos;
    pos.xy = (inPos.xy * FxaaFloat2(0.5f, 0.5f)) + FxaaFloat2(0.5f, 0.5f);
    return pos; }  
 
/*============================================================================
 
                                PIXEL SHADER
                                
============================================================================*/
float3 FxaaPixelShader(
// Output of FxaaVertexShader interpolated across screen.
//  xy -> actual texture position {0.0f to 1.0f}
float2 pos,
// Input texture.
FxaaTex tex,
// RCPFRAME SHOULD PIXEL SHADER CONSTANTS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// {1.0f/frameWidth, 1.0f/frameHeight}
float2 rcpFrame) {
    
/*----------------------------------------------------------------------------
            EARLY EXIT IF LOCAL CONTRAST BELOW EDGE DETECT LIMIT
------------------------------------------------------------------------------
Majority of pixels of a typical image do not require filtering, 
often pixels are grouped into blocks which could benefit from early exit 
right at the beginning of the algorithm. 
Given the following neighborhood, 
 
      N   
    W M E
      S   
    
If the difference in local maximum and minimum luma (contrast "range") 
is lower than a threshold proportional to the maximum local luma ("rangeMax"), 
then the shader early exits (no visible aliasing). 
This threshold is clamped at a minimum value ("FXAA_EDGE_THRESHOLD_MIN")
to avoid processing in really dark areas.    
----------------------------------------------------------------------------*/
    float3 rgbN = FxaaTexOff(tex, pos.xy, FxaaInt2( 0,-1), rcpFrame).xyz;
    float3 rgbW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 0), rcpFrame).xyz;
    float3 rgbM = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 0), rcpFrame).xyz;
    float3 rgbE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 0), rcpFrame).xyz;
    float3 rgbS = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 1), rcpFrame).xyz;
    float lumaN = FxaaLuma(rgbN);
    float lumaW = FxaaLuma(rgbW);
    float lumaM = FxaaLuma(rgbM);
    float lumaE = FxaaLuma(rgbE);
    float lumaS = FxaaLuma(rgbS);
    float rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));
    float rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));
    float range = rangeMax - rangeMin;
    #if FXAA_DEBUG
        float lumaO = lumaM / (1.0f + (0.587f/0.299f));
    #endif        
    if(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD)) {
        #if FXAA_DEBUG
            return FxaaFilterReturn(FxaaToFloat3(lumaO));
        #endif
        return FxaaFilterReturn(rgbM); }
    #if FXAA_SUBPIX > 0
        #if FXAA_SUBPIX_FASTER
            float3 rgbL = (rgbN + rgbW + rgbE + rgbS + rgbM) * 
                FxaaToFloat3(1.0f/5.0f);
        #else
            float3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS;
        #endif
    #endif        
    
/*----------------------------------------------------------------------------
                               COMPUTE LOWPASS
------------------------------------------------------------------------------
FXAA computes a local neighborhood lowpass value as follows,
 
  (N + W + E + S)/4
  
Then uses the ratio of the contrast range of the lowpass 
and the range found in the early exit check, 
as a sub-pixel aliasing detection filter. 
When FXAA detects sub-pixel aliasing (such as single pixel dots), 
it later blends in "blendL" amount 
of a lowpass value (computed in the next section) to the final result.
----------------------------------------------------------------------------*/
    #if FXAA_SUBPIX != 0
        float lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25f;
        float rangeL = abs(lumaL - lumaM);
    #endif        
    #if FXAA_SUBPIX == 1
        float blendL = max(0.0f, 
            (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE; 
        blendL = min(FXAA_SUBPIX_CAP, blendL);
    #endif
    #if FXAA_SUBPIX == 2
        float blendL = rangeL / range; 
    #endif
    #if FXAA_DEBUG_PASSTHROUGH
        #if FXAA_SUBPIX == 0
            float blendL = 0.0f;
        #endif
        return FxaaFilterReturn(
            FxaaFloat3(1.0f, blendL/FXAA_SUBPIX_CAP, 0.0f));
    #endif    
    
/*----------------------------------------------------------------------------
                    CHOOSE VERTICAL OR HORIZONTAL SEARCH
------------------------------------------------------------------------------
FXAA uses the following local neighborhood,
 
    NW N NE
    W  M  E
    SW S SE
    
To compute an edge amount for both vertical and horizontal directions.
Note edge detect filters like Sobel fail on single pixel lines through M.
FXAA takes the weighted average magnitude of the high-pass values 
for rows and columns as an indication of local edge amount.
 
A lowpass value for anti-sub-pixel-aliasing is computed as 
    (N+W+E+S+M+NW+NE+SW+SE)/9.
This full box pattern has higher quality than other options.
 
Note following this block, both vertical and horizontal cases
flow in parallel (reusing the horizontal variables).
----------------------------------------------------------------------------*/
    float3 rgbNW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1,-1), rcpFrame).xyz;
    float3 rgbNE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1,-1), rcpFrame).xyz;
    float3 rgbSW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 1), rcpFrame).xyz;
    float3 rgbSE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 1), rcpFrame).xyz;
    #if (FXAA_SUBPIX_FASTER == 0) && (FXAA_SUBPIX > 0)
        rgbL += (rgbNW + rgbNE + rgbSW + rgbSE);
        rgbL *= FxaaToFloat3(1.0/9.0f);
    #endif
    float lumaNW = FxaaLuma(rgbNW);
    float lumaNE = FxaaLuma(rgbNE);
    float lumaSW = FxaaLuma(rgbSW);
    float lumaSE = FxaaLuma(rgbSE);
    float edgeVert = 
        abs((0.25f * lumaNW) + (-0.5f * lumaN) + (0.25f * lumaNE)) +
        abs((0.50f * lumaW ) + (-1.0f * lumaM) + (0.50f * lumaE )) +
        abs((0.25f * lumaSW) + (-0.5f * lumaS) + (0.25f * lumaSE));
    float edgeHorz = 
        abs((0.25f * lumaNW) + (-0.5f * lumaW) + (0.25f * lumaSW)) +
        abs((0.50f * lumaN ) + (-1.0f * lumaM) + (0.50f * lumaS )) +
        abs((0.25f * lumaNE) + (-0.5f * lumaE) + (0.25f * lumaSE));
    bool horzSpan = edgeHorz >= edgeVert;
    #if FXAA_DEBUG_HORZVERT
        if(horzSpan) return FxaaFilterReturn(FxaaFloat3(1.0f, 0.75f, 0.00f));
        else         return FxaaFilterReturn(FxaaFloat3(0.0f, 0.50f, 1.00f));
    #endif
    float lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x;
    if(!horzSpan) lumaN = lumaW;
    if(!horzSpan) lumaS = lumaE;
    float gradientN = abs(lumaN - lumaM);
    float gradientS = abs(lumaS - lumaM);
    lumaN = (lumaN + lumaM) * 0.5f;
    lumaS = (lumaS + lumaM) * 0.5f;
    
/*----------------------------------------------------------------------------
                CHOOSE SIDE OF PIXEL WHERE GRADIENT IS HIGHEST
------------------------------------------------------------------------------
This chooses a pixel pair. 
For "horzSpan == true" this will be a vertical pair,
 
    [N]     N
    [M] or [M]
     S     [S]
 
Note following this block, both {N,M} and {S,M} cases
flow in parallel (reusing the {N,M} variables).
 
This pair of image rows or columns is searched below
in the positive and negative direction 
until edge status changes 
(or the maximum number of search steps is reached).
----------------------------------------------------------------------------*/    
    bool pairN = gradientN >= gradientS;
    #if FXAA_DEBUG_PAIR
        if(pairN) return FxaaFilterReturn(FxaaFloat3(0.0f, 0.0f, 1.0f));
        else      return FxaaFilterReturn(FxaaFloat3(0.0f, 1.0f, 0.0f));
    #endif
    if(!pairN) lumaN = lumaS;
    if(!pairN) gradientN = gradientS;
    if(!pairN) lengthSign *= -1.0f;
    float2 posN;
    posN.x = pos.x + (horzSpan ? 0.0f : lengthSign * 0.5f);
    posN.y = pos.y + (horzSpan ? lengthSign * 0.5f : 0.0f);
    
/*----------------------------------------------------------------------------
                         CHOOSE SEARCH LIMITING VALUES
------------------------------------------------------------------------------
Search limit (+/- gradientN) is a function of local gradient.
----------------------------------------------------------------------------*/
    gradientN *= FXAA_SEARCH_THRESHOLD;
    
/*----------------------------------------------------------------------------
    SEARCH IN BOTH DIRECTIONS UNTIL FIND LUMA PAIR AVERAGE IS OUT OF RANGE
------------------------------------------------------------------------------
This loop searches either in vertical or horizontal directions,
and in both the negative and positive direction in parallel.
This loop fusion is faster than searching separately.
 
The search is accelerated using FXAA_SEARCH_ACCELERATION length box filter
via anisotropic filtering with specified texture gradients.
----------------------------------------------------------------------------*/
    float2 posP = posN;
    float2 offNP = horzSpan ? 
        FxaaFloat2(rcpFrame.x, 0.0f) :
        FxaaFloat2(0.0f, rcpFrame.y); 
    float lumaEndN = lumaN;
    float lumaEndP = lumaN;
    bool doneN = false;
    bool doneP = false;
    #if FXAA_SEARCH_ACCELERATION == 1
        posN += offNP * FxaaFloat2(-1.0f, -1.0f);
        posP += offNP * FxaaFloat2( 1.0f,  1.0f);
    #endif
    #if FXAA_SEARCH_ACCELERATION == 2
        posN += offNP * FxaaFloat2(-1.5f, -1.5f);
        posP += offNP * FxaaFloat2( 1.5f,  1.5f);
        offNP *= FxaaFloat2(2.0f, 2.0f);
    #endif
    #if FXAA_SEARCH_ACCELERATION == 3
        posN += offNP * FxaaFloat2(-2.0f, -2.0f);
        posP += offNP * FxaaFloat2( 2.0f,  2.0f);
        offNP *= FxaaFloat2(3.0f, 3.0f);
    #endif
    #if FXAA_SEARCH_ACCELERATION == 4
        posN += offNP * FxaaFloat2(-2.5f, -2.5f);
        posP += offNP * FxaaFloat2( 2.5f,  2.5f);
        offNP *= FxaaFloat2(4.0f, 4.0f);
    #endif
    for(uint i = 0; i < FXAA_SEARCH_STEPS; i++) {
        #if FXAA_SEARCH_ACCELERATION == 1
            if(!doneN) lumaEndN = 
                FxaaLuma(FxaaTexLod0(tex, posN.xy).xyz);
            if(!doneP) lumaEndP = 
                FxaaLuma(FxaaTexLod0(tex, posP.xy).xyz);
        #else
            if(!doneN) lumaEndN = 
                FxaaLuma(FxaaTexGrad(tex, posN.xy, offNP).xyz);
            if(!doneP) lumaEndP = 
                FxaaLuma(FxaaTexGrad(tex, posP.xy, offNP).xyz);
        #endif
        doneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);
        doneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);
        if(doneN && doneP) break;
        if(!doneN) posN -= offNP;
        if(!doneP) posP += offNP; }
    
/*----------------------------------------------------------------------------
               HANDLE IF CENTER IS ON POSITIVE OR NEGATIVE SIDE 
------------------------------------------------------------------------------
FXAA uses the pixel's position in the span 
in combination with the values (lumaEnd*) at the ends of the span,
to determine filtering.
 
This step computes which side of the span the pixel is on. 
On negative side if dstN < dstP,
 
     posN        pos                      posP
      |-----------|------|------------------|
      |           |      |                  | 
      |<--dstN--->|<---------dstP---------->|
                         |
                    span center
                    
----------------------------------------------------------------------------*/
    float dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;
    float dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;
    bool directionN = dstN < dstP;
    #if FXAA_DEBUG_NEGPOS
        if(directionN) return FxaaFilterReturn(FxaaFloat3(1.0f, 0.0f, 0.0f));
           else        return FxaaFilterReturn(FxaaFloat3(0.0f, 0.0f, 1.0f));
    #endif
    lumaEndN = directionN ? lumaEndN : lumaEndP;
    
/*----------------------------------------------------------------------------
         CHECK IF PIXEL IS IN SECTION OF SPAN WHICH GETS NO FILTERING
------------------------------------------------------------------------------
If both the pair luma at the end of the span (lumaEndN) 
and middle pixel luma (lumaM)
are on the same side of the middle pair average luma (lumaN),
then don't filter.
 
Cases,
 
(1.) "L",
  
               lumaM
                 |
                 V    XXXXXXXX <- other line averaged
         XXXXXXX[X]XXXXXXXXXXX <- source pixel line
        |      .      | 
    --------------------------                    
       [ ]xxxxxx[x]xx[X]XXXXXX <- pair average
    --------------------------           
        ^      ^ ^    ^
        |      | |    |
        .      |<---->|<---------- no filter region
        .      | |    |
        . center |    |
        .        |  lumaEndN 
        .        |    .
        .      lumaN  .
        .             .
        |<--- span -->|
        
                        
(2.) "^" and "-",
  
                               <- other line averaged
          XXXXX[X]XXX          <- source pixel line
         |     |     | 
    --------------------------                    
        [ ]xxxx[x]xx[ ]        <- pair average
    --------------------------           
         |     |     |
         |<--->|<--->|<---------- filter both sides
 
 
(3.) "v" and inverse of "-",
  
    XXXXXX           XXXXXXXXX <- other line averaged
    XXXXXXXXXXX[X]XXXXXXXXXXXX <- source pixel line
         |     |     |
    --------------------------                    
    XXXX[X]xxxx[x]xx[X]XXXXXXX <- pair average
    --------------------------           
         |     |     |
         |<--->|<--->|<---------- don't filter both!
 
         
Note the "v" case for FXAA requires no filtering.
This is because the inverse of the "-" case is the "v".
Filtering "v" case turns open spans like this,
 
    XXXXXXXXX
    
Into this (which is not desired),
 
    x+.   .+x
    XXXXXXXXX
 
----------------------------------------------------------------------------*/
    if(((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0)) 
        lengthSign = 0.0f;
 
/*----------------------------------------------------------------------------
                COMPUTE SUB-PIXEL OFFSET AND FILTER SPAN
------------------------------------------------------------------------------
FXAA filters using a bilinear texture fetch offset 
from the middle pixel M towards the center of the pair (NM below).
Maximum filtering will be half way between pair.
Reminder, at this point in the code, 
the {N,M} pair is also reused for all cases: {S,M}, {W,M}, and {E,M}.
 
    +-------+
    |       |    0.5 offset
    |   N   |     |
    |       |     V
    +-------+....---
    |       |
    |   M...|....---
    |       |     ^
    +-------+     |
    .       .    0.0 offset
    .   S   .
    .       .
    .........
 
Position on span is used to compute sub-pixel filter offset using simple ramp,
 
             posN           posP
              |\             |<------- 0.5 pixel offset into pair pixel
              | \            |
              |  \           |
    ---.......|...\..........|<------- 0.25 pixel offset into pair pixel
     ^        |   ^\         |
     |        |   | \        |
     V        |   |  \       |
    ---.......|===|==========|<------- 0.0 pixel offset (ie M pixel)
     ^        .   |   ^      .
     |        .  pos  |      .
     |        .   .   |      .
     |        .   . center   .
     |        .   .          .
     |        |<->|<---------.-------- dstN
     |        .   .          .    
     |        .   |<-------->|<------- dstP    
     |        .             .
     |        |<------------>|<------- spanLength    
     |
    subPixelOffset
    
----------------------------------------------------------------------------*/
    float spanLength = (dstP + dstN);
    dstN = directionN ? dstN : dstP;
    float subPixelOffset = (0.5f + (dstN * (-1.0f/spanLength))) * lengthSign;
    #if FXAA_DEBUG_OFFSET
        float ox = horzSpan ? 0.0f : subPixelOffset*2.0/rcpFrame.x;
        float oy = horzSpan ? subPixelOffset*2.0/rcpFrame.y : 0.0f;
        if(ox < 0.0f) return FxaaFilterReturn(
            FxaaLerp3(FxaaToFloat3(lumaO), 
                      FxaaFloat3(1.0f, 0.0f, 0.0f), -ox));
        if(ox > 0.0f) return FxaaFilterReturn(
            FxaaLerp3(FxaaToFloat3(lumaO), 
                      FxaaFloat3(0.0f, 0.0f, 1.0f),  ox));
        if(oy < 0.0f) return FxaaFilterReturn(
            FxaaLerp3(FxaaToFloat3(lumaO), 
                      FxaaFloat3(1.0f, 0.6f, 0.2f), -oy));
        if(oy > 0.0f) return FxaaFilterReturn(
            FxaaLerp3(FxaaToFloat3(lumaO), 
                      FxaaFloat3(0.2f, 0.6f, 1.0f),  oy));
        return FxaaFilterReturn(FxaaFloat3(lumaO, lumaO, lumaO));
    #endif
    float3 rgbF = FxaaTexLod0(tex, FxaaFloat2(
        pos.x + (horzSpan ? 0.0f : subPixelOffset),
        pos.y + (horzSpan ? subPixelOffset : 0.0f))).xyz;
    #if FXAA_SUBPIX == 0
        return FxaaFilterReturn(rgbF); 
    #else        
        return FxaaFilterReturn(FxaaLerp3(rgbL, rgbF, blendL)); 
    #endif
}
```


----------



## AMD (2. August 2011)

Ich habe zuletzt ein paar Dinge optimiert (der Texturloader hatte 2 Bugs) und auch Objekte aus GTA 3 eingebunden (einfach mal so aus spaß ).



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Werde demnächst mal eine richtige Map bauen und dann auch neue Screens folgen lassen.
Die Arbeiten an der Engine an sich gehen natürlich auch weiter aber für manche Dinge braucht man einfach ein Testareal


----------



## Torchlight (2. August 2011)

Sieht sehr geil aus, würde mich auch für weitere Details und evtl Code interessieren.
Habs abonniert und werde dein Projekt weiter verfolgen


----------



## AMD (3. August 2011)

Nochmal danke für den positiven Zuspruch von allen 

Hab zwar heute und in den nächsten 1-2 Tagen wohl keine neuen Bilder, weil ich arbeite eher unter der Haube  aber hab heute mal wieder ganz gut was geschafft.
Konnte einige Dinge für die neue Kollisionserkennung coden und auch etliche Dinge im Code aufräumen sowie optimieren. Den Performanceanstieg merkt man schon deutlich 

Werde die Tage dann berichten was ich so gemacht habe aber mit Bilder siehts ja meist trotzdem interessanter aus 
Werd mich auch bald mal an 3ds max ransetzten und paar schöne Dinge modellieren.


----------



## Hübie (4. August 2011)

Finde ich sau interessant sowas von Hand zu machen. Vor allem die Optimierung. 
Mach dir kein Streß wir ham Zeit


----------



## AMD (4. August 2011)

Hehe ich find das Thema ja auch sehr interessant und daher beschäftige ich mich auch damit! 
Aber ich versuche schon so schnell wie möglich zu arbeiten! Gerade jetzt wo Semesterferien sind muss ich das etwas ausnutzen


----------



## mf_Jade (4. August 2011)

Huhu, sieht klasse aus bisher. Ich setz hier mal ein Abo damit ich ja nix verpasse.


----------



## AMD (4. August 2011)

Hab mich heute doch schonmal an 3ds max rangesetzt und schnell was zusammengebastelt! Bin zwar nicht gerade sehr stolz auf die Modelle/Texturen aber naja... Bau mir halt überall so ein paar Kleine Gebiete zusammen um bestimmte Dinge zu testen und dafür erfüllts den Zweck voll und ganz! 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Neue Bilder folgen dann demnächst.


----------



## mf_Jade (4. August 2011)

Denk dran das du nen Editor draus bastelst  Was studierst du denn?


----------



## AMD (4. August 2011)

Hehe, ja ich mache erstmal eine Engine und dann ein SDK dafür!
Aktuell sind paar Dinge noch zu umständlich aber dafür werd ich auch mal bald Tools schreiben^^

Computer Engineering ♥


----------



## mf_Jade (4. August 2011)

Dann riecht doch das Projekt nach Abschlussarbeit oder?


----------



## AMD (4. August 2011)

Haha na mal schauen... wär schon geil 

Aber wir bekommen auch 2 Themenvorschläge...
Ein Thema war was mit einem Mikrokontroller programmieren und das andere was mit embedded Systems... naja bin ja jetzt erst im 3. Semester und unser Studiengang geht 7... hab also noch etwas Zeit ^^


----------



## AMD (4. August 2011)

Nochmal ein kleines Update zum Ende des Tages.

- Fullscreen Mode wurde eingebaut
Über ein Config File kann entweder im Fullscreen Modus oder im Fenstermodus die Engine ausgeführt werden sowie eine beliebige größe gewählt werden. Der Fullscreen Modus nimmt automatisch die höchste Auflösung.

- Performance Verbesserung - Multithreading
Aktuell werden nun 2 Theards/Kerne unterstützt.
1 Kern ist für das 3D Rendering verantwortlich (auch wenns die GPU macht - ein gewisser Datenaustausch besteht ja schon)
Der 2. Kern ist für andere Berechnungen wie der Kollisionserkennung oder der Kamerasteuerung verantwortlich.


----------



## joffal (5. August 2011)

AMD schrieb:


> - Performance Verbesserung - Multithreading
> Aktuell werden nun 2 Theards/Kerne unterstützt.
> 1 Kern ist für das 3D Rendering verantwortlich (auch wenns die GPU macht - ein gewisser Datenaustausch besteht ja schon)
> Der 2. Kern ist für andere Berechnungen wie der Kollisionserkennung oder der Kamerasteuerung verantwortlich.


 
Hi,
dein projekt ist wirklich hamma 

Wie macht man das eigentlich mit Mutithreading? Weil wenn ich meine Programme mit mehreren Threads (C#) laufen lasse, dann wird unter Last trotzdem immer nur ein Kern ausgelastet 
Dabei hab ich hier 6 zur Verfügung und wollte sie auch mal benutzen!


----------



## oGuzee (5. August 2011)

Sehr schöne Arbeit bis hierhin! Bin absoulut dabei!




AMD schrieb:


> Computer Engineering ♥


 
Dafür habe ich gestern meine zusage bekommen! Yeeeeeeeeeeeeeeeeeeeeeha! Dann habe ich ja einen der mich durch das Studium mit Tipps und Tricks begleitet! 
Ach so und wenn du das nicht als Abschlussarbeit nehmen kannst, ich übernehme gerne (Guttenberg-style)


----------



## AMD (5. August 2011)

@Joffal: Wie das bei C# geht kann ich dir auch nicht sagen - da kenn ich mich nicht wirklich mit aus ^^
Ich hab halt einige Tutorials studiert und irgendwann gings halt  Fand das Thema aber ganz am Anfang auch nicht so leicht.

@oGunzee: Da du aus Berlin kommst denke ich mal auch an der HTW-Berlin? 
Stell dich auf viel rechnen ein!


----------



## oGuzee (5. August 2011)

AMD schrieb:


> @oGunzee: Da du aus Berlin kommst denke ich mal auch an der HTW-Berlin?
> Stell dich auf viel rechnen ein!


 
Ah geil mir ist garnicht aufgefallen das du auch BERLINER (geilste Stadt ever) bist! Sehr gut dann habe ich auch einen Büffelpartner 
Ich hoffe du hast die ganzen Unterlagen der vorherigen Semester noch! Ach so ja klar HTW


----------



## Robonator (5. August 2011)

Sehr interessant dein Projekt.  Auf den letzten Screens sah das doch schon ein wenig wie GTA3 Grafik aus  Also von den Texuren her


----------



## mf_Jade (5. August 2011)

Die Texturen hat er auch von dort gemopst^^


----------



## AMD (5. August 2011)

Hehe jap! Ich hab auch noch alle Unterlagen! Musst mir dann mal sagen was du für Dozenten hast xD
Aber gerade wenn ihr solche Protokolle machen müsst für die ganzen Labore (Physik, Elektrotechnik, Elektronik, Assembler etc.) kann ich bestimmt weiterhelfen 


Hehe jap es sind GTA3 Texturen - schuldig 
Ich kann mich nur jetzt nicht auch noch an Photoshop setzen denn schließlich code ich ja hauptsächlich und da such ich mir hier und da gerne mal fertige Dinge zusammen!
Im Internet gibts ja bestimmt irgendwo eine free texture library wenn ich später mal ne kleine (und ordentliche) Map mache^^


----------



## Robonator (5. August 2011)

Wie sieht das eigentlich aus in der Welt der Programmierung  Braucht man da wirklich so ein krasses Mathe verständniss?
Irgednwas zu programmieren würde mich auch schon interessieren.  Hab mir eben Python runtergeladen weil im Internet steht das es eine sehr einfach Sprache ist.


----------



## AMD (5. August 2011)

Also für mein Projekt hier erschlägt mich die Mathematik an einigen stellen 
Aber ich hatte zum Glück einige Dinge schon in der Uni ^^ und um nochmal auf deine Frage zu antworten: Ja, Mathe braucht man definitiv - vorallem für komplexere Sachen.

Ich hatte damals in der Schule mit Delphi angefangen und dann aber die Scriptsprache lua gelernt... fand ich für den Anfang ziemlich einfach und es vermittelt ja trotzdem ein gutes Verständnis für viele Dinge.
Mittlerweile bin ich aber nur noch mit C/C++ und Lua unterwegs (Lua weil ich für  2 Gameserver noch ein Script programmiere^^)


----------



## fac3l3ss (5. August 2011)

GEIL! 
Nur eine Frage, mit welcher Sprache programmierst du das und wie lange lernst du die Sprache?
OK, waren 2 Fragen -.-


MfG
fac3l3ss


----------



## Robonator (5. August 2011)

fac3l3ss schrieb:


> GEIL!
> Nur eine Frage, mit welcher Sprache programmierst du das und wie lange lernst du die Sprache?
> OK, waren 2 Fragen -.-
> 
> ...


 
Hat er doch geschrieben   Und für das hier benutzt der C++ oder C+ oder C whatever   aber auf irgendeiner Seite stand das ^^


----------



## fac3l3ss (5. August 2011)

Robonator schrieb:


> Hat er doch geschrieben   Und für das hier benutzt der C++ oder C+ oder C whatever   aber auf irgendeiner Seite stand das ^^


 Stimmt...
Aber wie lange muss man dafür lernen?


MfG
fac3l3ss


----------



## AMD (5. August 2011)

fac3l3ss schrieb:


> GEIL!
> Nur eine Frage, mit welcher Sprache programmierst du das und wie lange lernst du die Sprache?
> *OK, waren 2 Fragen -.-*
> 
> ...


 
Programmieren tue ich das mit C++ und mitlerweile dürften es ca. 2 Jahre C/C++ sein - allerdings hilft mir auch noch die Erfahrung durch andere Sprachen vorher ^^

Edit// Okay ich finde man kann das auch schneller lernen.
Mit ein paar guten OpenGL Tutorials (C++ mal außen vorgelassen) kommt man da sehr schnell zu guten Ergebnissen. Natürlich muss man auch ehrgeizig dafür sein!


----------



## fac3l3ss (5. August 2011)

AMD schrieb:


> Programmieren tue ich das mit C++ und mitlerweile dürften es ca. 2 Jahre C/C++ sein - allerdings hilft mir auch noch die Erfahrung durch andere Sprachen vorher ^^


 OK, THX für die Antwort.
Wo lernst du das? Buch, Online, Kurs, wieauchimmerdasgehensoll mit Ausprobieren? 


MfG
fac3l3ss


----------



## Robonator (5. August 2011)

Naja ich glaube ich lass mich überraschen was ich ab den 11.8. alles lernen werde. Mir wurde ja schon gesagt das wir auf der Schule unter anderem C++ lernen werden


----------



## AMD (5. August 2011)

Also für den OpenGL Einstieg kann ich diese Seite sehr empfehlen:
OpenGL Video Tutorial - Home

Hab dort viele Basics gelernt und mitlerweile..hm.. ich kanns irgendwie 
Ab und an muss ich mir halt nur noch einzelne Befehle angucken wie die funktionieren und dafür gibts ja google ^^

Edit// C++ hab ich übrigen mithilfe eines Buchen gelernt und konnte auch nochmal vieles in der Uni verbessern.
Gerade die Sachen mit Klassen, Vererbung, Virtuelle Methoden etc. waren mir eher neu.


----------



## bbcsb (5. August 2011)

Robonator schrieb:


> Naja ich glaube ich lass mich überraschen was ich ab den 11.8. alles lernen werde. Mir wurde ja schon gesagt das wir auf der Schule unter anderem C++ lernen werden


 
Also wenn es um (Berufs-)schule geht, dann freu dich nicht zu sehr. Dort werden meist nur die Basics für die Prüfung gelernt, wirklich gut wirste dann die Programmiersprache nicht können. War zumindest bei mir so 

//edit: Ups, sehr OT. Naja ich les immer in dem Thread hier mit, jetzt konnte ich auch mal was dazu sagen... mehr oder minder. Gefällt mir aber im Kern schonmal ganz gut - als Lernprojekt. Gfx-Engines gibts ja schon wie Sand am Meer


----------



## Robonator (5. August 2011)

bbcsb schrieb:


> Also wenn es um (Berufs-)schule geht, dann freu dich nicht zu sehr. Dort werden meist nur die Basics für die Prüfung gelernt, wirklich gut wirste dann die Programmiersprache nicht können. War zumindest bei mir so
> 
> //edit: Ups, sehr OT. Naja ich les immer in dem Thread hier mit, jetzt konnte ich auch mal was dazu sagen... mehr oder minder. Gefällt mir aber im Kern schonmal ganz gut - als Lernprojekt. Gfx-Engines gibts ja schon wie Sand am Meer


 
Naja Bei uns heisst es Berufsfachschule 
Aber immerhin lerne ich dort überhaupt was.


----------



## AMD (5. August 2011)

@bbcsb: Was verstehst du denn unter Gfx-Engine? 
Ich will hier schon was ordentliches bauen womit man auch mal was anfangen kann und es nicht nur stumpf Modelle rendert


----------



## Tw3Ak3r (6. August 2011)

NIce !


----------



## AMD (7. August 2011)

So mal wieder ein kleines update.

Ich habe heute an der neuen Kollisionsberechnung gearbeitet und das steht natürlich im Verbund mit Mathe 
Jedenfalls wird nun das aktuelle Polygone, womit eine Kollision bevorstehen könnte herrausgepickt und die Schnittpunkt berechnet - also der Punkt wo die Kollision als erstes stattfindet.

Hab das mal grafisch darstellen lassen:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Rot = Aktuelles Polygone
Grün = Schnittpunkt

Ist natürlich noch nicht fertig aber definitiv ein sehr guter Anfang


----------



## tobsel88 (7. August 2011)

Wow schaut sehr gut aus!


----------



## Robonator (7. August 2011)

Boah das sind aber ganz schön viele Polygone  

Spaß beiseite. Weiter so!    Frag mich wie das wohl am Ende aussehen wird.


----------



## AMD (7. August 2011)

Robonator schrieb:


> Boah das sind aber ganz schön viele Polygone
> 
> Spaß beiseite. Weiter so!    Frag mich wie das wohl am Ende aussehen wird.


 Ehrlich gesagt hab ich das auch so gedacht!^^ Aber andererseits, es ist eine gerade Fläche! Da brauch ich nicht unbedingt mehr^^

Hab jetzt eben noch eben ca. 2 Stunden gecoded und die Kollisionsberechnung auf der X und Y Achse läuft. Morgen noch für Z anpassen und dann aufräumen! Der Code sieht aus.. schlimm  Aber wird halt noch ordentlich gemacht^^
Bilder gibts demnächst (vermutlich auch mal ein Video).


----------



## joffal (8. August 2011)

hast du auch schon einen einfachen Model-Importer?
Dann würde sich das mit den Polys ganz schnell ändern


----------



## AMD (8. August 2011)

Jap der wurde mit als erstes gebaut^^
Bei den Gebäuden und was ich da so hab baue ich sicher nicht so Punkt für Punkt zusammen und texturiere die da


----------



## mf_Jade (8. August 2011)

Warum nicht? Sei mal nicht so faul! 

Magst mal ne kostprobe an Code hier rein stellen? Ich würd mir das gern mal ansehen wie sowas aufgebaut ist.


----------



## AMD (8. August 2011)

Hehe na lass mich bitte erstmal paar Grundlegende Sachen fertig machen!^^
Die Codes müssen alle noch aufgeräumt werden und ich will hier ja keinen schlechten Eindruck vermitteln


----------



## joffal (8. August 2011)

AMD schrieb:


> Jap der wurde mit als erstes gebaut^^
> Bei den Gebäuden und was ich da so hab baue ich sicher nicht so Punkt für Punkt zusammen und texturiere die da


 
selber gecodet oder mit TUtorial etc? Weil ich hab meinen komplett selber gemacht und der bereitet mir nun mehr probleme, also wenn ich die ganzen Models per hand gemacht hätte


----------



## AMD (8. August 2011)

Joa natürlich selber 
Und wo sind die Probleme?^^


----------



## bbcsb (10. August 2011)

AMD schrieb:


> @bbcsb: Was verstehst du denn unter Gfx-Engine?
> Ich will hier schon was ordentliches bauen womit man auch mal was anfangen kann und es nicht nur stumpf Modelle rendert


 
Unreal Engine, Unity etc. pp. Sowas eben  Wie gesagt, ich finds schon recht cool was du hier machst, also nicht falsch verstehen


----------



## AMD (11. August 2011)

@bbcsb: Okay alles klar!
Dachte mir halt das es eben auch mal interessant für andere ist so eine Entwicklung hier zu zeigen 

Habe mich nun die letzten 2-3 Tage weiter mit der Kollisionsberechnung, Lichtberechnung sowie Schattenberechnung beschäftigt sowie GLSL (Open GL Shader Language).
Gerade die Shader Language ist an einigen Stellen wirklich hilfreich und ich hoffe ich kann da bald erste Ergebnisse zeigen


----------



## spionkaese (11. August 2011)

AMD schrieb:


> @bbcsb: Okay alles klar!
> Dachte mir halt das es eben auch mal interessant für andere ist so eine Entwicklung hier zu zeigen
> 
> Habe mich nun die letzten 2-3 Tage weiter mit der Kollisionsberechnung, Lichtberechnung sowie Schattenberechnung beschäftigt sowie GLSL (Open GL Shader Language).
> Gerade die Shader Language ist an einigen Stellen wirklich hilfreich und ich hoffe ich kann da bald erste Ergebnisse zeigen


Und wie siehts mit Post Processing aus ?


----------



## mf_Jade (11. August 2011)

spionkaese schrieb:


> Und wie siehts mit Post Processing aus ?


 
Seid ihr aber hungrig. Das ist ein Ein-Mann-Projekt, da muss man geduld haben, ähnlich wie beim Duke.


----------



## AMD (11. August 2011)

@spionkaese: Hab ich natürlich noch nicht drin aber schon Sachen zu durchgelesen... ist noch garnicht so lange her!
Am liebsten würde ich immer alles nur coden wollen aber die Theorie gehört leider immer dazu^^

@mf_Jade: Ein bisschen schneller als beim Duke solls dann aber doch bei mir gehen


----------



## €eld (12. August 2011)

Falls du noch Texturen suchen solltest, kann ich dir CG-Textures empfehlen: [CG Textures] - Textures for 3D, graphic design and Photoshop! Sieht auf jeden Fall schon mal wirklich sehr gut aus! Hat bestimmt viel Arbeit gemacht.


----------



## AMD (12. August 2011)

Ui, die Texturen sind echt top! Danke für die Info


----------



## AMD (16. August 2011)

Mal wieder ein kleines Update:
- Steuerung komplett fertig integriert (inkl. Sachen wie Maussteuerung etc.)
- Kollisionsberechnung erweitert
- Erste Shader implementiert (Noch auf Testbasis)
- Allgemeine Code Strukturen geändert (für die Übersichtlichkeit des Codes)

Bilder gibts dann demnächst wieder.


----------



## mf_Jade (16. August 2011)

Wann gibts die erste Demo?  Ein Video wäre doch nicht schlecht, das du das mal in Bewegung zeigen kannst.


----------



## AMD (16. August 2011)

Hehe keine Ahnung wenns eine Demo gibt... ^^
(aber noch 2011 )

Video folgt dann demnächst wirklich noch. Kommt dann in Verbindung mit den Shadern (und noch mehr  )


----------



## fadade (16. August 2011)

AMD schrieb:


> Mal wieder ein kleines Update:
> - Steuerung komplett fertig integriert (inkl. Sachen wie *Maussteuerung *etc.)
> Bilder gibts dann demnächst wieder.


 
Hi,
ich wäre an den Vektorrechnungen für die Kamera inkl. View-Feld interessiert ... (also die Ausschnitte aus Update)
bei klappt bewegen (WASD) und Maussteuerung nach rechts/links prima. Sobald ich aber noch nach oben/unten reinprogrammiere, wird die Bewegung mit der Zeit immer träger und irgendwann kann man die Kamera mit der Maus garnicht mehr bewegen. Da es am Anfang noch geht vermute ich mal einen rechenfehler, sodass irgendein Vektor wahnwitzige und damit schwer zu berechnende Größen annimmt oder so 
Also wäre nett, wenn du mir ne PN oder so schreiben könntest 

€dit: oder hast du vielleicht einen Link zu einem Tutorial für die Maussteuerung? Weil ich zerdenk mir hier echt schon die Birne


----------



## fac3l3ss (17. August 2011)

AMD schrieb:


> Hehe keine Ahnung wenns eine Demo gibt... ^^
> (aber noch 2011 )
> 
> Video folgt dann demnächst wirklich noch. Kommt dann in Verbindung mit den Shadern (und noch mehr  )


 Ich würde dir ein Video machen, falls du das nicht selbst schaffst! 


MfG
fac3l3ss


----------



## mf_Jade (17. August 2011)

du meinst also er kriegt ne eigene 3D-Engine zum laufen, aber kein Video hin? das halt ich für unwahrscheinlich


----------



## AMD (17. August 2011)

Ich mag zwar nicht der größte Experte für Videobearbetung sein aber so eine kleine Präsentation sollte durchaus im Bereich des machbaren liegen 
Aber trotzdem danke für das Angebot 

Hab mich heute mal wieder mit Shadern beschäftigt und auch dem Rendern von Wasser sowie der Reflektion. Sieht schon ganz nett aus. Bilder folgen aber erst wenn ich komplett zufrieden mit bin


----------



## Fragile Heart (18. August 2011)

Sehr, sehr schönes Projekt! 

Mich würde mal ein etwas tieferer Einblick in das ganze interessieren.


----------



## trnapster (18. August 2011)

Respekt
Sieht auf jedenfall schon besser aus als Minecraft


----------



## tobsel88 (18. August 2011)

Bin echt auf neue Bilder gespannt


----------



## AMD (19. August 2011)

Gleich vorweg: Keine Bilder aber folgen (wirklich wirklich) bald! 

Habe heute mal den kompletten Code für das Rendering überarbeitet und ich muss schon sagen... ein bisschen stolz bin ich auf mich 
Kann die Performancesteigerung noch nicht genau bestimmen, da ich schlichtweg noch nicht ganz fertig bin aber von 300% aufwärts ist schon die Rede 

Die Shader machen zudem auch Fortschritte aber bei der Shader Language stelle ich doch noch öfters fest, dass mir da ein Hauch Übung fehlt


----------



## fadade (19. August 2011)

AMD schrieb:


> Kann die Performancesteigerung noch nicht genau bestimmen, da ich schlichtweg noch nicht ganz fertig bin aber von 300% aufwärts ist schon die Rede


 
Wie haste denn das hinbekommen? 
Letztes mal, als ich solch eine Steigerung in nem Programm hinbekommen habe, war es bei meinem Schachgegner, der dummerweise alle Züge *zweimal* durchgegangen ist ^^
eine Zeile gelöscht und *schwupps* liefs tatsächlich fast doppelt so schnell


----------



## AMD (19. August 2011)

Ich hab den Code halt geändert  
Vertex Arrays in Kombination mit Objekten (also VBO's) sind schon was feines wenn man es richtig nutzt.
Ich denke mal fast jeder beginnt mit glBegin() und glEnd()... wenn man diesen Leistungsunterschied vor Augen hat... unglaublich ^^

Muss aber auch gestehen, dass ich einen dummen Fehler im Texturbinding hatte. Dort wurden Texturen neu geladen, obwohl diese bereits fertig im VRAM waren und der GPU damit schon startklar war 


Hab nun den ersten Teil der Optimierung komplett fertig und die Leistungssteigerung beträgt nun im Durchschnitt 215%.
Allerdings kommt nun der 2. Teil, wo ich die VBO's noch etwas anpassen muss und die 300% Steigerung wird kein Problem werden


----------



## fac3l3ss (19. August 2011)

mf_Jade schrieb:


> du meinst also er kriegt ne eigene 3D-Engine zum laufen, aber kein Video hin? das halt ich für unwahrscheinlich


Man darf dochmal seine Hilfe anbieten 



AMD schrieb:


> (...)


 Ich bin gespannt! 
Aber spätestes zur Open-Beta mache ich auch ein Video! 


MfG
fac3l3ss


----------



## AMD (19. August 2011)

fac3l3ss schrieb:


> Aber spätestes zur Open-Beta mache ich auch ein Video!


 Gerne! Bisschen Werbung schadet nicht 

Was ich vorhin noch nicht erwähnte: Habe gestern erste Sachen mit WinSocket probiert und auf dem ersten Blick war das auch ganz gut!
Nach aktuellen Stand, soll die Beta 2-3 Maps haben mit einem kleinen Multiplayer... Dazu dann aber zu einem anderen Zeitpunkt mehr.


----------



## AMD (20. August 2011)

Hab wohl doch noch etwas Bildmaterial 

Mal bisschen mit Terrainrendering rumgespielt mit der Hilfe von Heighmaps... kam folgendes bei raus:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Sind zurzeit nicht alle neuen Sachen integriert (wie z.B. das neue Wasser) aber geht ja hauptsächlich ums Terrain


----------



## fadade (20. August 2011)

Schaut schonmal gut aus  bei mir sah es damals ähnlich aus, wobei ich später dann noch ne glättung drübergelegt habe, weil ich wollte größere begehbare flächen damit generiert habe und wenn man dann immer so viele/krasse höhenunterschiede hat .... naja net so pralle
   leider ist mir der Code von damals verloren gegangen -.-


----------



## AMD (20. August 2011)

Hehe jap versteh schon 
Naja man kann bei mir durch einen Parameter die Sache auch etwas "smoother" machen aber werde das alles noch ausbauen... war ja nur ein erster Test


----------



## AMD (21. August 2011)

So, habe jetzt Abend wieder mal knapp 2 Studen gecoded und die Leistung wurde erneut verbessern 
Letztes mal sagte ich ja, dass die Leistung um ca. 215% gestiegen ist, nach aktuellem Stand sind es nun schon über 600%  Und es werden noch mehr werden

Das zeigt mal wieder das der richtige Algorithmus enorm viel aus macht


----------



## mf_Jade (21. August 2011)

Klingt ja supi. Ich freu mich schon auf bewegte (hoffentlich ruckelfreie) Bilder


----------



## Hübie (23. August 2011)

Das ist ja mein reden. Man kann code sehr stark optimieren (siehe Konsolen-only-Spiele). Klasse das du uns auf dem laufenden hälst


----------



## Robonator (23. August 2011)

Freu mich immer wieder auf Updates  

btw kann mittlerweile schon nen simplen Taschenrechner mit C machen


----------



## AMD (24. August 2011)

Der neue Code fürs Rendern ist nun komplett fertig und ich bin mehr als zufrieden.
Die Szene die ich vorher mit ca. 180fps gerendert habe, läuft nun mit dem neuen Code bei 2000-2200fps  Das ist also nochmal deutlich mehr als die angepeilten gut 300% Steigerung bzw. den zuletzt 600%!

Es folgen nun auch bald mal bewegte Bilder


----------



## amdfreak (24. August 2011)

Klasse Job


----------



## fac3l3ss (24. August 2011)

amdfreak schrieb:


> Klasse Job


 Finde ich auch! 


MfG
fac3l3ss


----------



## Rk_61 (24. August 2011)

Hört sich alles sehr interessant an  würde mich über mehr Bilder und Infos freuen


----------



## Fragile Heart (26. August 2011)

Ok, ich frage einfach nochmal, ist ja vielleicht untergegangen. Ich hätte gerne ein paar Informationen zu Struktur der Engine.


----------



## AMD (27. August 2011)

Ja die Frage ging wohl wirklich etwas unter^^
Bloß, wie meinst du das denn genau mit der Struktur? Bin mir gerade nicht sicher was du da hören willst


----------



## Crymes (27. August 2011)

Krasses Projekt, sieht für einen allein verdammt gut aus (die vielen Features).
Mich würde mal interessieren, wie man den Code für die Kollisionsabfrage schreibt.


----------



## Fragile Heart (27. August 2011)

Also mich würde jetzt erstmal der Aufbau des Scene Graphen, falls vorhanden, interessieren.


----------



## AMD (28. August 2011)

Crymes schrieb:


> Krasses Projekt, sieht für einen allein verdammt gut aus (die vielen Features).
> Mich würde mal interessieren, wie man den Code für die Kollisionsabfrage schreibt.


Lässt sich einrichten 


```
bool CheckInsidePoly(float x1, float y1, float x2, float y2, float x3, float y3, float px, float py)
{
    float check = ((x2 - x1) * (py - y1)) - ((px - x1) * (y2 - y1));
    if (check > 0.0) {
        check = ((x3 - x2) * (py - y2)) - ((px - x2) * (y3 - y2));
        if (check > 0.0) {
            check = ((x1 - x3) * (py - y3)) - ((px - x3) * (y1 - y3));
            if (check > 0.0)
                return true;
        };
    };

    check = ((x2 - x1) * (py - y1)) - ((px - x1) * (y2 - y1));
    if (-check > 0.0) {
        check = ((x3 - x2) * (py - y2)) - ((px - x2) * (y3 - y2));
        if (-check > 0.0) {
            check = ((x1 - x3) * (py - y3)) - ((px - x3) * (y1 - y3));
            if (-check > 0.0)
                return true;
        };
    };
    return false;
};

void CheckCollision3D()
{
    ColCounter = 0;
    int i, j, k;
    bool Or1, Or2, Or3;
    float x1, x2, y1, y2, z1, z2; //Richtungsvektoren
    float ex, ey, ez; //Ebene
    float b, t;
    float x_fix, y_fix, z_fix;
    float uuu, vvv, www, uuu1, vvv1, www1, uuu2, vvv2, www2;
    double dist;

    for (i=0;i<Mapcounter;i++) {
        for (k=0;k<Objcounter;k++) {
            if (ObjectName[k] == MapInfoName[i])
                break;
        };

        for (j=0;j<VertexCounter[k];j++) {
            Or1 = CheckInsidePoly(Object[k][j][0][0]+MapInfo[i][0], Object[k][j][0][2]+MapInfo[i][2], Object[k][j][1][0]+MapInfo[i][0], Object[k][j][1][2]+MapInfo[i][2], Object[k][j][2][0]+MapInfo[i][0], Object[k][j][2][2]+MapInfo[i][2], Move_x, Move_z); //Y-Col
            Or2 = CheckInsidePoly(Object[k][j][0][1]+MapInfo[i][1], Object[k][j][0][2]+MapInfo[i][2], Object[k][j][1][1]+MapInfo[i][1], Object[k][j][1][2]+MapInfo[i][2], Object[k][j][2][1]+MapInfo[i][1], Object[k][j][2][2]+MapInfo[i][2], Move_y, Move_z); //X-Col

            //Aktuelles Polygone
            uuu = Collision[ColCounter][0] = Object[k][j][0][0]+MapInfo[i][0];
            vvv = Collision[ColCounter][1] = Object[k][j][0][1]+MapInfo[i][1];
            www = Collision[ColCounter][2] = Object[k][j][0][2]+MapInfo[i][2];
            uuu1 = Collision[ColCounter][3] = Object[k][j][1][0]+MapInfo[i][0];
            vvv1 = Collision[ColCounter][4] = Object[k][j][1][1]+MapInfo[i][1];
            www1 = Collision[ColCounter][5] = Object[k][j][1][2]+MapInfo[i][2];
            uuu2 = Collision[ColCounter][6] = Object[k][j][2][0]+MapInfo[i][0];
            vvv2 = Collision[ColCounter][7] = Object[k][j][2][1]+MapInfo[i][1];
            www2 = Collision[ColCounter][8] = Object[k][j][2][2]+MapInfo[i][2];

            x1 = uuu1 - uuu;
            x2 = uuu2 - uuu;
            y1 = vvv1 - vvv;
            y2 = vvv2 - vvv;
            z1 = www1 - www;
            z2 = www2 - www;

            //Ebene mit Kreuzprodukt
            ex = (y1 * z2) - (z1 * y2);
            ey = (z1 * x2) - (x1 * z2);
            ez = (x1 * y2) - (y1 * x2);

            if (Or1) {
                    ColCounter++;

                    b = ex * uuu + ey * vvv + ez * www;
                    t = (b - (Move_y * ey)) / ey;

                    final_x = Move_x;
                    final_y = Move_y + t;
                    final_z = Move_z;

                    y_fix = Move_y - final_y;
                    dist = sqrt(y_fix*y_fix);
                    if (dist < 1.5)
                        Move_y = Move_y_old;
            };

            if (Or2) {
                    ColCounter++;

                    b = ex * uuu + ey * vvv + ez * www;
                    t = (b - (Move_x * ex)) / ex;

                    final_x = Move_x + t;
                    final_y = Move_y;
                    final_z = Move_z;

                    x_fix = Move_x - final_x;
                    dist = sqrt(x_fix*x_fix);
                    if (dist < 1.5) {
                        Move_x = Move_x_old;
                    }
            };
        };
    };
};
```
Das ist definitiv keine Finalefassung des Codes, dass muss ich dazusagen.
Dieser ColCounter oder Collision[ColCounter][X] speichert nur ein paar Zwischeninfos für mich, damit ich mir grafisch ein paar Dinge ausgeben kann, die Teilweise fürs Verständnis hilfreich sind.

An sich zeigt der Code die Berechnung der Kollision für die X und Y Achse, die Z Achse funktioniert noch etwas anders und so ist der Code auch noch ein klein wenig frisiert, da ich einen Teil gerade überarbeite... Muss noch den Normalenvektor wo einbauen sonst funktioniert da was nicht... aber für einen groben Überblick reichts hoffentlich 

Also wie gesagt, später sieht das dann alles mal Ordentlich aus


----------



## AMD (28. August 2011)

Ahja, hätte auch noch ein neues Bild (das komische Objekt was so schräg rumsteht kann mal ignoriert werden )



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Geht halt vorallem um die Reflektion


----------



## AMD (1. September 2011)

Ahoi!

Zurzeit gibts leider nicht so viel zu berichten. War jetzt zuletzt an der Schattenberechnung dran aber ich muss auch zugeben mich dort teilweise etwas verrannt zu haben. Sobald die Implementierung dann allerdings abgeschlossen ist folgt auch ein Video, wo mal alles ordentlich gezeigt wird.


----------



## joffal (1. September 2011)

Hi,

programmierst du die Shader eigentlich auch selber oder gibts vllt im Inet dazu vorgefertige Abschnitte? (Weil SO ein Profi bin ich dann nun auch wieder nicht, dass ich das könnte .... bzw. ich will ja auch mal bei mir ein bisschen vorankommen und um sowas könnte ich mich dann später nochmal kümmern)

Apropos Schatten: Machste auch was mit (SS)AO ?


----------



## AMD (1. September 2011)

Also ich programmiere die Shader schon selber allerdings hab ich da noch Luft nach oben.
Ich hatte mich vorher nicht gerade mit GLSL beschäftigt aber ich merk schon selber das es vorran geht. Erstmal die Basics verstehen und dann weitersehen... Shader programmieren ist zumindest keine Sache des unmöglichen 

SSAO stand aktuell nicht auf der ToDo Liste aber an sowas hätte ich vllt. später gedacht (?!).
Hab mich dazu mal eingelesen und der algorithmus scheint auch garnicht sooo komplex zu sein... klingt also Umsetzbar. Aber damit beschäftige ich mich dann zu einem späteren Zeitpunkt.


----------



## Crymes (3. September 2011)

Zur Kollision: in der Oberen Hälfte des Quellcodes schaust du, ob in einem Koprdinatensystem sich 2 Punkte berühren (Stichwort Pythagoras ), oder?


----------



## AMD (4. September 2011)

Ein Dreieck hat ja bekanntlich 3 Linien. A=>B | B=>C | C => A
Ich überprüfe halt, ob der Punkt wo man sich befindet 3mal innerhalb dieses 3 Linien liegt. Trifft dies 3mal zu, weiss ich in welchem Dreieck ich mich befindet.


----------



## AMD (5. September 2011)

Update zur späten Stunden (oder eher frühen?) 
Die erste Version vom Shadow Mapping konnte ich nun vollenden.
Definitiv noch kein finaler Code aber für den Anfang funktionierts bis jetzt schonmal sehr gut.




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Es wird aufjedenfall noch an der Qualität geschraubt aber das kommt dann schon wieder in die Kategorie Feintuning


----------



## AMD (6. September 2011)

Sind vermutlich keiner super Bilder aber immerhin etwas ^^



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


(PCGH ftw )


----------



## AMD (6. September 2011)

Und nochmal ein update.
4xMSAA (Multisample Anti-Aliasing) integriert... sieht wesentlich angenehmer aus ingame 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Hübie (6. September 2011)

Mensch da schau ich mal ne Weile net hier rein und du kommst gleich mit MSAA und Schatten  Da steckt ja doch ne Menge hinter wenn man das mal so betrachtet. Umso schändlicher ist immer dieses rumgemecker über Crysis


----------



## Dark-Blood (7. September 2011)

Hübie schrieb:


> Mensch da schau ich mal ne Weile net hier rein und du kommst gleich mit MSAA und Schatten  Da steckt ja doch ne Menge hinter wenn man das mal so betrachtet. Umso schändlicher ist immer dieses rumgemecker über Crysis


 
Naja manche Hersteller kann man aber wirklich nicht verstehen ... 
Aber unabhängig davon ist das hier gebotene wirklich absolut spitze und ich werde es auf jeden Fall weiter beobachten


----------



## AMD (7. September 2011)

Also ich muss sagen, die Umsetzung von MSAA ist ziemlich einfach... das braucht nicht viele Zeilen Code, da es von OGL unterstützt wird 

Das Shadow Mapping werde ich wohl nochmal deutlich überarbeiten, da ich nicht sehr zufrieden mit bin 
Werde nun auf Cascaded Shadow Mapping umsteigen. Brauch zwar mehr Rechenleistung aber die Ergebnisse sind deutlich besser. (Das mit einer Auflösung von 1024 + 4-Split + gaussian blur Shader sollte selbst die Schatten aktueller Spiele in nichts nachstehen )


----------



## nahkillo94 (7. September 2011)

Was ist eigentlich das Ziel dieser Arbeit? Einfach nur eine Engine oder später auch KI, Animationen,... Ein kleines Spiel wäre doch was.


----------



## AMD (7. September 2011)

Ich hatte vorher schonmal ein paar kleinere OpenGL Projekte gemacht und wollte mich mal etwas größerem zuwenden.
Zum einen weils einfach interessant für mich ist und ich dadurch schon echt einige Dinge gelernt habe aber zum anderen wäre das vllt. auch ein Thema für die Bachelorarbeit später! (auch wenn da noch ein wenig Zeit ist).

Eine KI ist nicht geplant, Animationen hingegen schon - aber nicht im näheren Zeitraum.
Es soll letztendlich auch ein Spiel bei herrauskommen und die erste Alpha/Beta soll Q4/11 oder spätestens irgendwann Q1/12 kommen - so der Plan bisher.
Als Gamemode soll es wie ein kleiner Shooter werden (natürlich erstmal simpel gehalten mit wenig Waffen etc. aber es ist ja nur ein Testlauf!) Dieser soll dann aber ein Multiplayer sein. Ich habe auch schon erste Simple Tests mit Winsocket und OpenGL durchgeführt und das sollte wohl auch ganz gut klappen.

Aktuell wird erstmal am Wasser gearbeitet (brauch mal 1-2 Tage Pause von den doofen Schatten ). Das Wasser soll ja nicht nur so eine doofe Platte sein sondern auch Wellen haben. Leider komm ich da gerade nicht so schnell vorran aber naja... wird schon.

Edit// Okay beim Wasser gings gerade doch super vorran! Vielleicht (!) kommen morgen die ersten Pics


----------



## Hübie (8. September 2011)

Na da bin ich gespannt. Mich persönlich würde KI am meisten reizen. Aber das ist ein sehr komplexe Sache wenn man die auch noch lernen lässt...


----------



## AMD (8. September 2011)

Ich habe mal eine KI programmiert für Pong - klappt super 

Screens schaff ich leider nicht mehr so schnell wie geplant.
1. Gab es doch noch Probleme und
2. Hatte ich heute keine Zeit zum proggen.

Gebe mir aber mühe bald was zu liefern


----------



## joffal (9. September 2011)

AMD schrieb:


> Ich habe mal eine KI programmiert für Pong - klappt super


 


ist KI wirklich so schwer? nehmen wir mal an der player läuft inenr gegend rum und kommt um die ecke ... UPPS da ist ne box mitm rohr dran das schießen kann (nennt sich "die KI")
die merkt, dass der player nah dran ist und richtet sich wie ne camera auf die position des players aus und schießt. trefferquote könnte 100% xD
praktisch ein Aimbot 
nur dass man halt noch einen gegenspieler hat und nicht allein ist ^^

Lernen wird da schon schwerer ....


----------



## AMD (9. September 2011)

Also ich halte es definitiv für nix unmögliches - das steht fest ^^
Es ist halt für die Beta nicht geplant aber mal schauen was später draus wird! Ist halt nach wie vor ein 1-Mann Projekt und ich will mir keine Ziele setzen wie die, die es ein 100 köpfiges Team tut ^^


----------



## AMD (13. September 2011)

Ich habe mal eine kleine Alpha fertig gemacht, die ihr bitte testen könnt 
Es geht mir hierbei vorallem darum, ob es auf andere Hardware gut läuft oder eben Probleme auftreten.
Daher gerne mal testen und hier posten wie es läuft. (Angabe von CPU/GPU und fps wären auch nett) 

Dies soll jetzt keine super Grafik zeigen, denn vorallem die Schatten sind einfach mal mies (aber das entdeckt ihr wohl selbst). Die Cascaded Shadows werden bald fertig sein und auch ein paar andere Dinge sind in Arbeit, was die Grafik wirklich deutlich aufbessern wird - versprochen 

In der ReadMe Datei stehen zudem Informationen über die Steuerung, "f" aktiviert z.B. ingame Fullscreen oder mit "n" wechselt man zwischen Tag und Nacht 

Download:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## fadade (13. September 2011)

sooooooo jetz auch hier nochmal Rückmeldung 
Also als ich gespawnt bin dachte ich erstmal ...  Fehler? weil nur blauer Bildschirm, naja und nach 5 Minuten warten hab ich dann mal die Maus bewegt und joa dann ging alles ^^
Flüssig durchgehend @60FPS (System siehe Sig). auch MLAA ändern und Auflösung etc. ging alles problemlos.
mit MLAA = 4 sehen die Kanten echt bombe aus! Und die Texturen sowieso! Wo haste die nochmal her? GTA? brauch ich auch 
Tag/Nacht geht auch super (aber wenn man "n" gedrückt hält, dann kriegt man nach ner Zeit echt augenflimmern  )

Als Verbesserung vom JETZIGEN Zustand aus hätte ich folgendes:
- mit "Leertaste" und "a" kann man sich noch in die Gebäude rein"porten"
- VRAM-Verbrauch lag bei etwa 200MB was ich eigentlich schon recht viel finde ... aber da passiert bestimmt noch was 
- Fehler bei der Schattendarstellung (siehe Bild -> Edit kommt noch)

BTW: was ist denn das für ne schicke Bude mit der PCGH-Fahne drauf?


----------



## AMD (13. September 2011)

Aha und es wurden nie mehr als 60fps angezeigt?
Habe es vor paar Wochen mal jemanden mit einer GTX 260 gegeben und er konnte auch nie mehr als 60fps haben... als wäre bei nvidia Karten immer Vsync an.
Der VRAM wird später auch noch entlastet aber das ist aktuell erstmal nebensächlich! ^^

Jap das mit permanent n drücken ist schon krass  xD

Die PCGH Bude hatte ich einfach mal so gebaut... wollte halt mal so einen kleinen Bunker 

Ahja: Das man mit Leertaste und a in die Gebäude reinkommt ist absicht


----------



## PMueller1 (13. September 2011)

.


----------



## AMD (13. September 2011)

Die Steuerung wird später natürlich noch verändert ^^ bzw. kann sie selber festlegen.


----------



## KingofKingzZ (13. September 2011)

Habs auch mal getestet, läuft soweit ganz gut  
Sys besteht aus Phenom II und GTX470, allerdings habe auch ich nur 60 FPS, da wird wohl iwie VSync bei NV-Karten aktiviert. 
Was mir noch aufgefallen ist: 

- bei dem schrägen Gebäude kann man noch von der einen Seite in das Gebäude (ohne Leer oder a zu benutzen), weiß nicht ob das gewollt ist. 
- bei den 2 Gebäuden, wo die grüne Kugel am Spieß davor ist: Wenn man da von der PCGH-Hütte kommt und auf diese Gebäude schaut, sieht es aus, als ob die Wasserhöhe ständig (nur bei Bewegung der Kamera) um 1-2 Meter variiert, also schon fast flackert. Aber nur am Rand der Gebäude. 
- dann noch was mit der Beleuchtung/Helligkeit der Beleuchtung: Wenn man z.B. jetzt zu dem Rasen geht, der an dem einen Gebäude ist, ist die Helligkeit der Beleuchtung sehr stark vom Winkel der Kamera abhängig, außerdem entstehen leichte Schatten-Artefakte, wenn man das ganze ein paar mal testet (Kamera hin, zurück etc.). Dazu schaust du am besten die Screens an, die ich hochgeladen hab. 

Aber ansonsten läuft es sehr gut, und sind ja auch keine großen/schlimmen "bugs", nur das mit dem Beleuchtungsunterschied sollte evtl. geklärt werden (Verdecke ich vllt. die Lichtquelle o.ä.?)  




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Lg


----------



## AMD (13. September 2011)

Kann es sein, dass im nvidia Treiber vsync irgendwie erzwungen wird und man es deaktivieren kann? Meine letzte nvidia war eine 8800GT aber das ist schon 2-3 Jahre her ^^

Die Bugs entstehen alle durch das schlechte Shadow Mapping. Wird also noch definitiv gefixxt.
Aber natürlich danke fürs Testen und der Info


----------



## KingofKingzZ (14. September 2011)

Hab es jetzt mal im Treiber explizit ausgeschaltet. Hat funktioniert und ich habe jetzt je nach Szene 800-1000 FPS. 

Lg


----------



## AMD (14. September 2011)

Hast du zufällig eine Idee, wie ich das Programmieren kann und es durch einen eigenen Code deaktiviere?


----------



## bingo88 (14. September 2011)

wglSwapIntervalEXT (wglext.h?) kann man dazu verwenden. Allerdings weiß ich aus eigener Erfahrung, dass der NV-Treiber dahingehend gern mal ein Eigenleben entwickelt. Eventuell funktioniert das auch nur im Fullscreen Modus, habe zumindest schon mal von Problemen im Zusammenhang mit der Funktion und dem Windowed-Mode gehört.

Edit: Hier gibt's mehr


----------



## fadade (14. September 2011)

AMD schrieb:


> Hast du zufällig eine Idee, wie ich das Programmieren kann und es durch einen eigenen Code deaktiviere?


 
Wenns im Treiber aktiviert ist, dann kann man es sowieso schwer umgehen, weil der halt oft das "letze Wort" hat ^^
Aber du kannst ja eine Option anbieten (akt./deakt.) und wer im Treiber weiterhin Vsync an hat hat selber Pech 
Oder in eine Beschreibung oder so .....
Ich spiele halt immer noch fast nur mit Vsync zwecks Quali und Energysaving, also bei mir werden es auch weiterhin 60FPS bleiben


----------



## DarthDeeger (14. September 2011)

Schönes Projekt.
Ich liege in der Alpha so zwischen 900-1100 FPS am Tag und bis zu ~1200FPS bei Nacht.
i7-930 und HD5870 @950/1200


----------



## AMD (15. September 2011)

Erstmal danke an alle für die Tests 

Zum anderen kommen ca. die nächsten 2 Wochen erstmal keine News.
Muss in der Uni noch 2 Klausuren in Mathe schreiben und das geht erstmal vor! Daher lernen und dann wieder coden


----------



## nahkillo94 (16. September 2011)

Hi, 
habe es auch mal getestet und die Bugs auf Video aufgenommen:

Der schlimmste:
https://www.youtube.com/watch?v=h7jOhWbUfgE

Wurde schon angesprochen:
https://www.youtube.com/watch?v=XgBLOrjOyiE

Noch ein komischer. Diese Streifen verschwinden aber wenn ich auf Vollbild schalte:
https://www.youtube.com/watch?v=RrXftPUKxus


----------



## Strohhalm (22. September 2011)

es könnte sein das die Buffer nicht gecleared werden.


----------



## AMD (23. September 2011)

Ich sagte ja es geht erstmal nicht weiter wegen der Uni - aber das stimmte nicht 

Konnte viele Sachen überarbeiten, wie z.B. ein besseres Speichermanagment (thx @KingofKingzZ für das Gespräch darüber ) aber auch endlich die Kollisionserkennung vollenden! (In der Alpha konnte man ja z.B. bei diesem schrägen Block einfach durch die Wand wenn die Wand angewinkelt war  Die Performance konnte zudem auch um 10-15% verbessert werden.

Geb mir Mühe bald wieder was brauchbares zu veröffentlichen aber jetzt gehts erstmal ins Bett - DHL kommt morgen früh wieder kurz nach 8


----------



## AMD (25. September 2011)

So es geht weiter vorran.
Bei der Kollisionserkennung musste (mal wieder) etwas geändert werden aber es läuft immer besser und besser. Bin also mehr als zuversichtlich, dass das bald alles gut läuft. Dinge wie Gravitation etc. sind dann natürlich auch integriert.

Außerdem plane ich dann eine Alphaversion mit einer kleinen Map und einem Capture the Flag Modus.
Map ist schon ganz gut vorrangeschritten und den CTF an sich zu proggen sollte eher das kleinste Problem darstellen. Nur die Integration von WinSocket fürs Netzwerk / Multiplayer muss noch gemacht werden aber das wird schon klappen


----------



## AMD (7. Oktober 2011)

So mal wieder eine kleines Update.

- Code wurde, wie so oft, aufgeräumt.
- Performance konnte wieder (deutlich) gesteigert werden
- Network Part per SFML integriert
- Capture The Flag Modus angefangen
- Bugfixing

Werd versuchen bald wieder neue Pics zu posten aber die Uni geht wieder los und die ersten 1-2 Wochen muss ich erstmal schauen was so abgeht - dann ist hoffentlich mehr Zeit 
Aber spätestens nächste Woche sollte es wieder Bildmaterial geben


----------



## fadade (7. Oktober 2011)

huhuuuu ... da ist ja noch wer 
endlich mal wieder ein Lebenszeichen 

-> Steigt die Performance eigentlich immer? xDDD
-> kannst du vielleicht auch einen WIreframe-Modus einbauen?
-> Wie schauts mit Models aus? Welche Formate unterstützt du? Nur mal so "ganz nebensächlich" 

Jaja die Uni ... bei mir ist am Montag einführungsveranstaltung. Der erste Uni-Tag! Mal sehen wie das so wird.
Btw was studierste?


----------



## AMD (7. Oktober 2011)

Jap, irgendwie steigt die immer xD
Ich hab einen Wireframe Modus nur den hatte ich bis jetzt nie an auf den Bildern 
Aber sieh selbst:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Man kann natürlich auch die Objekte normal rendern lassen und dann zusätzlich Wireframe aktivieren aber hier in dem Bild eben mal Wireframe only 

Aktuell hab ich nur das *.obj Format drin. Hat einfach mal den Vorteil, dass es simpel ist und auch nicht binär etc...
Irgendwann später wird das aber sicher nochmal getauscht... lässt sich zwar schon einiges mit machen aber so viel dann auch wieder nicht  Aber aktuell reichts erstmal.

Dann schonmal viel spaß in der Uni 
Computer Engineering - und du?


----------



## mf_Jade (8. Oktober 2011)

Schicke Sache. Weiter so  Mal schauen wie lang die Performance noch steigt^^


----------



## AMD (8. Oktober 2011)

Hab gerade mal nen Shader geschrieben, wodurch sich das Wasser mal etwas bewegt => Wellen also^^
Dazu habe ich mal eben ein kurzes Video gemacht und bei YT geuppt:
Engine - [Shader]Waves - YouTube

Die Textur kann dabei mal in den Hintergrund gestellt werden, geht vorallem um die Wellen und die sehen schon - finde ich zumindest - schön "smooth" aus


----------



## Pagz (8. Oktober 2011)

Kann man da auch noch irgentwie Schaumkronen draufbasteln?
Ab einer gewissen Höhe zum Beispiel


----------



## AMD (8. Oktober 2011)

Das sollte sich ziemlich einfach einrichten lassen^^


----------



## Pagz (8. Oktober 2011)

Cool


----------



## KingofKingzZ (8. Oktober 2011)

Du könntest auch noch statt einem einzigen sin/cos im Vertexshader mehrere benutzen um kleinere und unregelmäßiger Aussehende Wellen zu generieren. Hab auf die schnelle hier ein Tutorial gefunden, das ganz brauchbar aussieht. Schaus dir mal an, wenn du Zeit hast. 

Lg


----------



## AMD (9. Oktober 2011)

So schnell kann man das eigene Wasser wieder hässlich finden 
Ich schau mir das aber mal an


----------



## AMD (17. Oktober 2011)

Mal wieder ein kleines update.

- Habe zuletzt am Watershader weitergearbeitet, damit das Wasser noch besser aussieht, zwar noch nicht fertig aber geht vorran 
- Habe ein paar Dinge optimiert mithilfe eines FBO's (Frame Buffer Object). In wie fern sich das auswirkt zeige ich später noch! Muss da noch ein gutes Verhätlnis ausloten zwischen Optik und Performance.
- Wiedergabe von Sound/Musik wurde integriert.
- Einige Codes wurden erneuert - sind nun übersichtlicher.


----------



## fac3l3ss (17. Oktober 2011)

Nur so eine Frage von einem Volln00b, läuft deine Engine auch unter anderen Betriebssystemen als Windows? Z.B. Linux?


MfG
fac3l3ss


----------



## AMD (17. Oktober 2011)

Habe bis jetzt immer drauf geachtet plattformunabhängig zu coden und das Projekt kann daher auch unter Linux oder Mac verwendet werden.
Kurz: Ja


----------



## fac3l3ss (17. Oktober 2011)

AMD schrieb:


> Habe bis jetzt immer drauf geachtet plattformunabhängig zu coden und das Projekt kann daher auch unter Linux oder Mac verwendet werden.
> Kurz: Ja


 Vorbildlich! 


MfG
fac3l3ss


----------



## hardware_fanatiker (17. Oktober 2011)

Nur einer der vielen Vorteile von OpenGL gegenüber von directx.


----------



## AMD (18. Oktober 2011)

Habe nun weiter an den FBO's gebaut und das Ergebnis kann sich sehen lassen!
Der neue Code zur Schattenberechnung sollte daher bald gute Ergebnisse liefern - Bildmaterial folgt!


----------



## Kel (18. Oktober 2011)

Die Engine sieht gut aus, aber da fehlen noch hochaufgelöste Texturen oder?

Wieviel Erfahrung hast du mit C++ und Grafikanwendungen bereits? Das sieht nach ziemlich viel komplizierter Arbeit aus (aus meiner Sicht als Javalaie).


----------



## AMD (18. Oktober 2011)

Man kann ja jederzeit hochauflösende Texturen nehmen nur für mein kleines Testareal reicht mir ja so eine "billige" Map  
Ich hatte also auch schon Texturen von 2048x2048 (das ist dann wohl schon hochauflösend) und sieht auch dementsprechend gut aus aber aktuell bewege ich mich bei 256x256 oder max. 512x512 ^^

Also C++ und Grafikprogrammierung habe ich eig. erst vor einem Jahr (sehr) intensiv durchs Studium begonnen. Bei meinem Studienfach Computer Engineering habe ich jetzt garnicht sooo viel programmieren aber ich mache das auch nebenbei sehr viel. Vorher hatte ich aber auch schon in anderen Sprachen Erfahrung, was mir durchaus zugute kommt.
Viele Sachen bei der Grafikprogrammierung mit OpenGL sind schon teils sehr komplex - vorallem der mathematische Part verlangt einem öfter viel ab^^

Morgen bekomme ich noch ein Buch mit über 700 Seiten über GLSL (OpenGL Shader Language) - wird bestimmt auch interessant


----------



## Torchlight (19. Oktober 2011)

Kannst du mal eine Einschätzung über das Buch schreiben wenn du angefangen hast es zu lesen? Hab mich auch schon ein wenig umgesehen aber es gibt (in deutsch) kaum Bücher über OpenGL. Aber bestimmt wird deins in englisch geschrieben sein oder?


----------



## AMD (19. Oktober 2011)

Jap ist in Englisch - in deutsch gibt es halt wirklich nicht viele gute, wie du schon sagst.
Ich werde die kommenden Tage/nächste Woche immer mal wieder lesen wenn ich zur Uni fahre! Mal schauen wie es ist  Aber ich sag dann mal wie es ist


----------



## Airboume (22. Oktober 2011)

Also Leute: 
ich bin schon seit wochen hier abonent und irgendwie will ich noch ein paar screenshots oder sowas sehen 
kenn mich damit eigendlich überhaupt nicht aus - find das aber interessant - und deswegen bin ich dabei...
Also lieber amd, wenn du zeit findest, schenkt dem lieben airboume bitte ein paar news


LG
Air


----------



## Crenshaw (22. Oktober 2011)

Airboume schrieb:


> Also Leute:
> ich bin schon seit wochen hier abonent und irgendwie will ich noch ein paar screenshots oder sowas sehen
> kenn mich damit eigendlich überhaupt nicht aus - find das aber interessant - und deswegen bin ich dabei...
> Also lieber amd, wenn du zeit findest, schenkt dem lieben airboume bitte ein paar news
> ...



/Sign  

Und ne neue Alpha wäre nett!  (Will wellen sehen


----------



## Airboume (22. Oktober 2011)

Crenshaw schrieb:


> /Sign
> 
> Und ne neue Alpha wäre nett!  (Will wellen sehen


 Gefällt 
Du stalkst mich doch, oder? gerade freund und schon bist du überall wo ich auch bin... 

Aber ja - die wellen würd ich auch gern sehn, soweit, wie du bist...

LG


----------



## Crenshaw (22. Oktober 2011)

Nein lese hier auch schon lange mit und hab auch die Alpha getestet  (Aber wenn man nur ein Freund hat wenn soll man den da sonst stalken! )

So genug des


----------



## AMD (23. Oktober 2011)

Ich werde die Tage definitiv wieder Bilder posten, versprochen^^
Hatte jetzt die letzten 2-3 Tage mit Problemen beim Code zu kämpfen aber das sollte geklärt sein!
Der Soundmanager ist außerdem auch bald fertig!
Dort kann zum einen Musik abgespielt werden, welche man überall hört oder aber auch Sounds an einer Position platziert werden, die mit steigender Entfernung leiser werden. Läuft auch super aber das muss ich mal im Video zeigen!

Neue Alpha Version kommt auch bald und im Dezember dann hoffentlich der erste Beta Release.


----------



## Crenshaw (23. Oktober 2011)

Das ja supii  Dan direkt schöne wellensounds einpsielen


----------



## Airboume (23. Oktober 2011)

Year,
Gut gut

Wellensounds und so als netten gack vill ne oma mit ner drehorgel und wenn man von der musik flüchten will, dass die langsam (aber sicher) leiser wird


Lg


----------



## AMD (23. Oktober 2011)

Wellensounds hab ich schon seit paar Tagen am laufen, das geht schon gut


----------



## Airboume (23. Oktober 2011)

Dann passt das ja!

Machste auch die oma?

Bin gespannt auf die 2te alpha bzw die screenshots and videos


Lg


----------



## AMD (23. Oktober 2011)

haha ja, die Oma ist später ein Easter Egg 

Habe weiter an der Schattenberechnung gearbeitet und konnte nun Softshadows implementieren!
Der Shadow Code ist (leider) noch nicht ganz fertig aber ein Vergleichsbild mit SoftShadows und ohne gibts trotzdem 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Links mit Softshadow und rechts ohne!
Die linke Variante gefällt mit deutlich besser


----------



## Crenshaw (23. Oktober 2011)

Sieht sehr geil aus!


----------



## Airboume (23. Oktober 2011)

Jo, das sieht ja schonmal sehr gut aus!
Ich könnt das nicht  xD
Daumen hoch 


Lg


----------



## Festplatte (25. Oktober 2011)

Echt super gemacht!


----------



## AMD (25. Oktober 2011)

Habe nun das "Masking" in der Engine integriert.
Dadurch entsteht z.B. folgendes Objekt:




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Diese Gitterkonstruktion besteht lediglich aus 2 Polygonen aber mithilfe einer Alphatexture (und Alpha-Blending) kann ein an sich komplexes Objekt erstellt werden aber mit minimalem Aufwand! Würde man das ohne so eine Textur machen und richtig als Model erstellen hätte es statt 2 Polys wohl eher 2000! Der Vorteil wird also hoffentlich deutlich


----------



## Crenshaw (25. Oktober 2011)

*Download!! Download! 


*


----------



## AMD (25. Oktober 2011)




----------



## spionkaese (25. Oktober 2011)

AMD schrieb:


> Habe nun das "Masking" in der Engine integriert.
> Dadurch entsteht z.B. folgendes Objekt:
> 
> 
> ...


 Dafür aber keine Schatten 
Naja, das wird schon


----------



## AMD (26. Oktober 2011)

Bin nun dabei die erste "richtige" Map zu bauen! Hatte das zwar schonmal angefangen aber die Daten verwerfe ich mal, möchte das anders aufbauen!
Komme bis jetzt auch gut vorran und am Wochenende kann ich dann mit hoher Wahrscheinlichkeit die ersten Bilder präsentieren! Ich muss mir außerdem echt mal Skills in Photoshop aneigenen - Texturen erstellen gehört wahrlich nicht zu meinen stärken  Und vermatsche Texturen sehen  einfach mal nicht so gut aus :S


----------



## Gast1111 (26. Oktober 2011)

Frag mal Re4dt der macht sowas in 10 Minuten


----------



## AMD (27. Oktober 2011)

Na ob er das machen will


----------



## AMD (27. Oktober 2011)

So erste Bilder der 1. richtigen Map!
Alles noch in der Mache und definitiv nicht fertig texturiert, außerdem sind manche stellen unscharf da ich noch etwas Probleme mit dem Shadow Mapping habe (die Seiten der Objekte die im Schatten liegen) aber für einen ersten Eindruck reicht es hoffentlich erstmal!



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Airboume (27. Oktober 2011)

Wow 
Sieht ja schonmal sehr gut aus, vorallem, weil ich davon kene Ahnung habe 
Nur weiter so, aber sieht schonmal sehr gail aus !!


----------



## AMD (27. Oktober 2011)

Habe mich nun mal rangesetzt und mich an Particlen mithilfe von Billboards (bzw. sogenannte World aligned Billboards) probiert! Folgendes Ergebnis:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Sieht jetzt zwar nicht besonders aus aber es läuft vom Prinzip her und eröffnet große Möglichkeiten 
Muss nun noch eine Codeparts optimieren und an der Geschwindigkeit arbeiten aber das wird schon! Mehr dazu demnächst


----------



## Gast1111 (28. Oktober 2011)

Sieht schonmal besser aus als CoD 
Geiles Projekt  Wird sicher recht leicht nen Job zu bekommen, wenn man allein sowas auf die Beine stellen kann (hab da viel schlechteres von großen Firmen gesehen )


----------



## AMD (29. Oktober 2011)

Das will ich mal schwer hoffen einen guten Job (möglichst leicht) zu bekommen  
Aber ein paar Semester bin ich ja auch noch in der Uni


----------



## AMD (29. Oktober 2011)

Mal wieder ein update:

- Code allgemein aufgeräumt
- Performance gesteigert
- Shadow Mapping verbessert
- Speicherauslastung gesenkt (ca. 20-25% weniger)

Bei der Speicherauslastung bin ich noch nicht ganz fertig aber für den Anfang sicher okay.


----------



## AMD (6. November 2011)

So ich meld mich mal wieder.

Bin zurzeit mehr am Level-Design als am proggen aber die Map wird immer besser und besser! Bin bisher mehr als zufrieden.
Daher wird es demnächst auch wieder neue Bilder geben - also seid gespannt


----------



## Dark-Blood (6. November 2011)

*Vorfreude*


----------



## Crenshaw (6. November 2011)

Wie wärs den zum 18. die neue Beta/alpha? Wäre ein prima Geburstagsgeschenk


----------



## AMD (6. November 2011)

Ich nehme an du redest vom 18. November und nicht Dezember? 
Geb mein bestes möglichst schnell zu sein, also schauen wir mal^^


----------



## Crenshaw (6. November 2011)

Jaja November bitte  
Jo lass dir die Zeit die du brauchst!


----------



## AMD (6. November 2011)

Crenshaw schrieb:


> Jo lass dir die Zeit die du brauchst!


 Nee, im Sinne der großen Firmen: Release und dann nach und nach wegpatchen


----------



## Hübie (7. November 2011)

Ich habe damals für Doom1&2 sehr viele Maps gebastelt. Leider war damals ja noch nicht viel mit Internet und so gelang ich auch nie zu Ruhm und Anerkennung ;D


----------



## AMD (7. November 2011)

Wie hat man denn für Doom (1 und 2) die Maps gemacht? Gabs da einen MapEditor für? (Kenn mich in Sachen Doom nicht gerade aus) ^^


----------



## Hübie (7. November 2011)

Ja. Der war sogar sehr umfangreich und doch simpel zu bedienen. Da könnten sich heutige ne Scheibe von abschneiden.

Hatte im 3DC auch mal einen Thread dazu eröffnet


----------



## Löschzwerg (8. November 2011)

Tolles Projekt und Gratz zur Main  

Wie sieht es mit der Abwärtskompatibilität zu OpenGL 1.3 aus? Steigt die Engine hier komplett aus oder gibt es nur Fehlermeldungen? Würde die Engine gerne mit meiner AAlchemy bzw. simFUSION testen, also mit 8x SGSSAA oder 24x MSAA


----------



## AMD (8. November 2011)

Ui, garnicht gesehen das dort was auf der Main steht!  Danke für die Info ^^

Also die Shader laufen definitiv nicht mit OpenGL 1.3, da die Shader erst später eingeführt wurden (OpenGL 2.0). Ansonsten müsstest du es einfach mal probieren, vllt. hast du ja Glück^^


----------



## feifelm1983 (9. November 2011)

Es klingt nett, ich hoffe mal, man kann sich das mal selber herunterladen und testen  Suchst Du Tester für Feedback?? MFG


----------



## AMD (9. November 2011)

Es ist bald (erneut) eine Testversion geplant - dann sind Feedbacks natürlich erwünscht 
Wird also hier im Forum online gestellt und kann von jedem getestet werden


----------



## Löschzwerg (9. November 2011)

Kleines Feedback zu OpenGL 1.3 -> Geht nicht  Die nötigen Libraries sind nicht vorhanden und die Engine stürzt ab.

Mit der Intel HD Graphics (Arandale) und den aktuellsten Treibern habe ich massive Probleme. Die Texturen hängen wild als Artefakte in der Luft. Muss aber nicht unbedingt an der Engine liegen, vielmehr baut der Intel Treiber einfach Mist.

Bin gespannt auf die neues Version


----------



## bingo88 (9. November 2011)

Löschzwerg schrieb:


> Mit der Intel HD Graphics (Arandale) und den aktuellsten Treibern habe ich massive Probleme. Die Texturen hängen wild als Artefakte in der Luft. Muss aber nicht unbedingt an der Engine liegen, vielmehr baut der Intel Treiber einfach Mist.


 Kann ich bestätigen, habe mit den Intel-Treibern auch äußert schlechte Erfahrungen gemacht.


----------



## feifelm1983 (9. November 2011)

AMD schrieb:


> Es ist bald (erneut) eine Testversion geplant - dann sind Feedbacks natürlich erwünscht
> Wird also hier im Forum online gestellt und kann von jedem getestet werden




klingt gut  ich werde es testen


----------



## hardware_fanatiker (9. November 2011)

Bitte auch ein Linux-Build.


----------



## mf_Jade (9. November 2011)

Ach wozu? Die Arbeit für die Minderheit ist es doch nicht wirklich wert


----------



## Diablokiller999 (9. November 2011)

Das machst du also während der Vorlesung statt aufzupassen
Scheint ja doch noch guten Anklang zu finden, was dagegen wenn ich unser Pong hier poste inkl. Quellcode?

Übrigens wurde GLSL schon ab 1.4 als Erweiterung angeboten *klugscheiss*
Eine Linux-Version sollte doch nicht so schwer sein, im Code sind doch keine Windows-Exklusiven Funktionsaufrufe oder?


----------



## hardware_fanatiker (9. November 2011)

eben. Würde mich freuen.


----------



## Diablokiller999 (9. November 2011)

Das muss AMD aber genau sagen, zumindest hab ich beim kurzen lunzen in den Code nichts gefunden was Linux nicht auch könnt


----------



## hardware_fanatiker (9. November 2011)

Hoffen wir das beste. Gegen Pong hätte ich übrigens nichts, ist bestimmt mal interessant, vor allem der Code.


----------



## AMD (10. November 2011)

Pong ist nun online 

http://extreme.pcgameshardware.de/programmierung-und-webdesign/185579-pong-v2-1-a.html#post3626211

Edit// Ahja, wegen Linux:
Sollte eig. keine Probleme machen! Müsste man halt mal unter Linux compilen und schauen obs dem Compiler schmeckt oder nicht


----------



## spionkaese (10. November 2011)

AMD schrieb:


> Pong ist nun online
> 
> http://extreme.pcgameshardware.de/programmierung-und-webdesign/185579-pong-v2-1-a.html#post3626211
> 
> ...


 Naja, erstmal n Makefile erstellen


----------



## AMD (11. November 2011)

Das mit dem Makefile ist wohl wahr :S

Kleines update:
- Habe nun angefangen Items zu integrieren, z.B. Waffen. Klappt erstmal ganz gut bis jetzt. Über eine Configdatei (Items.dat) können zu den einzelnen Items auch Eigenschaften bestimmt werden.
- Außerdem began ich gestern schonmal mit einem SDK, was mir die Arbeit erleichtert aber auch später mit veröffentlicht wird damit auch ihr z.B. Maps erstellen könnt 
Als erstes habe ich ein Tool fertig gestellt, was die *.obj files von 3ds max analysiert und neu ordnet. Leider exportiert die 3ds max nicht immer in einer Sinnvollen Reinfolge und das ändert das Programm. Die Dateien werden dadurch zwar meist größer aber die Performance beim Rendern steigt dadurch um gut 25%.


----------



## spionkaese (11. November 2011)

AMD schrieb:


> Das mit dem Makefile ist wohl wahr :S
> 
> Kleines update:
> - Habe nun angefangen Items zu integrieren, z.B. Waffen. Klappt erstmal ganz gut bis jetzt. Über eine Configdatei (Items.dat) können zu den einzelnen Items auch Eigenschaften bestimmt werden.
> ...


 Joa, das Problem ist nur, das ich noch NIE ein Makefile erstellt habe.
Nicht das ichs nicht versuch hätte, aber ich bin kläglich gescheitert


----------



## AMD (11. November 2011)

Naja, das klärt sich schon irgendwie


----------



## Diablokiller999 (11. November 2011)

Machen Linux-IDEs das nicht von selbst, z.B. Codeblocks?


----------



## AMD (12. November 2011)

Das kannst du gerne mal herausfinden


----------



## hardware_fanatiker (12. November 2011)

Mit welcher IDE entwickelst du denn im Moment, oder bist du der Editor+mingw typ?


----------



## AMD (12. November 2011)

Ich nutze Microsoft Visual Studio - allerdings noch die 2005er Version - konnte mich mit 2008 und 2010 nie anfreunden.
Auf der MS Website gibts ja schon eine Development Version zu 2011 - werde ich demnächst mal testen.


----------



## AMD (13. November 2011)

So, mal wieder eine Statusmeldung. Ich hänge mich zurzeit leider etwas auf, da ich an zu vielen Baustellen gleichzeitig arbeite 
Zum einen arbeite ich noch am Item-System, wobei das an sich schon ziemlich weit ist allerdings noch ein paar Probleme beim rendern bestehen - sollte aber bald ohne Probleme laufen.
Außerdem gibts noch paar Probleme mit dem Textureloader, dir mir leider erst jetzt auffallen. Zum einen ist da ein Teil zu Speicherlastig, zum anderen werden Texturen für den Alpha-Kanal nicht richtig geladen... Naja wie auch immer 

Und etwas spaß mit Rotationsmatritzen hab ich dann auch noch! Wenn ich die Sachen demnächst im Griff bekommen habe kommt eine neue Testversion. Sollte auch noch gut mit dem November passen


----------



## Crenshaw (13. November 2011)

Scheiß auf Speicherauslastung!  Ich weiß gar nicht wohin mit meinem Ram!


----------



## AMD (13. November 2011)

So kann man es natürlich auch sehen 
Aber ein klein wenig ordentlich soll es ja dann doch sein


----------



## Crenshaw (13. November 2011)

Also ich wär eher dafür:

Basisspiel kostenlos rausbringen und dann:

LADEN SIE SICH JETZT DEN ULTIMATIVEN PERFORMANCE PATCH FÜR NUR 100 $ RUNTER! BIS ZU ZEHNMAL MEHR PERFORMANCE DURCH ÜBERARBEITETES SPEICHERMANAGMENT!!1EINSELF


----------



## AMD (13. November 2011)

Sowas nennt man nicht Patch sondern DLC 

Hab nun auch den Fehler zum Itemsystem gefunden! Hatte die Daten nach dem einlesen versehentlich wieder woanders gelöscht


----------



## Crenshaw (13. November 2011)

Hauptsache es funktioniert 

Vieleicht könntest du es ja über Origin vermarkten...


----------



## Airboume (13. November 2011)

lieber wenier speicher, ja?
ich mit meinem ultragailen 1GiB DDR2 PC333 Ram


----------



## spionkaese (13. November 2011)

Crenshaw schrieb:
			
		

> Hauptsache es funktioniert
> 
> Vieleicht könntest du es ja über Origin vermarkten...


Origin hat keine Indie Games, er könnte es höchstens bei Steam versuchen.


----------



## Crenshaw (13. November 2011)

Tss für sowas machen die alles


----------



## AMD (13. November 2011)

Na erstmal was brauchbares fertigstellen, dann sehen wir weiter


----------



## AMD (14. November 2011)

Text-Font fürs HUD 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Kel (17. November 2011)

Da muss noch Unicode-Unterstützung rein .


----------



## AMD (22. November 2011)

So ich meld mich auch mal wieder.
Gleich zu Anfang sei gesagt: Skyrim hindert mich zuletzt stark daran weiter zu coden 

Hab zuletzt wieder etwas mit den Schatten rumexperimentiert und auch das Wasser wird verfeinert - speziell die Reflektionen. Außerdem werden die Texturen nun nach dem einlesen kompremiert in den VRam gespeichert. Die Ladezeiten zu begin zwar minimal höher aber der VRam wird dadurch ca. 15% weniger gefüllt.


----------



## fadade (23. November 2011)

"kompremiert" ... jaja Skyrim hat dich echt im Griff 
ich weiß gar nicht, hast du auch schon mit Lichtquellen etwas? oder konzentrierst du dich momentan erstmal auf Schatten?

was meinst du, wird deine kleine Engine später unter bestimmten Umständen auc so ne Optik wie Skyrim (oder zumindest kommerzielle Engines) bringen können? ^^ Also ob das als Privatperson so in ein paar jährchen machbar wäre ....


----------



## AMD (23. November 2011)

Ich habe auch schon mit Lichtquellen gearbeitet, ja aber nur mit den OpenGL Lichtern - diese sind aber nicht ausreichend und man müsste man später über Shader realisieren! Moment müssen aber die Schatten besser werden... leider alles nicht so leicht aber früher oder später wird da noch was ordentliches bei rauskommen!

Ich kann schlecht sagen wie die Optik später mal wird aber es soll schon etwas ordentliches bei rauskommen. Die Grafik soll schon nicht wie auf dem Niveau wie vor 10 Jahren sein^^ Was nun in Zukunft bei rauskommt wird sich zeigen aber ich bin zuversichtlich


----------



## AMD (28. November 2011)

Und mal wieder ein kleiner Report von mir.
Aktuell geht es nur mit langsamen Schritten vorran aber heute gabs mal wieder ein Erfolgserlebenis. Der Imageloader wurde nun so abgeändert, dass auch AlphaTexturen genutzt werden können.
Das sieht wie folgt aus:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Links sieht man die normale Texture, rechts die AlphaTexture. Kombiniert man diese beiden Texturen nun richtig, und mappt sie auf ein Viereck was nur aus 2 Polygonen besteht, sieht man letztendlich nur das grüne vom linken Bild und nicht den schwarzen Rand. Mit Texturen die eine Ordentliche Auflösung haben lässt sich damit auch ein ziemlich gutes Ergebnis erzielen.
Um das mal in der Engine zu zeigen:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Man berücksichtige aber, dass es sich hierbei nur um eine Texture von 128x128 handelt! Bei 256x256 bzw. 512x512 ist das Ergebnis erheblich besser.


----------



## Rk_61 (29. November 2011)

Sieht ja schon mal ganz nett aus und wird auch immer besser 

Aber ich hätte da noch zwei Fragen...

Ist es schwer hochaufgelöste Texturen zu erstellen, also im allgemeinen würde mich das mal interessieren, weil es bei den meisten Spielen ja auch sehr oft matschige Texturen gibt. Und worauf muss man beim Texturerstellen denn achten, um gute Texturen hinzukriegen?

Wär nett wenn du die Fragen beantworten könntest und weiter so


----------



## AMD (29. November 2011)

Erstmal danke^^

Ich glaube da bin ich der falsche Ansprechpartner für. Zum einen hat die Texturschärfe in den Spielen auch was mit dem Rendering zutun, sei es Linear, Trilinear etc. aber natürlich auch die Auflösung der Textur aber auch wie man die Textur auf das Objekt mappt. Es macht schon einen erheblichen Unterschied ob du eine Textur einmal auf eine 10x10 Meter große Fläche mappst oder diese Fläche in 4 Felder a 5x5 unterteilst. So bleibst du bei einer Textur mit der selben Auflösung welche aber 4mal auf die selbe Fläch gemappt wird => schärferes Resultat.

Für Texturen an sich schaue ich mich auch gerne mal hier um und passe mir die dann selber noch etwas an wenn nötig: [CG Textures] - Textures for 3D, graphic design and Photoshop!
Ist halt gut auf der Seite, dass die Texturen einfach genutzt werden dürfen und da sind schon gute Dinge dabei, wenn auch nicht alles. ^^


----------



## Crenshaw (29. November 2011)

Ich sage dazu nur 

Und zu den Texturen:

Wer spielt Minecraft in 16x16 und dan mal in 256x256?^^

Da können so einige Konsolenports nicht mithalten


----------



## AMD (3. Dezember 2011)

Habe nun soeben den Imageloader weiter überarbeitet.
Wenn man in den Textureordner 2 Dateien einfügt, wobei eine Datei eine normale Texture ist und die andere ein Alphaimage (wie ich es 4 Posts vorher gezeigt habe), dann wird das Image automatisch als Alphaimage geladen. Die Texturen müssen lediglich durch ihren Namen einen Verweis darauf geben. Sollte nun die Normale Texture "Tree.bmp" heißen, muss am Ende der Alphatexture noch _Alpha angefügt werden! Sprich: "Tree_Alpha.bmp" - wobei das allerdings nicht Case-Sensitive ist. Man könnte also auch _AlPHa schreiben oder was auch immer  ^^

An der Map habe ich zudem auch wieder etwas weiter gearbeitet. Neue Bilder folgen also bald 

Edit//
Hab nochmal ein Bild gemacht, wo der neue Textureloader eine Texture+Alpha von einem Drahtzaun läd. Nix besonderes und habe zwar sowas ähnliches schonmal gezeigt aber naja 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Textureauflösung: 64x64


----------



## KingofKingzZ (3. Dezember 2011)

Du könntest auch mithilfe von libpng einfach PNG Bilder unterstützen und den in PNG eingebauten Alpha Kanal nutzen. So mach ich das zumindest^^
Finde ich etwas einfacher als in 2 Texturen - auch beim erstellen der Bilder/Texturen mit Gimp oder Photoshop.


----------



## AMD (3. Dezember 2011)

Da ist natürlich was dran aber aktuell gehen halt nur das *.bmp Format - daher wird es so gelöst 
Für die Zukunft lautet der Plan allerdings auf *.tga zu setzen, da sollte das ja eig. auch klappen?!


----------



## KingofKingzZ (3. Dezember 2011)

Ja ich glaube tga kann auch Alpha Kanäle speichern. Bei png ist halt der Vorteil, dass es relativ weit verbreitet ist und du daher nicht ständig konvertieren müsstest, wenn du ne Textur einbauen willst. 
Wie gesagt geht das mit libpng relativ einfach, aber naja eigentlich ist es ja egal, in welchem Format du deine Daten speicherst, Hauptsache sie sind nacher geladen  
Allerdings würde ich JPG auf jeden Fall noch einbauen, da dieses Format im Vergleich zu bmp o.ä. doch sehr viel Platz spart. Aber das hat ja auch noch Zeit^^

Lg


----------



## AMD (4. Dezember 2011)

Und 2 neue Bilder mit Blick auf die zukünftige Base von Team #2 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Habe zudem auch mal eine neue (Draht)Zauntexture in GIMP gemacht - sieht auch deutlich schärfer aus und endlich nicht mehr 64x64 Auflösung 

Ps. Zu den anderen Texturen: HD-Texture Mod ist später einmal erwünscht


----------



## fac3l3ss (4. Dezember 2011)

AMD schrieb:


> Und 2 neue Bilder mit Blick auf die zukünftige Base von Team #2
> (...)


 Willst du also mit der Engine einen Egoshooter machen?
Soetwas ähnliches wie CS 1.6 mit LAN-Funktion wäre echt... AWESOME! 


MfG
fac3l3ss


----------



## Crenshaw (4. Dezember 2011)

fac3l3ss schrieb:


> Willst du also mit der Engine einen Egoshooter machen?
> Soetwas ähnliches wie CS 1.6 mit LAN-Funktion wäre echt... AWESOME!
> 
> 
> ...


 
Oh ja


----------



## AMD (4. Dezember 2011)

Exkat das ist der Plan 
Geplant ist für den Anfang ein einfaches Deathmatch sowieso Team-Deathmatch und Capture the Flag. Dies dann natürlich auch über LAN bzw. Internet.


----------



## Airboume (4. Dezember 2011)

mega 
endlich was vernünftiges aufer lanparty spielen


----------



## AMD (4. Dezember 2011)

Ich habe auch schon kleine Anleitungen (mit Bildern) geschrieben, wie man sich selber eine Map bauen kann, zumal ich ja den kompletten Aufbau der Engine nach außen möglichst übersichtlich halten will, damit es auch einfach ist selber was dran zu machen.
3D Objekt in Objektordner rein, Texturen in Textureordner, Objekt noch in einem Mapfile schreiben damits die Engine läd und schon läufts  Gerade ein einfacher Aufbau ist auch für Modder wichtig, damit sowas später auch Anhänger findet ^^


----------



## Crenshaw (4. Dezember 2011)

Am Ende ist es weltweit verbreitet und Fotorealistisch ;D


----------



## AMD (4. Dezember 2011)

Könnt ich mit leben


----------



## Airboume (4. Dezember 2011)

das ist doch das ziel, oder nicht?


----------



## AMD (4. Dezember 2011)

Das Ziel ist es ja immer das maximum aus einer Sache zu gewinnen, von daher ja eigentlich schon


----------



## fac3l3ss (4. Dezember 2011)

AMD schrieb:


> Exkat das ist der Plan
> Geplant ist für den Anfang ein einfaches Deathmatch sowieso Team-Deathmatch und Capture the Flag. Dies dann natürlich auch über LAN bzw. Internet.


 Wow... CS in steamlos in legal-LAN in Linux ... DANKE! 


MfG
fac3l3ss


----------



## Kel (4. Dezember 2011)

fac3l3ss schrieb:


> Wow... CS in steamlos in legal-LAN in Linux ... DANKE!


 Gibs doch schon seit Ewigkeiten? Nennt sich Sauerbraten 1+2 + 10.000 weitere solcher Spiele.


----------



## AMD (5. Dezember 2011)

Habe nun ein LOD System hinzugefügt.
Bei dem mappen der Objekte kann ein Wert angegeben werden, aus vielen Metern das Objekt zu sehen sein soll (vom Mittelpunkt des Objektes aus). Ist man nun weiter als den angegeben Wert entfernt, so wird das Objekt nicht mehr angezeigt. Optional kann auch ein LOD Objekt angegeben werden, welches das Objekt was ausgeblendet wird ersetzt - bloß eben mit einer geringeren Detailstufe.


----------



## joffal (5. Dezember 2011)

WoW! ... Nein, nicht World of 
sondern WoW! 

Das ist echt mal eine anständige Leistung!
Was meinst du, ob bis Weihnachten nocheinmal eine kleine SPielbare Demo (ggf. schon mit Multiplayerfähigkeit) fertig sein wird?
Würde es gerne mal mit ein paar Freunden zoggen 
Reicht ja, wenn man sich per mausklick irgendwie killn kann, muss ja nichts komplexes sein, einfach ein bisschen Fun haben!

Bis dahin:


----------



## AMD (5. Dezember 2011)

Ich will lieber erstmal keine Termine mehr nennen, denn es können mal ganz schnell Probleme auftreten, wo man wieder länger hängt als es einem lieb ist.
Aber ich gebe mir schön Mühe möglichst schnell zu sein^^


----------



## Crenshaw (5. Dezember 2011)

Und die Intergretation des Netzwerkmoduls dürfte auch dauern 

Nicht das mandann immer rausgeworfen wird, oder ewig braucht bevor man joinen kann..

Edit:

AMD wir haben exakt gleich viel Beiträge


----------



## AMD (5. Dezember 2011)

Hatten


----------



## Crenshaw (5. Dezember 2011)

Ich bin halt scneller


----------



## AMD (6. Dezember 2011)

Und die Kugeln fliegen! 

Heute mal wieder ein wenig am Itemsystem gebaut und Waffen feuern nun Kugeln ab wenn man schießt  Gibt zwar noch einige Dinge dran zu machen (z.B. die Kollisionserkennung für die Kugeln, obwohl ich da das selbe System vom Player nehmen kann), aber an sich siehts schonmal gut aus 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Hatte die Kugelgeschwindigkeit stark reduziert damit ich schneller bin und die Kugel abfangen kann 

P.s. Ja ich weiss, hässliche Texture bei der Waffe aber ich wollts erstmal nicht komplett ohne haben!  Kommt also noch was besseres


----------



## Crenshaw (6. Dezember 2011)

Ja lass die Fetzen fliegen *.*


----------



## AMD (6. Dezember 2011)

Das sieht hier vllt. etwas besser aus (auch wenn die Texture immer noch nicht Bombe ist) 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Crenshaw (6. Dezember 2011)

Berits verschieden Waffen 
Haben die auch schon andere Sachen drauf?


----------



## AMD (6. Dezember 2011)

Hm andere Sachen?^^
Also bis jetzt kann man mit linker Maustaste eben schießen bzw. mit der rechten ranzoomen (muss aber noch verfeinert werden)


----------



## Crenshaw (6. Dezember 2011)

Nein ich mein zum Beipsiel ob die MP5 Dauerfeuer kann (oder obs die Magnum? nicht kann


----------



## AMD (6. Dezember 2011)

Aktuell hab ich nur ein Mausklick = eine Kugel aber das liese sich innerhalb kürzester Zeit an jede Waffe anpassen! War bis jetzt noch nicht so entscheident ^^


----------



## Crenshaw (6. Dezember 2011)

Okay find ich aber gut wenns dann so ist 

Nochmal Respekt an deine arbeit


----------



## KingofKingzZ (6. Dezember 2011)

Bei der Kollisionserkennung mit den Kugeln und generell mit sehr schnellen Objekten musst du iterativ arbeiten. D.h, dass du nicht einfach jedes x-te Frame die Kugel in einem Schritt bewegst und dann die Kollision testest, sondern, dass du die Kugel nur in sehr kleinen Schritten bewegst, bis sie weit genug für dieses Frame gekommen ist. Ich hoffe du verstehst, wie ich das meine ^^ 
Das ganze hat den Grund, dass sonst keine Kollision erkannt wird. Stell dir vor, die Kugel ist ganz knapp vor einer Mauer (also noch keine Kollision). Wenn du die Kugel dann das nächste mal weiter bewegst, kann es aber sein, dass sie bereits hinter der Mauer ist. -> Du erkennst keine Kollision
Deshalb musst du die Kugel nicht in einem Schritt bewegen, sondern in vielen kleinen Schritten, um sicher zu sein, dass die Kugel auf jeden Fall nicht einfach durch ein Objekt kann. 
Die Optimale Größe für so einen kleinen Schritt wäre z.B. die Länge der Kugel selbst. Also so, dass das hintere Ende der Kugel gerade auf dem vorderen Ende der Kugel des letzten Frames liegt 

Lg


----------



## fadade (6. Dezember 2011)

Dazu hätt ich auch mal eine _Ideenfrage _

Kann man nicht jedem Munitionsobjekt oder so ihre Flugbahn z.B. als Gerade oder eben physikalisch korrekter als Parabel mitgeben? sprich es wird einfach nicht eine Kollision des Objektes erkannt, sondern bei jedem Update oder (wie KingofKingz schrieb) öfter geschaut, ob die Gerade/Parabel-Bewegung zu einem Zeitpunkt t eben das Volumen eines anderen Objktes schneidet.

Keine ahnung, ob das zu realisieren ist, dann gibt man der Klasse eben einen Konstruktor mit, wo man die Parameter des gleichungstyps übergibt und dann wird eben immer gerechnet ^^


Jaja ... beim Programmieren im Informatikstudium sollen wir auch immer alorithmisch denken 

Wenn Interessiert könnte ich mich damit ein bissel beschäftige, war jetzt eben nur ein Einfall ...

PS: Respekt 4 Projekt


----------



## mf_Jade (6. Dezember 2011)

Ich les hier auch immer gern mit und staune wie gut du das hinbekommst.


----------



## AMD (6. Dezember 2011)

@KingofKingzZ && dadade 

Ich hatte vor einer weile schon lange mit der Kollisionserkennung experimentiert und das Problem was du beschreibst King ist mir durchaus bewusst geworden. Daher basiert das bei mir auch auf Vektorrechnung mit Abstand Gerade/Punkt - Ebene (wenn auch in einer noch etwas abgewandelten Form). Dadurch kann ich mir den Abstand eines Punktes zum nächsten Objekt geben lassen, da ich den exakten Schnittpunkt berechne, wo die Gerade ihren Durchstoßpunkt hätte. Daher sollte das an sich kein Problem werden 
Vorallem lassen sich viele Dinge dadurch sehr genau bestimmen und ich muss auch nicht jedes Frame diese Berechnungen durchführen, da ich ja vorher schon eine gewisse Vorhersage habe wie was auftreten wird 

Und natürlich auch danke an alle die das Projekt verfolgen und es auch scheinbar ganz gut finden! Das steigert gleich immer die Motivation dran zu arbeiten


----------



## Gast12307 (6. Dezember 2011)

Hab dein Projekt erst gerade endeckt  coole Sache


----------



## KingofKingzZ (6. Dezember 2011)

Wenn du den Schnittpunkt aber schon vorher berechnest, wie machst du das dann mit dynamischen Objekten? 
Da müsstest du es ja wieder jedes Frame bzw. alle paar Frames machen.


----------



## AMD (6. Dezember 2011)

Was sind denn jetzt für dich dynamische Objekte?


----------



## Airboume (6. Dezember 2011)

ein flugzeug am himmel 
sry für den sinnlosen post


----------



## KingofKingzZ (6. Dezember 2011)

Naja Objekte, die sich eben bewegen.. wie z.B. Spieler. 
Ich weiß nicht, ob ich das oben richtig verstanden habe, aber wenn du den Punkt vorberechnest, wo die Kugel einschlägt, dann ist da nicht mit einberechnet, dass evtl. während die Kugel noch fliegt, ein Spieler o.ä. reinrennt oder?


----------



## AMD (6. Dezember 2011)

Es ist ja nicht so, dass diese Berechnung nach dem Schuss durchgeführt wird und dann war es das! Es wird halt nur nicht jedes Frame durchgeführt.
Die Steuerung vom Spieler wird z.B. 60 mal in der Sekunde geupdatet, sieht aber denoch total flüssig aus. Genauso ist es mit der Kollision, 60 updates pro Sekunde.
60 Berechnungen oder 1000 sind schon ein Unterschied ^^


----------



## Festplatte (6. Dezember 2011)

Boa, das ist ja mittlerweile schon richtig super!


----------



## fac3l3ss (7. Dezember 2011)

AMD schrieb:


> (...)


 Wow, da sieht schonmal gut aus! 


MfG
fac3l3ss


----------



## Robonator (8. Dezember 2011)

Richtige fliegende Kugeln das gefällt mir


----------



## Hübie (11. Dezember 2011)

Ballistische Geschosse haben ja immer eine Flugbahn eher wie eine Parabel/Viertelellipse. Hier findest du sehr gut erklärt wie das berechnet wird, falls du das nicht bereits getan hast.

Ich bewundere dein Können übrigens sehr und finde es immer wieder interessant hier reinzuschneien  (also nicht _nur_ programmiertechnisch sondern auch vom logischen Verständnis her)


----------



## AMD (14. Dezember 2011)

Danke @all 

@Hübie: Das bei größeren Kugeln eine Flugbahn Sinn macht kann ich mir durchaus vorstellen aber bei einer normalen Waffe wäre dieser Effekt doch wohl eher minimal, zumindest vermute ich das ^^ Müsste ich mal durchrechnen bei einer realistischen Kugelgeschwindigkeit auf großer Distanz.


Was gibts sonst noch so neues:
Habe wieder ein paar Dinge am Code optimiert und aufgeräumt, wobei ich noch nicht zu 100% zufrieden bin.
Außerdem muss ich noch paar Dinge bei der Kollisionserkennung aufarbeiten aber bis jetzt läufts ganz gut. Außerdem können nun Leitern eingefügt werden und der Player klettert daran hoch.


----------



## KingofKingzZ (14. Dezember 2011)

Zumindest bei BF3 ist das teils richtig extrem, was für eine Bahn die Kugeln fliegen. Musste ja nicht direkt die Formel da nehmen, aber bei den Kugeln würde ich schon auch die Gravitation wirken lassen. 
Wenn du alles richtig machst, sollte sich dadurch ja schon eine Flugbahn ergeben 

Lg


----------



## AMD (14. Dezember 2011)

Jep einfach nur die Gravitation mit einbeziehen dachte ich mir auch schon! Nicht weiter schwer aber es wird eine Flugbahn ^^


----------



## Hübie (16. Dezember 2011)

AMD schrieb:


> Danke @all
> 
> @Hübie: Das bei größeren Kugeln eine Flugbahn Sinn macht kann ich mir durchaus vorstellen aber bei einer normalen Waffe wäre dieser Effekt doch wohl eher minimal, zumindest vermute ich das ^^ Müsste ich mal durchrechnen bei einer realistischen Kugelgeschwindigkeit auf großer Distanz.
> 
> ...


 
Naja selbst mit einem Kleinkaliber kannst du 500 Meter schießen. Da hast du schon deine bogenartige Flugbahn  Aber erst mal kleine Brötchen backen. Es wäre nur für den Realismus förderlich und ich wollte mich auch mal einbringen


----------



## AMD (18. Dezember 2011)

Ja da ist was dran ^^ Aber wie du schon sagst: kleine Brötchen backen  Sowas noch einzubauen wäre aber halt kein Problem und wird dann noch gemacht 

Habe nun heute mal bisschen am Tag / Nachtwechsel gecodet, da das vorher nicht wirklich gut geklappt hat! Läuft nun alles bestens!
Und so entstand das alles: 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Neben TV gucken immer bisschen aufm Whiteboard rumgekritzelt und geschaut wie ich das am besten mache xD Muss man nicht wirklich durchsehen (echt nicht!) aber ich fands mal lustig das zu posten 
Frohe Weihnachten ;D


----------



## Crenshaw (18. Dezember 2011)

Genauso hätt ich es auch gemacht 

Meinst du, du kriegst die nächste Demo bis zu Weihnachten fertig?


----------



## fac3l3ss (18. Dezember 2011)

AMD schrieb:


> (...)


Ich verstehe zwar nur das unten links, aber trotzdem 


MfG
fac3l3ss


----------



## AMD (18. Dezember 2011)

Wir werden sehen^^ 
Ich habe noch mit einem Problem bei der Kollision zu kämpfen! Damit werd ich mich anfang der Woche mal befassen! Wenn ich das hinbekomme, sollte es wohl durchaus möglich sein^^


----------



## Crenshaw (18. Dezember 2011)

Okay dann drück ich dir die Daumen


----------



## fadade (19. Dezember 2011)

Wär auf jeden Fall für Werbezwecke gut 
Wenn dann auf die Main kommt, als Update o.ä. dann hättest du hier mal massig Tester 

Tjo und ansonsten .... lass den Weihnachtsmann nicht da ran!


----------



## Airboume (19. Dezember 2011)

fac3l3ss schrieb:


> Ich verstehe zwar nur das unten links, aber trotzdem


 mahn - das wollt ich posten - ich konnt ja nicht ahnen, dass es noch ne seite danach gibt 

@ AMD - den weihnachtsbaum hätt ich nicht so gut hinbekommen 
________ich beneide dich irgendwie - ich will das auch könen, aber ich hab ja noch ein bissl Zeit das zu lernen


----------



## Hübie (21. Dezember 2011)

AMD schrieb:


> Ja da ist was dran ^^ Aber wie du schon sagst: kleine Brötchen backen  Sowas noch einzubauen wäre aber halt kein Problem und wird dann noch gemacht
> 
> Habe nun heute mal bisschen am Tag / Nachtwechsel gecodet, da das vorher nicht wirklich gut geklappt hat! Läuft nun alles bestens!
> Und so entstand das alles:
> ...



 Den Weihnachtsbaum check ich, aber den Rest musst du uns mal erklären  Frohe Weihnachten und lass dich reich beschenken.

LG Hübie


----------



## AMD (21. Dezember 2011)

@fadade: Jap auf der Main wäre nett! Aber das Projekt hier wurde dort ja schonmal vorgestellt  Von daher warum nicht ^^

@Airboume: Übung macht den Meister ^^
So lange mach ich das ja auch noch nicht und wenn man sich da motiviert ranhält, dann schaffst du schnell gute Ergebnisse ^^

@Hübie: Ich lass das am Besten einfach so stehen xD Das zu erklären wäre wohl zu verwirrend 
Dir (bzw. euch allen) natürlich auch frohe Weihnachten 

@Topic:
Ich habe mich heute mal eine weile mit den einzelnen OpenGL Versionen beschäftigt und es wird mindestens OpenGL 3.0 benötigt. Bei niedrigeren Versionen wird (vermutlich) nicht laufen. OpenGL 3.0 wird ab bei nvidia ab der Geforce 8 unterstützt sowie bei AMD/ATI ab der HD 2000 Serie. Ich denke mal sowas sollten aber wirklich schon sehr viele haben von daher nicht ganz so eng 
Aktuell wird noch mit 3.1 gearbeitet aber ich würde noch gerne 3.3 nutzen, was aber mit dem aktuellen Code nicht möglich ist. Werd ich aber noch früher oder später anpassen.

Anmerkung: GPU's die OGL 3.0 können, die haben auch keine Probleme mit 3.3 ^^


----------



## Crenshaw (21. Dezember 2011)

Ja ich denke sowas würd dann doch vorhanden sein 
Mensch, Mensch, Mensch, soviele tolle neue Sachen und ich kann Sie nicht ausprobieren


----------



## Kel (22. Dezember 2011)

Warum nicht gleich OpenGL 4.2?


----------



## AMD (22. Dezember 2011)

Die Änderungen von 3.3 zu 4.2 sind überschaubar!
Ich habe gestern erstmal ein leeres Projekt begonnen wo ich lediglich einen Rendercontext schreibe, der mit der OpenGL Version gut harmoniert. Aktuell läufts allerdings noch nicht so Rund!
Die Unterschiede sind schon ziemlich krass... allein schon da man viele berechnungen nun selben durchführen muss (weil der Immediate Mode wegfällt)! Zumindest so ähnlich 
Aber sollte der Renderpart mit 3.3 laufen, dann läufts auch mit 4.2


----------



## Crenshaw (26. Dezember 2011)

Ich schrei jetzt einfach mal:

NEUE ALPHA!!!!


----------



## joffal (27. Dezember 2011)

DITOOOOOOOOOOOOOOOOOOOOOOOO !! 

wobei an den Weihnachtsfeiertagen muss man ja nicht unbedingt arbeiten ^^


----------



## AMD (27. Dezember 2011)

Hey!

Ich hatte jetzt über Weihnachten leider fast gar keine Zeit um was zu machen!
Ich schreibe mir zurzeit einen eigenen Context für OpenGL. Bisher habe ich dafür freeglut genommen! Nimmt einen zwar zu begin viel Arbeit ab aber letztendlich ist es nicht so das wahre! Daher der eigene Context, wodurch ich auch variabler an sich bin!
Aber ich werde mich trotzdem noch um eine neue Alpha kümmern^^


----------



## AMD (30. Dezember 2011)

Habe heute mal an der Textausgabe sowie Buttons etc. für ein HUD gecodet und bisher folgendem Erfolg:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Man beachte den Text oben links sowie den Button unten in der Mitte.
Der Button sieht zwar ziemlich billig aus aber es ist mehr mit dem System möglich! Aktuell ist es nur ein Rotes Viereck mit Text aber man könnte auch einen schönen Button mit Texture + Alphachannel machen.
...
Okay das hab ich hier mal spontan gemacht als Beispiel:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Das ist jetzt keine Superqualität, da ich es einfach nur schnell in gimp zusammengeklatscht habe aber man sieht was möglich ist


----------



## Gast1111 (30. Dezember 2011)

Sehr nice  Nimmt Gestalt an


----------



## fac3l3ss (30. Dezember 2011)

Wa1lock schrieb:


> Sehr nice  Nimmt Gestalt an


 Sehe ich auch so 
AMD macht neben Bulldozer auch gute Sachen!  (nicht flamen, spiele selber mit meiner wassergekühlten 6950 )


MfG
fac3l3ss


----------



## AMD (3. Januar 2012)

Hallo!

Erstmal noch frohes neues an alle 

Habe zuletzt mal den Renderpart etwas optimiert, wobei Objekte die sich weiter als Wunschwert X entfernen eine Texture mit niedrigerer Auflösung haben.
So wie in diesem Beispiel:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Dieses Beispiel ist jetzt natürlich etwas übertrieben dargestellt, aber man soll ja den Unterschied bei den Palmen auch gut erkennen! Im Normalfall wird die Texture nach 250 Meter (hier 100 Meter) Abstand um den Faktor 4 veringert. Fällt allerdings nicht wirklich auf  Aus Performancegründen natürlich eine sinnvolle Sache  Macht sich vorallem bei Objekten mit großen Texturen wie 1024x1024 bezahlt.


----------



## Crenshaw (3. Januar 2012)

Dann weiß ich was ich als erstes ausschalte  
Nein ein LOD ist ja sehr sinnvoll aber je nachdem wie gut doch sehr störend


----------



## LordCama (3. Januar 2012)

frage, ist deine engine (übrigens sehr gelungen) auch in der lage, feuer darzustellen?


----------



## AMD (3. Januar 2012)

@Crenshaw: Wie du schon sagst, sinnvoll ist es schon ^^ Ich versuche es aber schon so zu basteln, dass ein weicher Übergang ist der nicht wirklich auffällt 

@LordCama: Noch nicht wirklich. Ich hatte vor kurzem schonmal ein paar Tests zu einer Explosion gemacht. Zwar noch nicht das gelbe vom Ei gewesen aber hat geklappt!
Wollte das demnächst ohnehin in Angriff nehmen. Wenn was gutes bei rauskommt folgen natürlich Bilder.


----------



## Gast1111 (4. Januar 2012)

Also BF 1942 hast du von der Grafik schonmal eingeholt


----------



## AMD (4. Januar 2012)

Update:

Ich habe heute ein paar Performancetests gemacht und bin zu interessanten Ergebnissen gekommen.
Manche OpenGL-Befehle machen simple Dinge aber verbrauchen daher unmengen an Leistung. So z.B. das sichern einer Matrix oder auch das zurückholen der Matrix vom Stack.
Habe mir dafür nun eigene Befehle geschrieben (in Assembler ), was einen dicken Performanceschub bringt.

Vorher habe ich 2 Millionen Polygone bei 35 Frames gerendert. Nun sind 4 Millionen bei 30 Frames drin bzw. die 2 Millionen rendern nun bei knapp 60fps.
Ich werde definitiv noch ein paar andere OpenGL Befehle gegen eigenen Code austauschen, da der Performancesprung schon ziemlich deutlich ist.


----------



## bingo88 (4. Januar 2012)

Ist doch immer wieder interessant, wie solche Funktionen so bescheiden implementiert werden ^^ Ich kenne solche Funktionen von DirectX her, da gibt es auch einige Dinge, um die man lieber nen Bogen macht. Die Assemblerklopperei hebe ich mir übrigens immer fürn Schluss auf, meistens kann ich das dann nämlich doch noch irgendwie vermeiden


----------



## AMD (4. Januar 2012)

Wahre Worte 
Aber ich finde Assembler eig. ganz interessant! Schnell und wenn man da etwas Übung hat auch garnicht so schwer


----------



## RyzA (5. Januar 2012)

Coole Sache!

Da kann man mal sehen wieviel Arbeit sowas macht.


----------



## AMD (9. Januar 2012)

Ich muss das Projekt jetzt erstmal etwas vernachlässigen, da in einem Monat die Prüfungen in der Uni beginnen! Das geht einfach mal vor 
Danach wird wieder mehr programmiert! Aber ganz auf Null fahre ich das programmieren trotzdem nicht zurück


----------



## Airboume (9. Januar 2012)

ich warte


----------



## fac3l3ss (9. Januar 2012)

AMD schrieb:


> (...)


 Also meiner Meinung nach darf das Projekt dich nicht einschränken und wenn du Zeit brauchst, dann nimm sie dir. 
Allerdings ist mir wichtig, das Projekt auch fertigzustellen, wobei ich allerdings hier keine Zweifel habe. 


MfG
fac3l3ss


----------



## AMD (11. Januar 2012)

@fac3l3ss: Aufgeben werde ich das Projekt sicher nicht! Dafür ist mir das Projekt auch persönlich schon zu wichtig 

Hab nun auch gerade nochmal etwas gecodet und es werden nun auch exportierte Modelle vom ZModeler akzeptiert! Beispiel:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Arbeite nach wie vor mit dem *.obj Format allerdings spruckt der ZModeler die Daten etwas anders aus als 3ds Max!


----------



## RyzA (11. Januar 2012)

Warum sieht das Bild so dunkel aus?

Ich wünsche dir viel Erfolg bei den Prüfungen.


----------



## AMD (11. Januar 2012)

Weil es im Spiel gerade dunkel wurde ^^

Danke!


----------



## RyzA (11. Januar 2012)

Ach Tageszeiten simulierst du auch mit Engine? Interessant.


----------



## LordCama (11. Januar 2012)

tag und nacht, war schon in der ersten demo so


----------



## AMD (13. Januar 2012)

Korrekt, allerdings wurde es dort noch per Hand eingestellt^^ Wird nun selber von der Engine berechnet 

Habe mich nun auch gerade noch mit Rotationsmatritzen befasst, da ich ein paar kleine Probleme beim Rendern hatte, welche aber hiermit behoben werden konnten


----------



## AMD (13. Januar 2012)

Grüße vom Vice City Airport 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Crenshaw (14. Januar 2012)

Mit jedem neuen Bild fällt das Warten schwerer  
Du hast meinen größten Respekt


----------



## fac3l3ss (14. Januar 2012)

Crenshaw schrieb:


> (...)


 Sehe ich genauso! 


MfG
fac3l3ss


----------



## DiabloJulian (15. Januar 2012)

Richtig gut, ich hoffe, dass ich das auch eines Tages hinbekommen werde...


----------



## AMD (16. Januar 2012)

Kleines update:
Ich habe gestern eine sehr interessante Entdeckung gemacht  Beim Rendern vom Vice City Airport hat die Engine doch glatt 1,5GB Ram benötigt Heute mal gleich auf Fehlersuche gegangen und Problem wurde gefunden. Wenn man mit großen, mehrdimensionale dynamischen arrays arbeitet und dabei vergisst einen großteil zu löschen hat das grobe Folgen! Nach angepasstem Code werden nun ca. 60MB dafür benötigt und kann als deutlich humaner eingestuft werden^^
Außerdem ist mir noch ein ander Part bei der Fehlersuche aufgefallen, wo ich echt Müll geschrieben habe (wurde natürlich auch erneuert). Auch das verringert die Speicherauslastung nochmals um ca. 20%.


----------



## fadade (16. Januar 2012)

Ähnliches Problem hatte ich heute auch mit meiner "Noch-Baby-Engine" ... starten und dann RAM-Verbrauch steigt kontinuierlich, bis er bei ~2,5GB ist. Dabei wird doch *nur ein simples triangle gerendert* 

Hast du eigentlich schon so etwas wie Map-dateien? oder ordner, wo man sich dann auch Custom-Maps mit custom-models erstellen kann?


----------



## AMD (16. Januar 2012)

Tja, passiert 

Natürlich!
Mapfiles kommen in den Ordner game/Maps/

Du könntest nun z.B. einen Ordner "MyMap" erstellen und dort dann selber eine Map erstellen! Dann "MyMap" in der Engine auswählen und alle Objekte die du darin laden lässt werden gerendert!
Im Ordner MyMap würdest du *.map files platzieren (die Engine sucht sich dann alle Files raus wo Objekte platziert werden) und rendert diese dementsprechend.
Objekte kommen in den game/Objects/ Ordner. Dort kommen alle Objekte rein die es gibt (wird vllt. noch abgeändert)! Die Engine läd aber natürlich nur die Objekte, die auch für die jeweilige Map benötigt werden!

So sieht das außerdem aus wenn man ein Objekt im Mapfile platziert:

```
MAP Palm1, -75.0, 220.0, 5.0, 0.0, 0.0, 0.0, 200.0, 450.0, 0
```
MAP = Engine weiss es handelt sich um Objekt (gibt z.B. auch LIGHT für Lichtquelle etc.)
Palm1 = Objektname
danach folgen x, y, z Koordinaten
x, y, z Rotation
LOD 1 und LOD 2
LOD 1 = Wenn der Spieler weiter als LOD Wert 1 entfernt ist (in Metern), dann wird die Objektqualität automatsich runtergerechnet.
LOD 2 = Ist die Entfernung größer als LOD 2 wird das Objekt garnicht mehr gerendert
Und noch ein Flagwert zum Ende für bestimmte Effekte (Objekt transparent etc.)

Frage einigermaßen beantwortet?^^


----------



## fadade (16. Januar 2012)

FFFFFFFFFEEEEEEEEEEEEEETTTTTTTTTTTTTTT!!!!!!!!!!!!!!!!!!!!!!!!!!! 

Muss ich bei der nächsten Demo glatt mal ausprobieren 

Apropos nächste Demo ..............................   --> ?


----------



## AMD (16. Januar 2012)

Ja Demo 
Ich schaue gerade die Lizenzrechte durch wegen dem Release. Das muss auch bedenkt werden  Ich will ja auch wirklich gerne mal eine Demo releasen, allein schon weil ich es immer wieder versprochen habe aber es bietet sich noch nicht so an! Ich bin halt noch nicht so zufrieden!


----------



## fadade (17. Januar 2012)

Alles klar, lass dir Zeit dude 

Dann beschaff ich mir in der Zeit mal ein paar Models mit denen ich deine Engine dann quäle 
Gibt es eigentlich eine maximale ... Existenzreichweite? xD


----------



## AMD (17. Januar 2012)

Also ich nehme an du meinst die maximale Sichtweite. Alles was weiter ist als die wird nicht gerendert.
Wenn ja: Die liegt aktuell bei 5000 Metern. Lässt sich aber natürlich einfach erhöhen.


----------



## fadade (17. Januar 2012)

naja ich meine eigentlich den Wertebereich mit dem die Positionen angegeben werden. Ich mache es mit float und manchmal reichen die 10^38 oder so schon gar nicht mehr aus


----------



## AMD (17. Januar 2012)

Achso! Aber 
Ich nehme auch float aber wie kann 10^38 nicht reichen? Da kann man ja eine riesige Map bauen ^^


----------



## fac3l3ss (17. Januar 2012)

Nur mal so eine Frage von einem normal Sterblichen, welcher versucht, ein wenig mit Cinema 4D umzugehen:
Kann ich dann auch Objekt aus Cinema 4D in *.map konvertieren und diese in deine Engine laden?
Falls ja werde ich das dann mal mit meinem Companion Cube machen! 


MfG
fac3l3ss


----------



## fadade (17. Januar 2012)

nein, aber C4D kann super nach *.obj exportieren, was ein relativ häufiges "einfaches" FOrmat ist.
Ansonsten muss man die dateien eben manuell öffnen, die von AMDs Engine benötigten Daten rauskopieren und ne eigene map-datei erstellen 

@float: 
Jaja, das habe ich schon öfter gehört, wie kann man 10^38 bloß ausreizen, aber es geht! Warts nur ab, ich zeige dann ein paar Screens xD


----------



## AMD (17. Januar 2012)

@fac3l3ss: Falls dein Objekt nicht unter verschluss steht kann ich es ja auch mal probieren  Wie viele Polys hat das Objekt denn eigentlich?^^

@fadade: Für dich würde ich es zur Not aber auch auf double umstellen


----------



## AMD (18. Januar 2012)

Update:
Habe jetzt viele Teile auf eine dynamische Speicherverwaltung umgeschrieben, vorallem im Bereich der 3D-Objekte gibt es nun keine Limits mehr durch die Engine.
Vorher war der Polygone Count auf 100k beschränkt aber durch die Änderung könnt ihr ein Objekt hinzufügen bis euer Ram voll ist oder es eben die Hardware nicht mehr schafft zu rendern (was vermutlich eher eintritt ).
Habe zum Test mal einen Würfel mit einer halben Million Polygone gerendert, läuft ohne Probleme und alles ganz geschmeidig


----------



## fadade (18. Januar 2012)

na mal sehen, ob ich damit meine 16GB RAM mal ausgelastet bekomme^^

Weil bei meiner "Babyengine" kann ich zwar auch unendlich viele Entities erstellen, aber der Verwaltungsaufwand auf einem Thread ist irgendwie zu hoch ... also ab ein paar tausend Entities wirds ne Diashow xD


----------



## AMD (18. Januar 2012)

ein paar tausend? ^^
Bei 4 Millionen hab ich ca. 30 fps ^^

Edit//
Nochmal ein kleines update:
Konnte noch die Performance verbessern. Es gab gewisse Situationen, wo die Engine ziemlich anfällig war und es zu Performance-Einbrüchen kam. Habe nun den Rendercontext soweit angepasst, dass das FPS Niveau auf einem ziemlich konstantem Level bleibt. Vorallem System mit schwächerer Hardware sollten davon profitieren, die Chance auf Nachladeruckler geht gegen Null.


----------



## fac3l3ss (18. Januar 2012)

fadade schrieb:


> nein, aber C4D kann super nach *.obj exportieren, was ein relativ häufiges "einfaches" FOrmat ist.
> Ansonsten muss man die dateien eben manuell öffnen, die von AMDs Engine benötigten Daten rauskopieren und ne eigene map-datei erstellen
> (..)


 Hast du überlesen, dass ich normal sterblich bin? 


MfG
fac3l3ss


----------



## fadade (18. Januar 2012)

@AMD: jaja, die CLR ist bei mir das Problem, dadurch dass ich so fetzige Objekte habe kommt sie wahrscheinlich nicht mehr hinterher. Auch dass ich die Buffer jedes Frame neu erzeugt habe, war nicht soooo praktisch^^
Also bei mir gibts auf jeden Fall noch handlungsbedarf, aber ich bin ja erst seit ein paar wochen dabei. Außerdem geschieht das ganze in C#  

@ fac3less: 
Schon klar 
Also wenn du in C4D etwas hast, dann gehst du einfach auf Menü - exporieren - als *obj (und dann diese Einstellungen im Popupfenster können erstmal auf Standard bleiben). So dann hast du z.B. aufm Desktop ne obj-datei. Die kannst du mit dem Texteditor öffnen und dort findest du irgendwo einen Abschnitt mit "Vectors" oder "Positions" oder so; der ist erstmal der Wichtigste. Den Abschnitt einfach kopieren und dann je nach AMDs Engine einfach irgendwie dort importieren lassen. So schwer ist das nicht 
Vielleicht ist es ja auch einfach die gesamte obj-datei .....
Wenn es ernst ist und ich das Import-Format kenne kann ich ja einen kleinen Importer programmieren, extra für den "_Gesichtslosen_" 

Edit:
und in den Mapfiles müsste man dann ja nur Objektnamen, positionen und betreffende Map eintragen ... so wie ich das verstanden hab^^


----------



## fac3l3ss (18. Januar 2012)

fadade schrieb:


> (...)


 Also soll ich den Textabschnitt als *.map abspeichern? 
Du musst wissen, dass ich von Programmierung gar keine Ahnung habe...
Und danke für das Angebot, aber den Aufwand musst du dir nicht machen. 


MfG
fac3l3ss


----------



## AMD (18. Januar 2012)

@fadade: Den Fehler hatte ich zu begin auch gemacht. Jedes Frame den Buffer neu erzeugen... das zieht die Performance enorm nach unten ^^ Aber du bist dank C# entschuldigt 

@Euch beide 
Wenn man jetzt in einem Editor seiner Wahl ist, exportiert man es einfach ins *.obj Format, kopiert die *.obj Datei dann in den Ornder der Engine, platziert das Objekt noch ganz schnell und schon gehts los 
In der Regel erhält man auch ein *.obj und ein *.mtl Datei. In der mtl stehen Informationen zu den Texturen! Die kommt dann auch den selben Ordner 
Es ist wirklich sehr einfach und ich hab auch schon ein Tutorial geschrieben wo das dann Step-by-Step erklärt wird


----------



## fadade (19. Januar 2012)

AMD schrieb:


> @fadade: Den Fehler hatte ich zu begin auch gemacht. Jedes Frame den Buffer neu erzeugen... das zieht die Performance enorm nach unten ^^ Aber du bist dank C# entschuldigt


 
Entschuldigt, lol 
Naja, aber am Anfang ist das ja gar nicht so schlimm. später wollte ich einen globalen Vertex- und Indexuffer haben und dann ein eigenes Description-Objekt, zwecks flexibilität unter den objekten und effekten usw .... könnte mir gut vorstellen, dass das gar nicht mal so doof ist^^

Was mir eben noch in den Sinn gekommen ist, dass man doch eigentlich ganz einfach per Pickray ein objekt auf de Map auswählen kann und dann mit irgendwelchen Tasten verschieben, drehen, vergrößern etc. könnte. Dann müsste anschließend die "neue" map gespeichert werden und man spart sich das manuelle eingeben. (Wäre auch ein Lustiges Feature _ingame_, so wenn man im Egoshooter Macht oder so hat und dann die Umgebung seinen Wünschen ein wenig anpassen kann  )


----------



## AMD (19. Januar 2012)

Da ist was dran 

Das "Picking" habe ich mir auch schonmal angeschaut. Gibt in OpenGL dafür ja sogar spezielle Befehle. Ich muss aber auch zugeben, dass ich noch nicht zu 100% dahinter gestiegen bin wie es exakt funktioniert ^^
Aber es ist natürlich richtig, dass man diese Objekte dann auch drehen, verschieben etc. kann! Ein Editor ist außerdem ohnehin auf der ToDo List nur die Priorität ist halt noch nicht so groß! Zumal ich ja auch aktuell keine riesen Maps habe! Dadurch ist der manuelle Aufwand überschaubar.
Die Idee mit dem Anpassen der Umgebung gefällt mir! Das muss ich mir mal zurücklegen ^^


----------



## Kel (19. Januar 2012)

fadade schrieb:


> na mal sehen, ob ich damit meine 16GB RAM mal ausgelastet bekomme^^


VRAM?


----------



## AMD (20. Januar 2012)

Ich hatte gestern Abend mit dem MapEditor begonnen und kann schon gute Erfolge vermelden!
Es ist bereits möglich einzelne Objekte mit der Maus zu selektieren, dieses Objekt wird dann rot eingefärbt und kann danach bewegt werden.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Ich habe dafür auch nicht die OpenGL Möglichkeit mit dem Picking genommen (da die nach genauerer Betrachtung dumm ist) sondern habe es über Lineare Algebra gelöst.
Nach ca. 5 Stunden Mathe und 30 Minuten Coden lief es 
Jetzt kommt noch eine grafische Oberfläche rüber und eine Funktion zum abspeichern und dann sollte der Editor schonmal zu was nutzen sein


----------



## Airboume (20. Januar 2012)

schick, schick, auch, wenn ich nicht viel verstehe.


----------



## AMD (20. Januar 2012)

Nunja aber du weisst ja was ein MapEditor macht?^^
Du kannst die einzelnen Objekte auf der Karte auswählen und dann nach belieben bewegen! Das hat den Vorteil, dass dann auch jeder ziemlich einfach Maps erstellen kann und es manuelle Arbeit abnimmt.


----------



## Airboume (20. Januar 2012)

jaja 
dat kenn ich ja aus tm nation 
ich will mich in die ganze sache auch mal reinknien, mal schaun, ob mir das spaß macht, aber erst mit dem neuen rechner


----------



## fadade (20. Januar 2012)

@Kel: Natülich, hast du etwa eine Graka mit "nur" 1GB VRAM oder so wat össeliges?  
Nein, da ging es um den RAM 

VRAM sollte bei einer Hobby-Engine eigentlich keiin Problem darstellen.

@AMD: WO  SIND DIE SCHATTEN HIN?????  
Kann man in OpenGL eigentlich auch mehrere "Fenster" /"Viewports" was auch immer unabhängig von einander rendern lassen? Also beim Editor wäre es z.B. eine Anwendungsmöglichkeit, wenn man links die einfache Mapstruktur hat und rechts dann das tatsächliche Renderbild (Mit Schatte, AA, uws.  ) oder so .......


----------



## AMD (20. Januar 2012)

Ja die Schatten 
Ich hatte in der Vergangenheit schon viel mit rum probiert aber ich hatte nie ein Ergebnis was mich zu 100% zufrieden gestellt hat. Daher muss ich das erstmal aufschieben und mich später mit befassen. An einer Sache verkrampfen und dadurch nichts anderes schaffen wollte ich auch nicht! Aber Schatten wird es früher oder später natürlich definitiv geben!
Man kann auch mehrere Viewports rendern lassen! Das mit 2 verschiedenen Viewports ist eig. auch eine gute Idee! Zumindest Optional ^^
Hatte gestern mal mit 16-facher Kantenglättung Rendern lassen... das waren echt mal glatte Kanten  allerdings auch ein guter Performancekiller.


----------



## fadade (20. Januar 2012)

Naja gut, auch wenn es nicht 100%ig befriedigend ist, wäre es vielleicht trotzdem ganz sinnvoll sie _zwischendrin _mal zu aktivieren, wer weiß, vielleicht kommt ja irgendeine Exception. Dann hätte man dafür wenigstens schonmal einen Anhaltspunkt, bzw. die Fehlersuche wäre einfacher 

Und das mit dem AA kann ich mir gut vorstellen xD
War es denn wenigstens noch > 30FPS? (Ich kann bei mir leider noch kein AA und AF und so machen ... damm kaggt immer der Grafiktreiber ab^^)


----------



## AMD (20. Januar 2012)

Bei 16-facher Kantenglättung sind die FPS von 1600 fps auf 200fps eingebrochen. Wobei bei den 1600fps 4-fache Kantenglättung bereits aktiv war ^^


----------



## fadade (20. Januar 2012)

Na das geht ja noch ... 16AA ==> nur noch 12% der Performance 
Was ich mich in dem Zusammenhang grad frage, ob man dort nicht direkt bei den ganzen BackBuffern (gibts die in OpenGL?^^) und so  nicht anstatt AA gleich eine höhere Auflösung zum Rendern verwenden kann und sie dann wieder runterrechnet; mist, wie hieß doch gleich der Fachbegriff dafür? 
Dann bräuchte man den Umweg über den Monitortreiber gar nicht, wobei das wahrscheinlich performanter wäre ...

Aber geht ja richtig voran 
Ist das Wasser eigentlich noch eine Ebene oder schon dynamisch?


----------



## AMD (21. Januar 2012)

Öhm, du redest von Downsampling?! ^^
Habe ich schon Tests mit gemacht aber wenn ich 4x MSAA rüberlege ist das Ergebnis deutlich besser (sowie von der Bildqualität als auch von der Performance). Die Unterschiede von MSAA größer als 4 sind dann alle nur noch sehr minimal wie ich feststellen musste und fressen eben mehr Performance als es je von nutzen sein werde.

Edit// Das Wasser ist (noch) eine Ebene ja, aber ich plane da schon was über einen Shader zu realisieren.


----------



## AMD (21. Januar 2012)

Habe mal ein kleines Video zum Map-Editor gemacht. Ist natürlich noch Alpha und es gibt noch keine grafische Oberfläche aber trotzdem schon ein guter Anfang wie ich finde:
OpenGL - Game Engine Editor (Alpha-Test) - YouTube
Ich empfehle natürlich eine HD-Auflösung!


----------



## Crenshaw (21. Januar 2012)

Kann man die Leiter die man im Editor sieht auch beklettern?


----------



## AMD (21. Januar 2012)

Ja das geht


----------



## fadade (21. Januar 2012)

Jep, Downsampling wars, aber dann hat sich das ja erledigt. Dann versuch ich auch lieber AA zum laufen zu bekommen 


Reicht ja schon fast^^
und wenn man das noch ingame könnte (also ein Objekt welches das erlaubt) eine bestimmte Zeit lang bewegen, wäre das mal ein cooler Fun-Shooter 

Achja und was mich gerade brennend interessiert ist deine Kamerasteuerung. Wäre es möglich mir da mal ein paar Code-Ausschnitte zu senden? Weil ich habe es bisher nur so gemacht, dass das nötigste funktioniert, aber immer wenn ich mit der Maus eine schräge Bewegung machen, dreht sich die World ganz seltsam 
Kann sein, dass es an der Reihenfolge der Transformationen bei mir liegt ....

hier mal meins was bisher notdürftigerweise funktionierte:

```
Vector3 rotVec = Vector3.Zero;
                float velocity = 0.012f;

                if (kbState.IsPressed(Key.UpArrow))
                    rotVec.Y = velocity;
                else if (kbState.IsPressed(Key.DownArrow))
                    rotVec.Y = -velocity;
                if (kbState.IsPressed(Key.RightArrow))
                    rotVec.X = velocity;
                else if (kbState.IsPressed(Key.LeftArrow))
                    rotVec.X = -velocity;
                if (kbState.IsPressed(Key.Q)) //Z-Komponente bei mausbewegungen natürlich 0
                    rotVec.Z = velocity;
                else if (kbState.IsPressed(Key.E))
                    rotVec.Z = -velocity;
               mGlobalWorld *= Matrix.RotationYawPitchRoll(rotVec.X, rotVec.Y, rotVec.Z)
```

Wobei das funktioniert eigentlich wie es soll, nur wenn ich das jetzt mit der maus mache dann nicht.


Btw, entscheidest du zwischen Physikobjekten und statischen Objekten, oder setzt du dann einfach bei den Physikobjekten einen bool-wert _mbIsDynamic _oder so auf false?


----------



## Gast1111 (21. Januar 2012)

Ich kann dir meinen Rechner mal als Extremtest zur VErfügung stellen, du schickst mir die Sachen und sagst was ich machen soll 
2 HD 7970 + i7 980X + 24 GiB RAM + OC sollten wohl reichen


----------



## fac3l3ss (21. Januar 2012)

Wa1lock schrieb:


> Ich kann dir meinen Rechner mal als Extremtest zur VErfügung stellen, du schickst mir die Sachen und sagst was ich machen soll
> 2 HD 7970 + i7 980X + 24 GiB RAM + OC sollten wohl reichen


 Gut, dass du dich bei diesem Projekt mirhilfst bzw. mithelfen willst! 
Aber... Gebe es zu, deine HW ist durchaus "oversized"! 


MfG
fac3l3ss


----------



## Gast1111 (21. Januar 2012)

fac3l3ss schrieb:


> Gut, dass du dich bei diesem Projekt mirhilfst bzw. mithelfen willst!
> Aber... Gebe es zu, deine HW ist durchaus "oversized"!
> 
> 
> ...


 Türlich ist er oversized  Das ist ja das schöne dran 
Ich will mal die Grenzen seiner Engine ausloten 
@Davin Troll


----------



## Pikus (21. Januar 2012)

Nix da Troll, ich hab nur genau dasselbe gedacht 
Von deinem 980X wusste ich ja, aber als ich von den 2 7970 gelesen habe hab ich nur gedacht: WTF?!


----------



## fac3l3ss (21. Januar 2012)

Davin's Theorie schrieb:


> (...)


 Zwei Dumme, ein Gedanke! 
Ich würde mich schon über eine 7970 oder 980X freuen! 


MfG
fac3l3ss


----------



## Gast1111 (21. Januar 2012)

@fac3l3ss Wer nicht 
@Davin Pinnwand 
@Topic Wie gesagt, überlegs dir und melde dich wenn du willst


----------



## AMD (22. Januar 2012)

@fadade:
Nimm wirklich lieber AA, zumal Downsampling ja auch nur von nvidia unterstützt wird 
Nutzt du denn DirektX? Wenn ja da kenn ich mich nicht so doll aus  
Ich hatte jedenfalls auch erst das gleiche Problem, also das sich die ganze Welt dann komisch bewegt hat! Meine Lösung war dann: Einfach nicht die Kamera bewegen sondern die ganze Welt. Ist ja auch kein größerer Rechenaufwand, da man die Werte einfach in die Matrix packen kann. Aber letztendlich helfen kann ich dir da wohl trotzdem schelcht... ist halt schwer zu sagen wo es nun exakt dran liegt. :/

Aktuell habe ich auch nur statische Objekte, wobei der physikalische Teil auch noch hinzugefügt werden muss! Und das würde ich dann eben per bool Variable lösen, wie du schon sagtest.

@Wa1lock: Wie gerne hätte ich doch eine 7970 
Wie schon gefühlte 1000 mal gesagt will ich ja eine Alpha veröffentlichen, die du dann sehr gerne Testen darfst! 

@Topic:
Habe schonmal ein wenig am HUD zum Editor gearbeitet... Das wird sich alles noch ändern aber hier sieht man einen ersten Überblick:
OpenGL - Game Engine Editor (HUD-Test) - YouTube


----------



## Gast1111 (22. Januar 2012)

Willst du beim HUD wirklich die Koordinaten lassen? Sieht etwas verwirrend aus 
Wobei mir auch nicht einfällt wie man es anders lösen kann


----------



## AMD (22. Januar 2012)

Ehrlich gesagt versteh ich garnicht wie du das meinst


----------



## fadade (22. Januar 2012)

Ich auch nicht^^
Die im Hud sind die Koordinaten des selektierten Objekts und dann darüber sind wohl noch einmal die Kamera-/Playerkoordinaten.

Achja und Verschiebung geschieht entlang der nativen Achsen und nicht relativ zum Betrachte oder sowas oder?!?




AMD schrieb:


> @fadade:
> Nimm wirklich lieber AA, zumal Downsampling ja auch nur von nvidia unterstützt wird
> Nutzt du denn DirektX? Wenn ja da kenn ich mich nicht so doll aus
> Ich hatte jedenfalls auch erst das gleiche Problem, also das sich die  ganze Welt dann komisch bewegt hat! Meine Lösung war dann: Einfach nicht  die Kamera bewegen sondern die ganze Welt. Ist ja auch kein größerer  Rechenaufwand, da man die Werte einfach in die Matrix packen kann. Aber  letztendlich helfen kann ich dir da wohl trotzdem schelcht... ist halt  schwer zu sagen wo es nun exakt dran liegt. :/


 
jop, nutze DirectX und ja wird dann nur auf *Windoof *laufen; hmm .. und die _Einschränkungen _durch meine Assembly sind noch *64Bit* Pflicht und mindestens *Windows7 *Pflicht  
hab heute aber auch einiges geschafft^^
AA funktioniert (oder sollte es, hab bisher noch keinen Unterschied gesehen ), die Kamera kann sich jetzt auch ordentlich bewegen (lag im Up-Vector der Kamera, den ich gar nicht mittransformiert habe und dann kamen sich da target und up in die Quere) und alle möglichen Einstellungen lassen sich jetzt auch endlich speichern und übernehmen.

Wie hast du es eigentlich gemacht, dass man das Wasser "unendlich" weit sieht? Ist das einfach ne große Ebene? Auf jeden Fall schonmal _seriös_ 


PS: lass mal in der zweiten Jahreshälfte eine Engine-Competition starten  
Nur hoffe ich dass dann DX12 nicht bald kommt, sonst ist die 11er ja schon wieder "alt"


----------



## AMD (22. Januar 2012)

Genau. Oben links in der Ecke sind die Player-Koordinaten und in dem Fenster dann die Koordinaten vom jeweiligen Objekt! Dieses kann dann entlang der Achsen bewegt werden.
Hier auch nochmal ein Pic zum HUD... geht immer mehr voran.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



64bit und Windows 7? Wie kommt denn das? ^^
Nichtmal auf Vista? 

Bei den Vektoren muss man natürlich wirklich aufpassen! Ich tat mich da am Anfang auch ziemlich schwer...
Das Wasser ist eine Ebene aber das will ich auch nochmal überarbeiten aber alles zu seiner Zeit


----------



## AMD (23. Januar 2012)

Ein neues Video hätte ich dann noch:
OpenGL - Game-Engine 3D Editor - YouTube

Es werden nochmal ein paar Funktionen gezeigt usw.


----------



## DiabloJulian (23. Januar 2012)

Nett anzuschauen. Das einzige was stört sind die Palmen die in der Luft schweben, sind ja aber eigene Objekte und so gewollt 
Weiter so!


----------



## AMD (24. Januar 2012)

Die Palmen sind ja nur in der Luft, weil ich das Objekt wo die Palmen drauf stehen nach unten bewegt habe


----------



## Gast1111 (24. Januar 2012)

Kann man zwei Objekte nicht verknüpfen/verlinken? Sorry wenn ich Müll rede, kenn mich da nicht gut aus


----------



## fadade (24. Januar 2012)

Wa1lock schrieb:


> Kann man zwei Objekte nicht verknüpfen/verlinken? Sorry wenn ich Müll rede, kenn mich da nicht gut aus


 
Klar kann man! Und sollte man vielleicht, wenn es komplexer wird 
Im Prinzip ist es dann so, dass man ein objekt die und die Funktion ausführen lässt und diese Objekt reicht das dann an alle Seine Verknüpfungen weiter, aber dadurch kann es eben auch Einschränkungen geben, sprich du möchtest jetzt mal NUR den Boden ändern und dann kommen die Palmen plötzlich mit 
Wobei sich das auch relativ einfach umgehen lässt.

@Topic: 
Mich würde echt mal interessieren, wie dein Code so aussieht, denn ich musste gestern erstmal haufenweise aufräumen, umbenenen etc, weil ich mich durchgehend irgendwie nicht so wirklich an Konventionen halte und so 
Vielleicht hast du da ja ein paar Tipps 

Ansonsten, hast du schon eine "Fixierung" aufs Terrain? Also, dass der Player darauf _gehen _kann und sich _natürlich _bewegen kann? Ich hatte da meine ersten Tests, und als das Terrain aufhörte (also um 90° umklappte nach unten) dann hing ich da plötzlich seitwärts in der Gegend rum und konnte mich ned mehr bewegen 


*€dit: Vielleicht darf ich hier ja auch mal auf diese meiner Fragen weiterleiten ^^*


----------



## DiabloJulian (24. Januar 2012)

AMD schrieb:


> Die Palmen sind ja nur in der Luft, weil ich das Objekt wo die Palmen drauf stehen nach unten bewegt habe



Schon klar, deshalb hab ich ja auch "gewollt" geschrieben


----------



## AMD (26. Januar 2012)

Durch den MapEditor habe ich letztens ein paar neue mathematische Dinge integriert, welche vorallem auf lineare Algebra beruhen. Das tolle daran, es kommt auch der Kollisionserkennung zugute (und das auf sehr sehr sehr gutem Niveau). Allerdings reden wir hier schon von ein ganz paar mathematischen Operationen  Daher wird das ganze auf einen weiteren Thread/CPU Kern ausgelegt. Muss dazu zwar noch ein paar Sachen testen aber die Technik an sich:  
Da bin ich schon stolz drauf 

Außerdem befindet sich der Blur-Effekt sowie Depth of Field in der Testphase.


----------



## LordCama (26. Januar 2012)

DEMO!!!!!
klingt sehr gut, wie viele threts erzeugt deine engine nun eigentliche?


----------



## AMD (26. Januar 2012)

Aktuell sind es 4 Threads.
Da Thread aber nicht gleich CPU-Kern ist muss da noch was optimiert werden. Aber das kommt schon noch, keine Bange


----------



## AMD (26. Januar 2012)

Habe nochmal am Editor gearbeitet und es können nun neue Objekte gespawnt bzw. auch andere gelöscht werden.
OpenGL - Game Engine - Spawn/Delete Object - YouTube


----------



## fadade (26. Januar 2012)

War das beabsichtigt, dass du am Ende das ganze Terrain entfernt hast?  
Aber zeigt eindrucksvoll die Funktionalität^^

Achtest du eigentlich sehr darauf, welche Arbeiten die GPU übernimmt und welche die CPU? Weil ich habe vorhin mal spasseshalber ein paar hunderttausend einfache Würfel erstellt und dann gemerkt, dass die CPU auf 100% war ..... weil ich die Meshkoordinaten relativ zum Nullpunkt habe (welches ja die "Objektposition" ist) und die noch auf der CPU in Weltkoordinaten umwandeln lasse.

Achja und wenn dein Pickray unbegrenzt ist, wäre es vielleicht sinnvoll ihn auf eine bestimmte Länge zu begrenzen; also die eine Palme ist von der Entfernung ja schon relativ weit weg


----------



## AMD (26. Januar 2012)

Ich wollte halt lediglich die Löschfunktion zeigen, daher alles weg 

Ich achte sehr auf die Aufteilung CPU <=> GPU! Die CPU Leistung geht leider schneller in die Höhe als es einem Recht ist, daher muss dort sehr viel berücksichtigt werden!
Man sollte halt wirklich so viel wie Mögliche Daten schon auf der GPU haben und den Datenbus CPU - GPU möglichst wenig belasten! Das ist ein Flaschenhals!

Das Pickray hat jetzt keine Begrenzung. Wenn ein Objekt gerendert wird kann es auch angeklickt werden. Wird natürlich der LOD Wert überschritten und das Objekt nicht mehr gerendert, dann kann es logischerweise auch nicht angeklickt werden^^


----------



## AMD (27. Januar 2012)

Update:
- Habe heute ein paar Kleinigkeiten am Code gefixt, so kam es z.B. zu Fehlern bei der Auflösung wenn der Fullscreen Modus verlassen wurde
- Außerdem habe ich die Arbeiten einer Update-Funktion angefangen. Ist natürlich noch nicht fertig aber es werden schon Versionsinfos von einem ftp abgefragt, diese verglichen und und ggf. folgt dann die Updatefunktion.


----------



## fadade (27. Januar 2012)

ui ui ui das klingt auch spannend 
frage mich irgendwie ,wie man so ein Update durch führt 
Wenn andere Version, dann Datei laden und ..... dann?!? Beim nächsten start die alte Datei mit der neuen ersetzen. Aber dafür wird wohl ein "externer" Update benötigt..........

Naja, lass mich überraschen. Und lass dir mal schöööön Zeit, damits ordentlich wird. *Aber *Ende März bin ich mit den Prüfungen durch, dann *muss *eine neue Demo kommen   


PS: ich hatte heute erste Kompatibilitätsprobleme
Programmiert aufm Lappi  mit GT540M und ausführen wollen auf der GTX260 --> ERROR  ^^
Vielleicht sollte ich noch DX11 als Systemvoraussetzung machen .. damit es auf noch weniger Systemen läuft


----------



## AMD (27. Januar 2012)

Aktueller Stand so:
Normale exe wird gestartet, auf updates wird überprüft, andere exe wird gestartet, diese exe läd files runter und ersetzt diese mit den alten, done! Kurz gesagt.. im Hintergrund muss man da natürlich noch ein paar Dinge mehr machen^^

Ja bis Ende März definitiv! *MEIN WORT DRAUF!


*Ich habe bei mir auch ein komisches Verhalten: Wenn ich das Projekt auf meinem ganz normalen PC compile und mit der HD 5870 rendere, dann läufts ganz normal! Nehme ich den selben Build auf meinem Netbook mit der APU E-350, dann wird der Alphakanal nicht immer berücksichtigt, manchmal schon! Compile ich es auf dem Netbook selbst dann gehts immer...


----------



## fadade (27. Januar 2012)

AMD schrieb:


> Compile ich es auf dem Netbook selbst dann gehts immer...


 
und wie schaut es dann auf anderen Systemen aus? 
Kann ja sein, dass es dort von irgendeiner OpenGL-Komponente einen Versionsunterschied oder so gibt ...

Wobei als Hobbyist hat man wahrscheinlich eh keine Chance es auf sehr vielen Systemen zum laufen zu bekommen, weil dazu der Test- und Anpassungsaufwand wohl zu hoch wäre.
Habe ich ja selbst auch hier: GT540M --> Alles wunderbar, GTX260 --> naja DX10 eben, GT430 --> Texturen werden nicht dargestellen, HD5470 --> bisher alles wunderbar (bis auf Performance )


----------



## AMD (30. Januar 2012)

Updater ist fertig und funktioniert!

@fadade: Ja da muss ich definitiv nochmal weiter probieren bzw. ihr dann alle bei einer Betaversion


----------



## AMD (31. Januar 2012)

Hab heute mal was mit neuem Wasser und passender Reflektion versucht:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Gut oder eher nicht?
Ich will definitiv noch die Reflektionsqualität an sich verbessern und die Verzerrung per BumpMapping realisieren... aber sonst an sich finde ich es schonmal okay.


----------



## Crysis nerd (1. Februar 2012)

Also ich mag die Reflektion  
Ich habe ja sowieso, soweit ich weiß, noch nichts zu deiner Engine geschrieben, aber ich find sie auch echt schon sehr gut. 
Beim Wasser wäre natürlich am besten, wenn wirklich perfekte Reflektion auch mit Wellen, aber leider arbeiten wir (also du^^) hier im Realtime bereich und machen keinen Raytracer 
Bin mal gespannt was in nächter Zeit so noch kommt von dir. Ich verfolge den Thread jedenfalls auch schon ne ganze Weile, nur ohne hierrein zu schreiben 

Gute Gelingen noch 

mfg


----------



## Crenshaw (1. Februar 2012)

Hmm sieht irgendwie mehr nach nem Unschärfe Efekt aus als nach ner Spiegelung.. 
Vielleicht sollte man es irgendwie mehr "verzerren"?


----------



## fadade (1. Februar 2012)

Hmmmmmmm.... also ich persönlich finde es noch etwas stark, sieht so eher nach Leitungswasser aus ..... aber das kommt auf die Situation an. Rein vom "technischen Aspekt" her ist es schon gut 

Gibts da bei OpenGL eigentlich auch ne Mirror-Map oder sowas 
Weil wenn man genau hinschaut, ist das spiegelbild pixeliger als das _reale _bild ...


----------



## AMD (1. Februar 2012)

Was ist denn eine Mirror-Map? (sag jetzt nicht Spiegel-Map )
Ist es auch! Die Wasserebene ist nur mit einer Textur von 384x384  Bei 1024x1024 sieht das schon ganz anders aus (geschweigeden noch höher).
Ich hatte auch schonmal ein Rendertest mit 3fachem HD probiert (5760x3240) und dann Ausgabe... also quasi Downsampling! Sieht wirklich gut aus aber aus Performancesicht voll der Killer ^^

@Crenshaw: Wie ich unter dem Bild schon schrieb: Wird noch verzerrt


----------



## fadade (1. Februar 2012)

AMD schrieb:


> Was ist denn eine Mirror-Map? (sag jetzt nicht Spiegel-Map )



*Keine Ahnung!*  
Ich habs nur so genannt, weil es um spiegelungen geht (hab ich selbst ja noch gar nicht gemacht) 
Geht bestimmt auch über Pixelshader mit Tex-Ressource oder so ..



AMD schrieb:


> Ist es auch! Die Wasserebene ist nur mit einer Textur von 384x384  Bei 1024x1024 sieht das schon ganz anders aus (geschweigeden noch höher).
> Ich hatte auch schonmal ein Rendertest mit 3fachem HD probiert (5760x3240) und dann Ausgabe... also quasi Downsampling! Sieht wirklich gut aus aber aus Performancesicht voll der Killer ^^


 
Achwat, jetzt ist die HD7970 erschienen, da kann man ein bisschen in die vollen gehen. Kannst du mit OpenGL eigentlich fast "unendlich große" Texturen nutzen?


----------



## AMD (1. Februar 2012)

Also mein Wasser funktioniert (ungefähr) so:
- Szene Rendern (bloß gespiegelt)
- Bild in ein Frame Buffer Object packen
- TextureMatrix manipulieren
- Bild auf Ebene ausgeben

Ist halt grob erklärt (wenn man bedenkt das es ca. 150 Code Zeilen sind).


Ich nutze nach wie vor noch eine HD 5870  Obwohl die 7970 schon verlockend ist  Aber die muss erstmal etwas preiswerter werden!
unendlich nicht wirklich! Die maximale Größe eines FBO's beträgt 8192x8192. Das ist an sich schon riesig.
Natürlich könnte man nun anfangen zu splitten (so funktioniert das auch mit den MegaTextures). Heißt also eine 16384x16384 aus 4x8192x8192 aber letztendlich finde ich das quatsch!
8192x8192 ist schon riesig (!!!), wer da keine vernüftige Qualität unterbringt macht woanders was falsch... eig. sollte 4096x4096 schon für sowas das Maximum sein (wieder in Hinblick zur Performance).


Habe außerdem gerade noch eine ordentliche VSync Funktion gemacht, welche über eine Config-Datei in mehreren Stufen einstellbar ist!
Es müssen also nicht zwingend 60fps die Grenze sein sondern kann es auch auf bequeme 200fps, 500fps etc. stellen.
Bei 500 fps ist 1 Kern von meinem 2500k zu 20% ausgelastet und die GPU zu 30%... spart Strom


----------



## Mashed (2. Februar 2012)

AMD schrieb:


> Was ist denn eine Mirror-Map? (sag jetzt nicht Spiegel-Map )


 
Ich nehme an, er mein Environment Mapping: Reflection mapping - Wikipedia, the free encyclopedia


----------



## AMD (2. Februar 2012)

Achso okay 

Hab gerade nicht viel Zeit, daher ohne große Erklärung ein Video zum neuen Wasser (diesmal auch mit Verzerrung)! Richtige Texture damit es mehr nach Wasser ausschaut kommt natürlich noch rüber!
Wie immer empfehle ich HD und Fullscreen:
OpenGL - Game Engine - Water Reflection (GLSL Shader) - YouTube


----------



## Kel (2. Februar 2012)

Erinnert mich an die alten 3D-Spiele aus den 90ern (nur das Wasser sieht bei dir viel schöner aus). 
Nicht schlecht, Herr Specht .


----------



## nikk o. laus (2. Februar 2012)

Ich würde die verzerrung noch "zufällig" machen. Das sollte den "Wellen-Effekt" verstärken.
Aber sonst echt super! Erinnert mich an das gute alte Generals


----------



## RG Now66 (3. Februar 2012)

WOW sieht schon nicht schlecht aus.


----------



## AMD (3. Februar 2012)

Picture of the day 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Airboume (3. Februar 2012)

die arme palme 
aber wenigstens mit spiegelung. :


----------



## AMD (18. Februar 2012)

Hey Leute,

Ich hatte jetzt die letzten 1 1/2 Wochen kein Internet und nicht wirklich Zeit - daher gabs auch keine Infos und passiert ist auch nicht wirklich viel! Gibt aber bald neuen Stoff


----------



## fadade (19. Februar 2012)

*Gespannt sei* 

Momentan ist bei mir auch noch Prüfungszeit, nur danach ist hier hoffentlich wieder BEETAAA TIIIIMEEEEE


----------



## AMD (20. Februar 2012)

Das hoffe ich auch 

Zumindest die Schatten machen Fortschritte


----------



## AMD (20. Februar 2012)

Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Hier sieht man einen Shadow in einer geringen Auflösung 

Was steckt dahinter: Wie man sieht, ist der Schatten im vorderen Bereich besser als weiter hinten (stärkerer Treppeneffekt). Durch diese Technik kann ich scharfe Schatten in nächster Umgebung erzeugen, hab aber zugleich auch Schatten in weiterer Entfernung, die aber nicht so groß beachtet werden müssen, da diese Schatten ohnehin nicht gut erkennbar sind.
Ich bin aktuell noch am überlegen, ob eine 3 Stufen Unterteilung besser ist - qualitativ zwar schon aber die Performance will ich nicht vernachlässigen, daher mal schauen.
Um einen weicheren Übergang zu gewährleisten zwischen Schatten und kein Schatten wird noch PCF (Percentage Closer Filtering) integriert.


----------



## Adam West (20. Februar 2012)

Respekt!


----------



## kühlprofi (20. Februar 2012)

Bin hier seit Beginn ein stiller Mitleser, staune immer wieder, was du alles so auf dem Kasten hast  Obwohl ich mich in Sachen Programmieren eher weniger gut auskenne. Muss ein riesen Aufwand sein. (Lernte java Grundlagen "java ist eine insel", bisschen Php + mysql, das wars auch schon ) 

Weiter so, sehr interessant!


----------



## AMD (27. Februar 2012)

Shadows 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Airboume (27. Februar 2012)

jeay,
die sehen doch gut aus.  
Aber deine Palmen sind eckig.


----------



## Pikus (27. Februar 2012)

Airboume schrieb:


> Aber deine Palmen sind eckig.


 
 stimmt 

Ansonsten wirklich ein sehr geiles projekt, vor allem die schatten des zaunes überzeugen mich


----------



## AMD (27. Februar 2012)

Ja die Palme ist wirklich eckig, ich gebs zu


----------



## Airboume (27. Februar 2012)

is egal!
hauptsache wir haben den schatten.


----------



## fadade (27. Februar 2012)

*FÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄTTTTTTTTTTTTTTTTTT!!!!!!!!!!!!!!!!!!!!!!!!!!*
^^

Wie hast du es geschafft, dass die Zäune auch schatten haben? Ist das realte Geometrie oder (was ich vermuten würde) per Alpha in der Textur geregelt?

Eckige Palmen sind aber immer noch besser als eckige Kugeln -> Meine Kugeln haben momentan aus Performancegründen nur 4 Punkte sprich Kugel = Würfel


----------



## fac3l3ss (27. Februar 2012)

Sehr gut! 


MfG
fac3l3ss


----------



## Low (27. Februar 2012)

Zäune sehen besser aus als bei GTA 4


----------



## AMD (27. Februar 2012)

@fadade: Es ist schon eine Alpha-Texture (sowas mit Geometrie wäre zu krass^^)!
Kenne zwar nicht das Pendat zu DX aber unter OpenGL funktioniert das wohl damit: glAlphaFunc

Edit//
Nochmal eine Frage an alle: Mit welcher Hardware soll es laufen?

Ich versuche ja immer eine gute Mischung aus Optik und Performance zu haben aber letztendlich benötigt jede neue Funktion Leistung!
Auf meinen 2500k und HD 5870 läuft es mit ca. 1000fps (sind auch gerne mal 1200fps, je nach Szene). Außerdem wird die FPS Anzahl mit nur einem CPU Kern erreicht!

Wenn ich das nun auf meinem Netbook teste (APU, 1,6 Ghz pro Kern), dann läuft es mit ca. 30 fps! Jetzt könnte man natürlich die Schatten/Wasserqualität verschlechtern oder auch Kantenglättung deaktivieren und es läuft wieder um einiges besser aber irgendwo sollte ja doch eine Untergrenze sein!


----------



## fadade (28. Februar 2012)

1) Hm, da kann ich ja ma guggn, ob DX sowas auch kann; ist in jedem Fall genial 

2) Nene, also Netbook solltest musst du nicht unbedingt rücksicht drauf nehmen  
Vielleicht mit niedrigsten Einstellungen (oder wenn du viel zeit in Optimierung/Effizienz stecken möchstest).
Ich entwickle momentan an nem PC mit Core2uo 2x2,93GHz    4GB RAM    Nvidia GT430. Leistungsmäßig auf Niveau vom Laptop: i5 2430, 4GB RAM, GT540M. Bisher für vieles ausreichend. Kommerzielle Spiele laufen ja so durchschnittlich auf niedrigen Einstellungen damit auch noch, aber ich denke mal irgendwas mit Dualcore 2x3GHz + GT440/HD5670 oder Quadcore falls noch viel Physik/Effektspielerei reinkommt oder sowas ... jedenfalls wäre das so das Leistungslevel von sehr vielen Laptops, ein wichtiges Gerät als Student


----------



## bingo88 (28. Februar 2012)

DirectX kann das auch mit Alpha-Texturen. Ich weiß zwar atm nicht auswendig wie, habe es aber schon öfters gesehen.


----------



## Airboume (28. Februar 2012)

AMD schrieb:


> Nochmal eine Frage an alle: Mit welcher Hardware soll es laufen?
> 
> Ich versuche ja immer eine gute Mischung aus Optik und Performance zu haben aber letztendlich benötigt jede neue Funktion Leistung!
> Auf meinen 2500k und HD 5870 läuft es mit ca. 1000fps (sind auch gerne mal 1200fps, je nach Szene). Außerdem wird die FPS Anzahl mit nur einem CPU Kern erreicht!
> ...


Kann man denn die Quali schon runterschrauben?
Ansonsten bin ich glücklich, wenn das auf meinem Rechner (-> Profil) mit rund 30FPS läuft, also auf niedrigster einstellung versteht sich.^^
Aber da im Sommer sowieso nen neuer rechner alá 780GTX (680?) & 3770k ansteht, is mir das fast wurscht.


----------



## AMD (29. Februar 2012)

Dein System sollte reichen - hat ja zumindest mehr Power als die kleine APU!

Es gibt jetzt noch kein Menü wo man die Qualität einstellen kann, allerdings ist im Ordner eine Config.dat Datei, wo Dinge wie Kantenglättung, Schatten, Wasserreflektion, Anisotropische Filterung usw. eingestellt werden können.


----------



## AMD (29. Februar 2012)

Ich habe mal ein kurzes Video vom FlagEditor gemacht. Sind definitiv nicht alle Dinge drin aber zeigt gerade in Verbindung mit den Schatten usw. die Funktion!

OpenGL - GameEngine - FlagEditor - YouTube


Ps. Videoqualität ist leider nicht so gut geworden! Hab es schnell mit dem MovieMaker von 2,5GB auf 55MB konvertiert und da ging etwas zu viel Qualität verloren aber sollte denoch alles erkennbar sein - wie immer wird eine HD Auflösung empfohlen 



Edit// Den hässlichen grünen Strauch nicht beachten, hab ich aus GTA San Andreas und der fliegt definitiv wieder


----------



## fadade (29. Februar 2012)

nice nice! Es nimmt Gestalt an und wird immer kuuuuhlaaaaaa ^^
Achja und ich bin fast mit den Klausuren durch -----> wann ist BETATIME?  

PS: obs irgenwann mal so wird wie Outerra Engine vorgestellt: Mehr Open World geht nicht -


----------



## AMD (29. Februar 2012)

Ich weiss nicht wann Betatime ist, ich lerne aktuell für Klausuren! Ich schreibe die Ende März 

Ob es wie Outerra wird, wer weiss aber ich hab mir mal die Demo angeguckt und ich weiss nun durchaus warum man auch so viele Bäume sieht! 1 Baum besteht aus 4 Polygones und dann wird auf diesem Scheibenbaum nur noch ein Billboard-Effekt angewendet, also das sich die Scheibe immer zum Betrachter dreht! So könnte man aus 100.000 Polygones 25.000 Bäume machen, was ja kein Problem wäre ^^
Das Terrain an sich skaliert gut runter wenn man sich weiter entfernt bloß das Wasser find ich richtig geil


----------



## fadade (3. März 2012)

Joa, aber wenn man die Billboards noch realistischer machen könnte, würde mich das nicht stören, bzw. allgemein, wenn man nicht merkt, dass irgendetwas per Billboard realisiert ist, ist mir das eigentlich egal, solange das irgendetwas nützt 
Könntest du in deine Engine ja auch einbauen: Qualitätsregler auf ganz niedrig und dann werden einige sachen per Billboard gemacht; dann sollte es auch auf Netbooks laufen


----------



## Rollora (6. März 2012)

fadade schrieb:


> nice nice! Es nimmt Gestalt an und wird immer kuuuuhlaaaaaa ^^
> Achja und ich bin fast mit den Klausuren durch -----> wann ist BETATIME?
> 
> PS: obs irgenwann mal so wird wie Outerra Engine vorgestellt: Mehr Open World geht nicht -


Ohne das Können von unserem Geschätzten User AMD zu schmälern:
Das letzte mal wo ein Renderer von einem einzelnen Programmierer gemacht wurde und etwas "Professionelles" war, war in den 90ern. Heutzutage sitzen an den Engines schnell mal 10+ Leute.


----------



## LordCama (6. März 2012)

Es geht ja auch nicht darum die crytech engin zu schlagen 
Wen die engin etwa ein mit tes III vergleichbares bild liefert ist das schon sehr gut.


----------



## AMD (6. März 2012)

Sicher das bei Outerra wirklich nur ein Programmierer beteiligt ist? Im Forum haben da zumindest mehr Leute das sagen ^^
Finde aber nicht wirklich eine Übersicht wo mal was vom Developer steht.

Back2Topic:
Hab nochmal ein kleines Video gemacht wo ich eine Art Plattform hinstelle + Leitern.
OpenGL - GameEngine - Map an Object - YouTube

(Konnte zum Ende hin nicht sofort die 1. Leiter raufsteigen, da ich vor kurzem was an der Kollision verändert habe - ist nun aber gefixxt).


Ps. Falls ihr irgendwelche tollen 3D Modelle habt (egal ob Waffen, Pflanzen, Tisch) und ihr auch die Permission habt, dann immer her damit! Würde mich freuen über ein paar hübsche Modelle, da aufwenidge Modelle auch Zeit kosten


----------



## fadade (7. März 2012)

Was für eine API verwendet Outerra denn überhaupt?
Schaut an sich aber schon relativ gut aus! (unabhängig davon, ob das nun nur einer gemacht hat)

Das mit der Leiter sah schon komisch aus 
Bezog sich das mit der Kollision irgendwie auf die Richtung? Oder dass der SPieler nicht an den seitenstangen hochklettern kann? ^^ *vermut*

Free-Models gibt es eigentlich zu Hauf im Internet 


Und mal wieder ne Frage, benutzt du schon Normal-Maps?


----------



## bingo88 (7. März 2012)

Laut Website nutzt Outerra OpenGL 3.3.


----------



## fadade (7. März 2012)

Ach da unten steht das ....
Wie bekommen die es bloß hin, dass das Terrain so detailreich ist?


----------



## AMD (7. März 2012)

fadade schrieb:


> Das mit der Leiter sah schon komisch aus
> Bezog sich das mit der Kollision irgendwie auf die Richtung? Oder dass der SPieler nicht an den seitenstangen hochklettern kann? ^^ *vermut*
> 
> Free-Models gibt es eigentlich zu Hauf im Internet
> ...


 
Weder noch, ist aber gerade etwas zu kompliziert um das in ein paar Sätzen zu erklären (zumal es gleich essen gibt ).
Free-Models schon aber oft sind keine Texturen dabei - oder kannst du mir was empfehlen wo beides enthalten ist? 
Noch nicht.


----------



## fadade (8. März 2012)

Und vor allem da es OpenGL ist, wovon ich keine Ahnung habe 

Jo, die Seiten kann ich nochmal suchen (irgendwo müsste ich die Lesezeichen noch haben^^)
Wenn du auch *.nif/dds/(etwas exotisschere Files) lesen kannst, dann könnte ich dir auch einige DirectX-Sample-Models geben


----------



## AMD (8. März 2012)

^^
dds/nif kann ich nicht lesen (wobei ich nif garnicht kenne), aber dds könnte ich zumindest ohne weiteres konvertieren


----------



## AMD (8. März 2012)

Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Airboume (8. März 2012)

Das 2te Pic sieht ja schon mal anständig aus. 
Nur weiter so


----------



## fadade (8. März 2012)

Hast du keinen Hard-/Softwaretesselierer? Dann würde das 2. Pic *noch anständiger* aussehen 
Aber trotzdem schonmal nicht schlecht die Dinger! Wo gefunden?
Weil ikke finde die Lesezeichendatei bei mir nichtmehr ... kein Wunder bei meinem Filemanagement 

Und dude, mal eine Frage: Hast du schon Multithreading drin? Weil ich  stehe bei mir jetzt so, dass ich das meistbenötigte erstmal drinnen habe  und es geht (zumindest JETZ GERADE BEI MIR xD). Nun eben die Frage, ob  man Threading schon so früh wie möglich einbauen sollte, oder ob es da  besser ist das später einfach noch "drüberzulegen" ... denn ich könnte  mir schon vorstellen, dass der Synchronisierungsauffwand ziemlich hoch  ist!
_(Wobei KingofKingzZ hatte ja auch schon was bei sich .. wo ist der eigentlich ?  )_


----------



## AMD (8. März 2012)

Öhm nein?!  Mit Tesselation habe ich mich auch noch nicht wirklich befasst.
Gefunden bei http://archive3d.net/

Am besten ist es wohl, seinen Code gleich zu begin auf Multithreading auszulegen. Wenn der Code dann immer größer und größer wird und dann eine Umstellung erfolgt, dann macht das einfach mal mehr Arbeit als wenn man es quasi gleich draus auslegt. Sollte Sinn machen?! 
Wo er ist weiss ich nicht, hatte glaube ich nicht mehr ganz so viel Zeit?! ^^


----------



## bingo88 (8. März 2012)

AMD schrieb:


> Am besten ist es wohl, seinen Code gleich zu begin auf Multithreading auszulegen. Wenn der Code dann immer größer und größer wird und dann eine Umstellung erfolgt, dann macht das einfach mal mehr Arbeit als wenn man es quasi gleich draus auslegt. Sollte Sinn machen?!


 Nachträglich MT-Support einzubauen kann sehr aufwendig werden. Man sollte das daher bereits beim Design berücksichtigen.


----------



## fadade (9. März 2012)

@AMD: *.3DS kann ich nicht lesen (das habe ich noch nicht implementiert, da ich die sachen auch händisch mache..) Gibts da bei OpenGL zufällig eine vorgefertigte Methode? Weil bei DX (11.x) muss man haufenweise selber machen -.-

Zumindest eine kleine Software-Tesselation kannst du ja einbauen, das ist grob in ~30Min gemacht. 


@bingo88: jup, vor allem, wenn man nicht genau weiß, wohin die Calls denn nun laufen und was sie noch alles machen^^ Ich habs neulich geschafft, dass ich in der Update-Methode irgendwie einen Render-Call hatte und dann habe ich die Szene immer 2x gerendert 
Ich weiß nur wirklich nicht, was besser ist ... wenn man z.B. im Nachhinein noch ein Subsystem implementiert dann muss man da ggf. auch das ganze Threading beachten, während man ohne MT erstmal einfach nur machen kan ....


----------



## AMD (9. März 2012)

Also OpenGL hat kein eigenes Format... OpenGL hat eig. garnix 
Daher habe ich auch erstmal das *.obj Format genommen! Kann zwar nicht so viel aber immerhin einfach mit zu arbeiten...
Ich konvertiere mit die Modelle in der Regel mit 3d Studio Max.

Nochmal zu Thema Multi-Threading: Ich hatte ja auch mal die Kollisionserkennung ausgelagert, allerdings waren die Sachen dann asnycron zum anderen Thread, wodurch viele Fehler auftraten... leider alles nicht so leicht :/


----------



## bingo88 (9. März 2012)

@fadade Wenn sowohl Spieleprogrammierung als auch MT für dich neu ist, würde ich auf letzteres erst einmal verzichten, bis du mit der Spieleprogrammierung einigermaßen klar kommst. MT kann wirklich zu kaum findbaren Fehlern (und damit ner Menge Frustration) führen. Ich durfte schon mit Threads, OpenMP und MPI im HPC-Umfeld arbeiten, daher kenne ich solche Fehler aus eigener Erfahrung


----------



## fadade (9. März 2012)

AMD schrieb:


> ...


 
Naja gut, ich würde trotzdem mal sagen, das selbs diese einfachen Formate für Hobbyprojekte ausreichen (nur wenn man dann noch Xtreme-Animations etc. einbaut, dann wird es wahrscheinlich komfortabler auf ein anderes Format zu wechseln). Das mit der Kolisionserkennung habe ich mir auch schon angesehen, ist momentan bei mir (auch?) das performance-kritischste. 
Laut meiner Kenntnis müsste es aber schon schneller sein, wenn man für die Kollisionsberechnung immer einen neuen Thread startet und der Hauptthread auf den wartet, als dass man die Collision-Funktion einfach so aufruft. Und wenn du weißt, was deine Kollisionen alles für Werte manipulieren, dann kannst du in der Zeit ja mal Audio-Kram/Clean-Up/... machen (für Kollisionssounds müsste dann natürlich nach der Kollisionsberechnung nochmal im Audiosystem entsprechend ein Buffer befüllt werden o.ä.)



bingo88 schrieb:


> @fadade Wenn sowohl Spieleprogrammierung als auch MT für dich neu ist, würde ich auf letzteres erst einmal verzichten, bis du mit der Spieleprogrammierung einigermaßen klar kommst. MT kann wirklich zu kaum findbaren Fehlern (und damit ner Menge Frustration) führen. Ich durfte schon mit Threads, OpenMP und MPI im HPC-Umfeld arbeiten, daher kenne ich solche Fehler aus eigener Erfahrung



Mal OT: Kann es eigentlich noch passieren, dass zwei Threads gleichzeitig auf einen Speicherbereich zugreifen? Und wenn ja, was passiert dann? (einer liest, einer schreibt; beide schreiben; beide lesen ...) Kommt dann einfach nur eine Exception?

Und der bingo hat ein *Bingo* erzielt 
Jop, also 3D-Programmierung hab ich noch nie gemacht, und Threading früher mal (ein paar Threads erstellen, die irgendwelche Devices in Unix "betreuen" und eine Kommunikationsmöglichkeit bieten). Wobei jetzt so Libraryfunktionen (Tesselation, Meshtests, ...) lasse ich schon asynchron laufen; wobei bei den Sachen ist das ja auch noch einfach^^
ich denke mal (für mich) wäre es dann auch klüger später wenn allet geht einfach mal etwas in einen Tread zu stecken und dann guggn was passiert


----------



## bingo88 (9. März 2012)

fadade schrieb:


> Mal OT: Kann es eigentlich noch passieren, dass zwei Threads gleichzeitig auf einen Speicherbereich zugreifen? Und wenn ja, was passiert dann? (einer liest, einer schreibt; beide schreiben; beide lesen ...) Kommt dann einfach nur eine Exception?


 Das kann immer noch passieren. Ob und wie so etwas gewünscht ist, hängt von der Anwendung ab. Und eine Exception gibt es da keineswegs, das ist ja grad das Nette bei Threads. In 10.000 Fällen funktionierts und in einem nicht 

Beispiel: Zwei Threads (A, B) greifen gemeinsam auf einen int zu. Wenn beide Threads nur lesend zugreifen, kann relativ wenig passieren (Ausnahme: Thread B *muss* nach Thread A lesen, etc.). Problematisch wird es z. B. bei sogenannten Read-Modify-Write Operationen, da diese nicht atomar (atomar ~ "nicht unterbrechbar") sind. Thread A liest die Variable und erhöht sie um 1. Bevor A den Wert zurück in den Speicher schreiben kann, wird der Programmfluss aber an Thread B übergeben (A wird unterbrochen). Dieser liest den aktuellen Wert (nicht um 1 erhöht, A hat ja noch nicht gespeichert!) und erhöht ihn ebenfalls um 1. B speichert den Wert und A ist wieder an der Reihe. A hat aber nicht mitbekommen, dass B ebenfalls den Wert erhöht hat und speichert seinen eigenen Wert. Anstatt also die Variable um 2 zu erhöhen, wurde nur einmal inkrementiert. Dies bezeichnet man als "Lost Update". Und glaub mir, bei sowas fliegt keine Exception 

Man darf auch keinerlei Annahmen treffen, welcher Thread wann und wie ausgeführt wird. Das regelt nämlich das Betriebssystem. Du als Entwickler musst daher dafür sorgen, dass dein Programm mit solchen Sachen klar kommt (Vermeiden von Deadlocks, Race conditions, nichtatomaren RMW-Operationen, etc.). Dazu gibt es Konzepte zur THreadsynchronisierung: Semaphore, Barrieren, Locks, etc. Die muss man aber auch gut einsetzen können, da man ansonsten viel der durch MT gewonnenen Performance wieder verschenkt. Ich habe schon COde gesehen, der wurde durchs Synchronisieren wieder seriell


----------



## fadade (10. März 2012)

Das klingt jetzt sehr ermutigend 

Macht es eigentlich Sinn dann auch z.B. Matrixmultiplikationen und so zu "threaden"? Sprich Thread1 rechnet erste spalte aus, der nächste die 2. usw. oder ist da der Zeitaufwand für die Threadumgebung zu hoch?
Weil gerade, dort wo man weiß, dass nur in die neue Matrix nur  *eindeutig* geschrieben wird und aus den alten nur gelesen wird, könnte man MT ja ansetzen ....


----------



## bingo88 (10. März 2012)

Naja, bei Spielen kommen 4x4 Matrizen zum Einsatz, da lohnt es sich nicht wirklich, das mit Threads zu parallelisieren (Verwaltungsaufwand >> Nutzen). Was eher Sinn machen könnte, ist z. B. das Multiplizieren mit einer Menge Vektoren zu parallelisieren. Das macht ja auch eine Grafikkarte, beispielsweise bei der Transformation von Objekt- in Weltkoordinaten.

Grundsätzlich ist Matrixmultiplikation schon ein Bereich, wo viel parallelisiert wird. Allerdings sind die Matrizen dann auch wesentlich größer (bspw. beim Lösen linearer Gleichungssysteme) 

Ehrlich gesagt habe ich bisher MT nur im Zusammenhang mit Subsystemen gesehen, bspw. Physik, Netzwerk oder Sound. Vieles, was mit Objektdaten zu tun hat, lässt sich halt über Shader viel einfacher realisieren. GPUs haben auch ein wesentlich besseres Thread-Management, oftmals gibt es da spezielle Bereiche im Chip für. Normales MT wird hingegen zum großen Teil vom OS verwaltet (deswegen benötigt bspw. AMDs Bulldozer auch einen Patch für Windows 7).


----------



## Mashed (10. März 2012)

Wie schon geschrieben, in 3D-Spielen sind die Matrizen oft 4x4 groß. Parallelisieren ist da nur bei einer großen Anzahl an unabhängigen Berechnungen sinnvoll. Einzelne Matrix/Vektor-Operationen lassen sich aber gut mit den Vektor-Erweiterungen der CPU beschleunigen(SSE, AVX).


----------



## fadade (10. März 2012)

Okay, wenn ich wüsste, wie *das* geht, würde ich es auch mal probieren  
Aber aber sonst behalte ich erstmal mein "Durcheinander-Threading"-Konzept bei

Vielleicht hat der TE ja auch schon MT eingebaut und teilt dies mit ^^


----------



## Mashed (11. März 2012)

fadade schrieb:


> Okay, wenn ich wüsste, wie *das* geht, würde ich es auch mal probieren


Geht normalerweise nur mit kurzen Programmteilen in Assembler, wenn nicht der Compiler die Erweiterungen automatisch verwenden kann.


----------



## fadade (11. März 2012)

Hmmmm... nach ein bisschen Recherche scheint es mir so, als würde der Compiler für C# (bzw. Jit) das nicht nutzen.
Mit Mono solls gehen, aber noch etwas includen möchte ich eigentlich nicht^^
Allerdings konnte ich eben auch einfach durch die "Try-and-Error"-Methode wieder bisschen was optimieren


----------



## bingo88 (11. März 2012)

C# erzeugt auch keinen nativen Code wie C++ das beispielsweise macht. C# erzeugt Byte-Code, der von der .Net Runtime ausgeführt wird (macht Java auch). Da ist nix mit Assemblercode einstreuen


----------



## fadade (11. März 2012)

Jop, und deswegen wundert es mich auch, dass man mit Mono trotzdem irgendwie die Unterstützunng bekommt^^
(Habe ich bisher aber auch nicht probiert, also keine Ahnung ob das wirklich stimmt)

Nur mal ein anders Problem (auch @AMD )
Bei mir steigt die RAM-Nutzung praktisch in *jedem Fall *an, wobei ich nichts rendere, außer Buffer leeren und dann wieder mit der Farbe schwarz befüllen ...
Sobald ich z.B. das Fenster minimiere, anklicke, verschiebe, ..... jedes mögliche Event, löst irgendwie einen Anstieg um ~4-100kB aus.  Auch wenn ich nichts mache, so alle 10 sec. passiert das. Ist das immer so, oder muss das irgendwie an meinem Code liegen?


----------



## AMD (11. März 2012)

Das liegt wohl an deinem Code 
Hatte gerade mal eine Szene rendern lassen und es bleibt konstant bei 71,500 MB


----------



## fadade (11. März 2012)

hmmm, *seeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeehhhhhhhhhhhhhhhhhhhhhhhhhhhhrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr* merkwürdig!


```
// Nicht auf Keyevents reagieren
using (var factory = _SwapChain.GetParent<DXGI.Factory>())
  factory.SetWindowAssociation(_MainRenderForm.Handle, [U][B]DXGI.WindowAssociationFlags.IgnoreAll[/B][/U]);

//Render Target View; wird später angebunden!
DX11.Texture2D backBufferTexture = DX11.Resource.FromSwapChain<DX11.Texture2D>(_SwapChain, 0);
_RenderTargetView = new DX11.RenderTargetView(_RenderDevice, backBufferTexture);
```

So, und wenn ich jetzt nur rendern lasse, dann steigt es alle ~10 sec immer noch um etwa 4kB. und wenn ich nebenbei noch Tasten drücke (die ich ja eigentlich ignoriere), dann steigt es sehr schnell an. Also Taste gedrückt halten und ich brauche pro Sekunde locker 0,5MB mehr RAM, ohne dass ich überhaupt ein Keyboarddevice erstellt habe 
(Werden vielleicht irgendwo die Eventargs gespeichert? Aber die müssten dann ja auch irgendwie wieder released werden ... automatisch?!)
Wahrscheinlich sollte ich dazu mal mit den VS-Analysetools arbeiten können, aber die zeigen mir alles mögliche an 

Naja gut, wenns bei euch klappt, dann ist das ja wenigstens schonmal was, C# ist eben seeehr anspruchsvoll ... in dem Fall  (bzw. in meinem Fall   )


----------



## bingo88 (11. März 2012)

Ich würde jetzt mal spontan auf das new DX11.RenderTarget-Dingens tippen. Wenn das bei jedem Frame gemacht wird, wird natürlich in jedme Frame auch ein neues Objekt erzeugt. C# hat zwar einen Garbage Collector, der räumt aber auch nur ab und an mal auf (wg. Performance). Wenn möglich vielleicht solche Aufrufe vermeiden und stattdessen in einer Variable speichern?


----------



## fadade (11. März 2012)

upps, also der Code wird nur einmal beim Laden ausgeführt; aber sonst wärs klar 

Da ich jetzt die komplette Update-methode blockiert habe und er nur ROOT rendert, kann ich genau sagen, dass er nur folgendes ausführt:

```
public void RenderRoot()
{
	//Setting Effectparameters
	if (_mRootEffect == null)
	{
		InitRenderRootData();
	}
[I][/I]
	// configure the Input Assembler and Layouts
	_DevContext.InputAssembler.InputLayout = _mRootInpLayout;
	_DevContext.InputAssembler.PrimitiveTopology = DX11.PrimitiveTopology.TriangleList;
	_DevContext.InputAssembler.SetVertexBuffers(0, new DX11.VertexBufferBinding(_mRootVertexBuffer, Marshal.SizeOf(typeof(VERTEXPOSITIONCOLOR)), 0));
	_DevContext.InputAssembler.SetIndexBuffer(_mRootIndexBuffer, DXGI.Format.R32_UInt, 0);

	_mRootEffectMatrix.SetMatrix(Matrix.Identity);
	_mRootEffectPass.Apply(_DevContext);
	_DevContext.DrawIndexed(9, 0, 0);
}
```

Dort ist zwar auch das _new DX11.VertexBufferBinding_, aber das kann nicht Disposed werden und auch wenn ich es auslagere, ändert es nichts. (und davor und danach wird eben noch das bisherige bild gelöscht, bzw. das aktuelle gesetzt). Also ich muss jetzt aber mal sagen, dass selbst wenn ich *GAR NICHTS MACHE*, also wirklich *GAR NICHTS*, dass die RAM-Nutzung trotzdem ansteigt, wenn ich irgendwie das Fenster verschiebe, anklicke, Tasten drücke ....  (Es pendelt sich auch nicht ein, und nix). 

Naja ich denke mal dazu ist .NET gemacht worden^^
Aber ich möchte diesen Thread auch nicht zu sehr damit zulümmelnl. Vielleicht findet sich im Inet noch irgendwas dazu ...........


----------



## AMD (11. März 2012)

Da wir ja auch gerade beim Thema Multithreading waren: Die Kollisionsberechnung erfolgt nur in einem anderen Thread - mit sehr gutem Ergebnis 
Habe die Sache auch auf Performance getestet, da die Kollisionsberechnung vorher ordentlich Leistung gezogen hat.

1 Thread:
Kollision aus: 1035 fps
Kollision an: 915 fps

2 Threads:
Kollision aus: 1040 fps
Kollision an: 993 fps

Die Steigung bei Kollision aus entsteht durch andere Berechnung im Thread (z.B. Kamerasteuerung). Aber man sieht schon was so ein Thread bringt!


----------



## AMD (13. März 2012)

Gibt bald neues vom Wasser - ein hoch auf die BumpMaps


----------



## AMD (23. März 2012)

Hey,

Hat hier von euch jemand eine GTX 4XX oder GTX 5XX (gerne auch schon die GTX 680  ) + icq? Ich würde gerne mal jemanden etwas schicken, damit mir die Person sagt ob es auf einer Nvidia Karte läuft. Habe hier mit einem GLSL Shader Probleme mit AMD/ATI Hardware.


----------



## KAEPS133 (23. März 2012)

Sehr geil!
Hab dir mal ne Nachricht geschrieben.


----------



## AMD (25. März 2012)

Die Schatten werden besser und besser 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Airboume (25. März 2012)

die sehen ja schon richtig fett aus. 
und die fps werden auch immer weniger..?


----------



## AMD (25. März 2012)

Ja die Leistung wird noch optimiert, aktuell ist die wirklich mies ^^


----------



## Airboume (25. März 2012)

Och, solang die fps über 60 bleiben... ;D
Aber tu, was du tun musst.


----------



## AMD (25. März 2012)

Naja, bisschen optimieren muss man 
Meine HD 5870 ist nun auch nicht gerade schlapp und so viel Hardwarehunger soll die Engine nicht haben ^^
Aber ich werde ohnehin Einstellungsmöglichkeiten bieten, wo man sich die Grafik selber festlegen kann.


----------



## Airboume (25. März 2012)

9500gt ftw! 
aber solang die engine auf meiner möhre mit niedrigsten settings mit rund 30fps läuft ist das i.O.


----------



## AMD (30. März 2012)

Habe mich mal an God Rays versucht, mit folgendem Ergebnis:
OpenGL - GameEngine - God Rays - YouTube

Die Szene ist im Gesamten noch zu hell - wie in der Videobeschreibung schon erwähnt - aber es veranschaulicht in dem Moment schonmal gut die God Rays! Für den Anfang sieht es doch schon ordentlich aus wie ich finde


----------



## Löschzwerg (31. März 2012)

Sieht eigentlich verdammt geil aus  Und mit der Helligkeit geizen etliche aktuelle Games auch nicht gerade wenig ^^


----------



## AMD (1. April 2012)

Erstmal danke 
Und genau die Helligkeit mag ich überhaupt nicht! Ob das nun aktuelle Games sind oder auch dieser ENB-Series Mod. Für mich sehen viele Szenen einfach viel zu hell aus und das muss eben gut abgestimmt werden.

Ich kann auch schonmal einen weiteren (kleinen) Erfolg vermelden. Die God Rays arbeiten nun wesentlich besser, die Szene wird nicht mehr so stark überblendet und auch das zusammenspiel mit den Shadows sieht ordentlich aus.
Die Shader sind in dem Bereich auch schon so gut wie fertig - höchstens noch ein bisschen FeinTuning in Sachen Optik.
Morgen werd ich mal etwas den C++ Code aufräumen, da dort aktuell in einigen Bereichen nicht wirklich Ordnung ist.


----------



## LordCama (1. April 2012)

gute arbeit 
ich habe es glaube ich oben schon mal erwähnt: DEMO!!! am besten jetzt gleich  
ne, las dir zeit, code aufräumen etc. kommst aber schön voran.


----------



## AMD (1. April 2012)

Hehe danke 
Ach das mit der Demo ist so eine Sache. Ich will ja gerne mal was veröffentlicht aber ich will ja auch zufrieden sein und man findet halt doch immer Dinge die man verbessern will. Letztendlich hab ich aber auch kein Zeitdruck, bleibt ja schließlich ein Hobby.


----------



## AMD (2. April 2012)

Der Editor wurde nun auch wieder etwas erweitert.
Es konnten ja schon länger Files auf der Map platziert werden aber mit einem Problem: Man konnte das nicht speichern 
Die Speicherfunktion wurde nun aber integriert


----------



## Robonator (2. April 2012)

Me gusta


----------



## fadade (2. April 2012)

Ich auch mal wieder, also die Rays sehen ja nicht schlecht aus  
Nur ich persönlich mag sie eigentlich GAR NICHT^^

1010000001100111100001010001101010101100111001011011010101010111110001010101000100101011110101010101010100111111111110101010010101100001101010101010110  DEEEMMOOOO! 
Sie muss ja nicht perfekt sein -> das ist nur ein Angebot von uns mögliche Fehler etc. aufzudecken


----------



## AMD (3. April 2012)

Du kannst per Configfile die God Rays auch deaktivieren.
So wie so ziemlich alles... egal ob Schatten, Wasserreflektion usw.


----------



## DarthLAX (3. April 2012)

hm...

das ganze erhält mal ein ABO  - bin interessiert (auch wenn ich um wirklich mitreden zu können wohl mich a) wieder in C++ einarbeiten müsste (mein letztes mal "programmieren" - d.h. ein bischen mit mit C++ "rum-hampeln" ist schon bischen her) und b) wohl noch nen haufen anderes zeugs lernen müsste, trotzdem werde ich das hier mal rein aus interesse mal verfolgen 

mfg LAX


----------



## mAlkAv (3. April 2012)

Hi, sehr interessant was du da bis jetzt ganz alleine auf die Beine gestellt hast. (PCF?) Soft Shadows und Cascaded Shadow Maps sehen wirklich gut aus. Hast du bei den CSMs immer noch eine 'Teilung' oder bereits mehrere?

Sind die Texturen und 3D Modelle von dir oder kostenlose Sachen aus dem Netz? Falls du Bedarf hast könnte ich in der Richtung ein paar Sachen beisteuern. Etwa auch um spezielle Szenen zu testen - z.B. Performance bei exzessivem Einsatz von Texturen mit Alpha Masken (-> Gras Meshes).


----------



## AMD (6. April 2012)

Es sind mehrere (2 ) - soll aber noch Variable einstellbar sein.
Ich habe die Modelle selber erstellt und die Texturen sind meist von cgtextures.com (denke es war .com).

Über Modelle mit Texturen usw. wäre ich sehr dankbar! Also wenn du mir das schicken würdest, wäre das sehr nett 


Zum Projekt:
Es gab einen großen Cut!
Ich habe leider Fehler in der Entwicklung gemacht, welche ich aktuell etwas bereue. Den Editor im selben Code zu entwickeln wie das Game ist dumm. Daher wurde der Editor komplett aus dem Code entfernt sowie auch ein paar andere Funktionen.
Der Editor wird dann halt schlichtweg getrennt entwickelt. Das macht's einfach um viele Dinge leichter und ich habe nicht Code-Parts beim normalen Spiel enthalten, die garnicht gebraucht werden.

Daher die kommenden Ziele:
- Noch ein paar andere Code-Parts entfernen
- Programm erstellen, womit die Grafiksettings festgelegt werden können (bereits in Arbeit)
- Verdammte Demo veröffentlichen. Die Update-Funktion ist ja bereits enthalten! Heißt also, dass es danach öfter updates geben wird und ich die Entwicklung langsam mal voran bringen werden. Irgendwann soll ja doch mal was bei raus kommen.

Dadurch wird es zu Begin natürlich keinen Editor geben, was aber halb so schlimm sein wird. Neue Infos dann demnächst.


----------



## Skysnake (7. April 2012)

Also ich lese auch schon lange mit, hab aber bisher einfach still verfolgt.

Ich finde wirklich SEHR klasse, was du hier machst, und kann halbwegs einschätzen, was das für eine Arbeit ist nach meiner Computergraphiks I Vorlesung. Das ist echt beeindruckend, was du hier ablieferst. 

Bzgl. Editor:
Hast du dir mal überlegt einfach per Defines deinen Code bzgl. Editor und game zu trennen? Zwei komplett getrennte Codes haben zwar auch etwas, aber machen halt auch wieder Arbeit.

Bzgl. Modelle:
Schau dir doch mal DAVID 3D Scanner an. Hab ich auf der CeBIT gesehen. Ist wirklich beeindruckend, und würde einem halt das Modellieren extrem geiler Objekte extrem einfach machen. Ist auch recht kostengünstig.

Zudem kannst du mit so einem tollen Projekt sicherlich mal mit denen in Kontakt treten


----------



## AMD (7. April 2012)

Danke 

Ich habe es noch nicht per Defines probiert aber irgendwie kommt man sich doch in die quere. Der höhere Aufwand sollte sich sogar in Grenzen halten. Ich werde zwar 2 unterschiedliche Projekte haben aber so Dinge wie Objektloader, den Code zum Rendern usw. kann ja in vielen Bereich 1:1 übernommen werden. Von daher sollte das schon klappen!

Dieser David 3D Scanner sieht echt geil aus  Aber kostengünstig?^^ Ich sehe das Starter-Kit für 399€ :S


----------



## Skysnake (7. April 2012)

Weißt du was solche Lösungen sonst kosten?  Häng mal noch ne 0 ran 

Und du hast falsch geschaut. Das ist das "Starter-Kit". Du kannst aber im Prinzip auch mit 0 € starten, wenn du ne Kamera, nen Laser und Wand hast.

Du kommst, wenn dus drauf anlegst und halt schon ne Kam hast mit rund 20-30€ wohl weg. Einfach nochmal genau lesen 

Btw. Falls du Fischer-Technik hast, kannste dir eine automatische Führung bauen um den Laser zu bewegen. Die *KOSTENLOSE *Software hat diese Möglichkeit schon vorgesehen, was bedeutet, dass du dann die Stellwand weglassen kannst


----------



## Mashed (7. April 2012)

Hast du daran gedacht, den Code in (shared) libraries zu organisieren? Das könnte dir bei der Trennung von Engine und Editor helfen.


----------



## AMD (8. April 2012)

@Skysnake: Okay, dann schau ich wohl nochmal genauer  Das wäre dann ja wirklich günstig.

@Mashed: Nicht wirklich. Ich habe mich halt noch nie mit so einem wirklich großen Projekt befasst. Klar hatte ich schon andere Dinge mit OpenGL gemacht oder auch Projekte ohne OpenGL aber so ein Umfang war dann doch eine neue Dimension! Würde ich jetzt nochmal von vorne beginen, würde ich viele Sachen definitiv anders gestalten^^ Aber sowas weiss man halt erst hinterher - lernt aber auch draus


----------



## Moritzz94 (8. April 2012)

Wow echt cooles Projekt! Respekt! 
Aber was wäre ein Shooter ohne die passenden Waffenmodelle? 
Da ich in meiner Freizeit gern 3D-Modelling betreibe hab ich mich entschlossen meine Modelle dir zu Verfügung zu stellen. Leider verträgt sich meine Renderengine (noch) nicht mit meiner neuen Grafikkarte deswegen kann ich dir grad nur hässliche Screenshots zeigen . Fertig ist das Modell noch nicht und in Sachen Texturen bin ich ne Niete 

http://s7.directupload.net/images/120408/9qqxsb5c.png

http://s7.directupload.net/images/120408/vchs69yr.png

//Edit: Wenn du noch andere Modelle brauchst, schreib mich an!

MfG


----------



## AMD (8. April 2012)

Sieht gut aus und Waffenmodelle nehme ich immer gerne entgegen 

Letztendlich bin ich ja auch auf andere Leute angewiesen. Es macht im großen und ganzen einfach zu viel Arbeit, alles alleine zu machen. Klar könnte ich mich hinsetzen und ne gute Map machen, da verstreichen dann allerdings Wochen und am Code passiert nix ^^
Im Idealfall soll sich ja mal sowas ähnliches wie für Skyrim der Steamworkshop entwickeln. User machen Maps/Mods und andere können diese Downloaden. Mit einem vernüftigen und übersichtlichen Mapeditor wäre das wohl auch garnicht so unwahrscheinlich. Es muss ja auch die Breite Masse verstehen, wie das funktioniert ^^


----------



## AMD (9. April 2012)

Mal wieder was neues 
OpenGL - GameEngine - Pick a weapon - YouTube


----------



## nikk o. laus (10. April 2012)

Wirklich super Arbeit!


----------



## AMD (10. April 2012)

Ich veröffentliche demnächst ein kleines Minispiel auf Basis der Engine.
Hier ein kleiner Hinweis, was das für ein Minispiel sein könnte:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## fac3l3ss (10. April 2012)

AMD schrieb:


> Ich veröffentliche demnächst ein kleines Minispiel auf Basis der Engine.
> Hier ein kleiner Hinweis, was das für ein Minispiel sein könnte:


 Ein kleines Rennspiel?
Ich freue mich jedenfalls schon! 


MfG
fac3l3ss


----------



## AMD (10. April 2012)

Gut geraten - okay war auch _sehr_ schwer


----------



## Löschzwerg (10. April 2012)

Hihi, ein Remake zu Stunts 4D Driving wäre cool


----------



## Koyote (11. April 2012)

Sehr cooles Projekt, bin ja mal gespannt, wie das kleine Testspiel wird


----------



## AMD (4. Mai 2012)

Hey,

Ich meld mich auch mal wieder. Ich hatte die letzten paar Wochen eig. kein Stück Zeit was zu machen, daher ist der Fortschritt auch sehr überschaubar und ob ich demnächst viel mehr Zeit habe kann man anzweifeln 

Gestern Abend und heute habe ich allerdings mal wieder was gemacht und mit gutem Ergebnis.
Der Shader vom ShadowMapping hatte noch einen kleinen Darstellungsfehler, welche behoben werden konnte. Außerdem konnte zeitgleich die Performance verbessert werden.


----------



## LordCama (8. Mai 2012)

AMD schrieb:


> Außerdem konnte zeitgleich die Performance verbessert werden.


 

so was hört man immer gern


----------



## AMD (14. Mai 2012)

Skybox Test:



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## tomrei (14. Mai 2012)

sieht super aus


----------



## Airboume (14. Mai 2012)

echt super!
aber was ist das fürn weiß/grauer strich zwischen 'himmel' und mauer?


----------



## AMD (14. Mai 2012)

Wasser 
Liegt allerdings daran, dass ich während der Aufnahme des Bildes, keinen (guten) Shader fürs Wasser drin hatte..


----------



## AMD (16. Mai 2012)

Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Bild 1 zeigt nochmal die Filterung der Schatten. Man sieht zwar, dass es nicht zu 100% scharf ist aber ich habe auch wirklich stark rangezoom - macht unter normalen Bedingungen einen sehr guten Eindruck.
Das verbessern der Schatten ist ohnehin irgendwie meine Hauptaufgabe (seit langem) 

Bild 2 zeigt nochmal die Skybox, Map, Schatten und so


----------



## ich111 (16. Mai 2012)

Einfach wahnsinn. Da fragt man sich dann erst wie bei COD eine solch lahme Engine arbeiten kann, wenn du das beinahe erreichst


----------



## mAlkAv (16. Mai 2012)

Sehr schön 
Wie hoch ist denn momentan die Schattenauflösung? Eventuell kannst du den Filterradius ja noch erhöhen bzw. den Kernel auch. Sind die Schatten eigentlich schon geblurrt?
Flimmern die Schatten doll, wenn sich die Lichtquelle(Sonne) bewegt?


----------



## Tiz92 (16. Mai 2012)

ich111 schrieb:


> Einfach wahnsinn. Da fragt man sich dann erst wie bei COD eine solch lahme Engine arbeiten kann, wenn du das beinahe erreichst


 
Du hast sowas von Recht!!!!!!!!!!!!!

Bald macht AMD der Frostbite Engine Konkurrenz 

Extrem tolles Projekt.  Hut ab! Und viel erfolg. Ich würde so ein kleines Spiel auch kaufen für wenig Geld wenn es gut gemacht ist. Einfach um solche Leute zu unterstützen.


----------



## AMD (16. Mai 2012)

Danke für das viele Lob! 

@mAlkAv:
Die Auflösung bei der Szene oben beträgt 2048x2048 - ist also noch in einem recht normalen Bereich.
Gefiltert wird im Shader mit einem 16 pixels kernel (dithered). Ich hatte auch schon normales PCF drin (bis 64fach), was zwar eine sehr gute Qualität erzeugt aber die Leistung bricht dann doch ziemlich ein.
Daher erstmal die dithered Variante. Aber ich werde es definitiv optinal anbieten, was man nutzen will. Wenn der PC genug Leistung hergibt, dann kann man sich natürlich gerne die bessere Qualität einstellen.

Die Schatten flimmern nicht mehr (oder halt sehr wenig). Das Problem hatte ich zwar aber da hab ich mir was gegen einfallen lassen 


@Tiz92: Naja, bis zur FrostBite ist es wohl noch ein Stück 
Aber Spiele würde ich generell kostenlos veröffentlichen! Da mach ich mir lieber irgendwo einen Donate Button hin, damit es jeder selbst entscheiden kann^^


----------



## ich111 (16. Mai 2012)

Das ist mal ne Einstellung von der sich mancher Entwickler/Publisher mal ne Scheibe abschneiden sollte


----------



## fac3l3ss (16. Mai 2012)

Ich melde mich zwar nicht häufig, aber ich lese hier immmer gerne mit!
Das, was du machst ist evtl nicht einmalig aber sehr selten und schon jetzt solltest du auf dein Programm stolz sein! 


MfG
fac3l3ss


----------



## AMD (18. Mai 2012)

Nochmal danke 

Ich habe nun das Sonnenlicht auf eine Orthogonale Projektion umgestellt. Dadurch wird das Licht quasi parallel ausgestrahlt (so wie es sein soll) und habe damit keinen Qualitätsverlust, wenn sich Objekte weiter von der Sonne entfernen. Und da die Sonne in Spielen als unendlich weit entfernt betrachtet werden kann, ist das wirklich gut 
Ich muss zwar noch ein wenig am shader basteln aber das Ergebnis lässt sich schon sehen - besser Qualität ist immer gut (und das bei keinem größeren Performanceaufwand).


----------



## AMD (18. Mai 2012)

Nochmal ich 

Der Shader ist fertig und der Code auch und man, ich bin echt zufrieden...
Ich spiele zurzeit Arma II (DayZ Mod - sehr zu empfehlen) und wenn ich da so die Schatten von denen mit meinen Vergleiche, denk ich mir schon "haha"  Das musste einfach mal gesagt werden 
Gibt bald neues Material


----------



## neflE (18. Mai 2012)

Echt Super was du hier ablieferst! Die Schatten sind echt erste Sahne, wenn ich so nach Skyrim schau ^^

Naja weiter so, ich guck weite zu, aber sagen kann ich dazu herzlich wenig, da ich mich damit nicht auskenne 

Ich gucke und lerne ^^


----------



## AMD (21. Mai 2012)

Hab mal ein kleines System für Türen gebaut.
Damit lassen sich relativ einfach Türen gestalten aber auch Tore usw... Man könnte das Objekt also auch ohne weiteres nach oben auffahren lassen.

Nochmal eine kleine Veranschaulichung:
OpenGL - GameEngine - Door - YouTube

Nicht wirklich spektakulär aber immerhin


----------



## Airboume (21. Mai 2012)

Ohmahn 
Das sieht ja auch mal gut aus.
Schätze daran könnt ich mir auch Stunden vertreiben. xD
~auf~zu~auf~zu~


----------



## ferb (22. Mai 2012)

Du kannst wirklich stolz auf dich sein solch etwas alleine auf die Beine zu stellen, das sieht wirklich Super aus und da können sich so einige Entwicklerstudios mal ein Beispiel nehmen. Ich will garnicht wissen wie Zeitintensiv das ganze ist. Ich lerne gerade die Programmiersprache c++ und ich denke erst wenn man einmal einen kleinen Einblick in die Materie bekommen hat weis man wirklich was du hier leistest. Mich würde interessieren ob du die Engine in c++ schreibst und welche Entwicklungsumgebung du verwendest.
Mal sehen wie lange ich noch benötige um von meinen derzeitigen Konsolen Anwendungen zu solch einem Projekt zu kommen :0 
Freue mich schon auf die nächste Testphase auch wenn ich bezweifele das das auf meiner hd4350 läuft


----------



## AMD (23. Mai 2012)

Danke^^

Ich schreibe die Engine und nutze dafür Visual Studio 2005 - ich konnte mich mit den neueren Versionen nie so wirklich anfreunden, vorallem 2008...
Aber das sieht wohl jeder anders ^^
Es gehört natürlich einiges an Ehrgeiz dazu aber wenn man sich wirklich dahinter klemmt, dann ist das alles keine Zauberei ^^


----------



## DarkMo (30. Mai 2012)

ah, genau so einen thread hab ich gerade gesucht. arbeite mich auch "gerade" neben der uni ein bissl privat in open gl ein. nen tga loader hab ich nu scho, aber der selbst gebaute object loader steckt in den kinderschuhen (ogl 1.0 kompatibel war er ja, aber ich wills halt modern haben ^^).

jedenfalls stecke ich grad vor folgener verständnislücke:
die ganzen buffer objects werden ja mit arrays gefüttert. also nen dreieck wird mit 9 werten erzeugt (3 koordinaten xyz für jeden der 3 punkte). soweit so gut - aber was is nu mit ner dynamischen geschichte? je nach geladenem objekt hat das ja unterschiedlich viele polygone, punkte, farben, texcoords was auch immer. aber einfach ein array[] nimmt er natürlich nich, da er ja wissen muss, wieviel speicher er allokieren muss. sprich: da muss dann schon ein array[9] her für ein dreieck zum bsp. bei 2en sins aber eben scho mehr usw. wie mach ich das grundsätzlich? mir fehlt da völlig der ansatz 

ich hab auch scho mit listen überlegt, aber ein array[variable] (variable zum bsp dann =liste.length) geht ja au ned, da die listenlänge zur object-erzeugung undefiniert is bzw eben variabel is. geht halt nur array[constant] :/ aber wie kann ich denn dann überhaupt dynamisch ein array dynamisch erstellen, um es als vao/vbo an die graka zu übergeben?

ein kleiner denkanstoß oder hinweis zur verfahrensweise würde mir sehr helfen


----------



## Skysnake (31. Mai 2012)

Ist hier der falsche Thread, mach doch nen eigenen dafür auf.

Als kleiner "Tip" du musst ihm halt einfach sagen, wieviele Dreiecke er bekommt 

Das speicherste halt irgendwo in ner Variablen und gut ist.


----------



## joffal (31. Mai 2012)

hi ich auch mal wieder.
AMD, läuft es inzwischen auf Radeon-Karten? und vllt auch auf Mobilen GPUs?
Weil ich habe gerade das Problem, dass mein OpenGL-Code auf normalen Radeons Grafikfehler hat (sollte ich noch in den Griff kriegen) und auf Mobilen GPUs gar nicht läuft!
-> Das kuriose: Wenn ich aufm Lappi ganz normal die Anwendung starte, wird die Intel-IGP genutzt -> läuft wunderbar. Starte ich es aber explizit mit der mobilen NV/AMD-GPU -> "Appcrash" wobei ich bisher noch nicht feststellen konnte warum 

@DarkMo: Kommt aufs Dateiformat an. *.X-Files haben immer eine VOrgabe, wieviele Daten jetzt kommen. in *.obj-Files kannst du ja alles erstmal einlesen, in temporären Arrays/listen/... auswerten und sortieren/formatieren und DANN guggn, was du hast


----------



## Dark Messiah (31. Mai 2012)

hab mich jetzt auch mal intensiv hier gelesen, wirklich klasse was du da erarbeitet hast! weiter so, ich bin gespannt was da noch draus wird


----------



## AMD (4. Juni 2012)

joffal schrieb:


> hi ich auch mal wieder.
> AMD, läuft es inzwischen auf Radeon-Karten? und vllt auch auf Mobilen GPUs?


 
Es läuft überall. Ob normaler Radeon, nvidia oder APU. Hatte aber diesbezüglich noch keine Probleme?!
Lediglich ein Shader lief mal nur auf Nvidia Karten und nicht AMD aber das war nur eine kleinigkeit.


----------



## christian.pitt (15. Juni 2012)

eine frage: wieviel zeilen code sind das schon?


----------



## AMD (17. Juni 2012)

Knapp 3000 (ohne die Shader für z.B. die Filterung der Schatten, das wären dann nochmal paar mehr)


----------



## Skysnake (17. Juni 2012)

What? 

Nur 3k Zeilen Code  Dann musst du aber ziemlich sauberen Code geschrieben haben, der verdammt modular ist. Ich hab für ne kleine Demo schon 5k Zeilen Code hin geknallt.


----------



## AMD (18. Juni 2012)

Jop, wenig Code und möglichst viel erreichen, das ist mir hoch und heilig ^^


----------



## Skysnake (18. Juni 2012)

Also dann sag ich mal GZ. Da musst du dir echt sehr viele Gedanken gemacht haben und auch seh diszipliniert gearbeitet haben. Allein mein primitiv bmp Reader hat durch die ganzen Deklarationen halt schon 300-400 Zeilen Code


----------



## AMD (20. Juni 2012)

Danke ^^
Also mein BMP Reader hat auch ca. 300 Zeilen aber dort wird schon einiges mit verwaltet... naja schwer zu erklären 

Habe zurzeit aber auch kaum Zeit zum coden. Aktuell muss einiges für dich Uni gemacht werden. Ob das nun nervige Protokolle sind oder eben schon für Klausuren lernen 
Quäle mich zurzeit auch mit irgendeinem komischen Bug rum... Ich will in einem File ein Header einbinden aber VisualStudio sagt mir, den Header gibt es nicht, öffne ich ein anderes Projekt: Läuft sofort... 

Edit// Fixxed, std:: fail >_>


----------



## shady1080 (2. August 2012)

in welcher umgebung programmiert ihr eigentlich alle? VS2012 auf windows?

EDIT: merke grad dass hier schon länger nichts los ist, wie gehts voran? sind ja ferien


----------



## ferb (2. August 2012)

Ja war schon ewig nichts mehr hier vermutlich das altbekannte Sommerloch, würde michl aber trotzdem würde ich mich über ne Demo an der Lanparty in 4Wochen freuen


----------



## Crymes (2. August 2012)

Ich schreib alle sinm Visual Studio (C++ und C#), da gibts die verdammt praktische Funktion IntelliSense, die rückt den Code ein und überprüft ihn größtenteils während des Schreibens, d macht man weniger Leichtsinnsfehler. 
Hoffe mal das VS 2012 bald kommt, dann kann ich endlich Megtro-Apps schreiben


----------



## JimSim (3. August 2012)

Gibt nichts besseres als nen einfach Editor. Notepad++ ist da mein Liebling, die Highlights abhängig von der Programmiersprache sind zugegebener Maßen ganz praktisch. Ich rege mich immer tierisch auf wenn mir visual studio den ganzen code automatisch hinschreibt und ich dabei allerdings weiter schreibe und am ende irgendein scheiß da steht... Ansonsten ist aber Eclipse schon das Programm der Wahl, besonders wenn Projekte komplexer werden, und man im Team arbeitet.

@Crymes
Für Metro-Apps ist doch VS 2010 Express zusammen mit Expression doch schon ganz brauchbar. Worauf wartest du bei VS 2012?


----------



## Crymes (3. August 2012)

Ich kann mit VS 2010 Metro Apps schreiben?  Hast du einen Link, wo ich mir die Erweiterung herunterladen kann?


----------



## shady1080 (3. August 2012)

JimSim schrieb:


> Gibt nichts besseres als nen einfach Editor. Notepad++ ist da mein Liebling, die Highlights abhängig von der Programmiersprache sind zugegebener Maßen ganz praktisch. Ich rege mich immer tierisch auf wenn mir visual studio den ganzen code automatisch hinschreibt und ich dabei allerdings weiter schreibe und am ende irgendein scheiß da steht... Ansonsten ist aber Eclipse schon das Programm der Wahl, besonders wenn Projekte komplexer werden, und man im Team arbeitet.
> 
> @Crymes
> Für Metro-Apps ist doch VS 2010 Express zusammen mit Expression doch schon ganz brauchbar. Worauf wartest du bei VS 2012?


 
Naja du musst aber schon zugeben, dass das ne Gewohnheitssache ist. Nur schon die ganzen Debugging-Optionen die dir bei nem Notepad fehlen...
Wir haben die ersten beiden Semester C# in VS und die restlichen Java in Eclipse programmiert, und die beiden IDEs geben sich eigentlich wenig.


----------



## JimSim (3. August 2012)

@Crymes
Ah... mist, hab gerade Metro-Apps mit Windows Phone Apps verwechselt... Der Aufbau ist aber der gleiche. Silverlight für die GUI und C++ für die Logik... Solange du keine Smartphone-spezifischen Abfragen rein baust, sollte dein Windows-Phone Quelltext ebenso für Metro kompilieren. 

@Shady1080
Klar ist das Gewohnheitssache. Ich hab halt mit nem Editor angefangen auch Java zu schreiben und hab dann lange JOE benutzt (den es glaub ich leider nicht mehr gibt...). Ich schreibe momentan halt meistens skript sprachen, da reicht mir ein Notepad++. Für Java und gerade Android oder Metro-Apps brauch man dann schon Eclipse oder VS. Eclipse ist in sofern besser, das man mit den ganzen Plug-Ins schon einige Zusatzfunktionen hinzu gewinnt die man gut gebrauchen kann. Ansonsten werden auch gerne ganze Programme auf Basis von Eclipse programmiert, die dann auf Eclipse-PlugIns funktionieren. Aber am Ende hast du natürlich recht und das sind alles persönliche Präferenzen.


----------



## shady1080 (3. August 2012)

ja stimmt, eclipse ist ne wahnsinnig mächtige Plattform. IBM zum beispiel hat ihre ganze Testautomatisierungsapplikation auf Basis von Eclipse geschrieben (also nicht MIT eclipse sondern die benutzen die Umgebung als GUI-Framework, aber ich glaube wir meinen das selbe)


----------



## JimSim (3. August 2012)

Jupp, das meinte ich. Ist natürlich zum mal dahin programmieren eher irrelevant.


----------



## fadade (3. August 2012)

1) Hi
2) ihr spammt gerade den Thread mit nicht-Grafik-Informationen zu   wäre ein Programmier-Quatsch-Thread vllt was?^^
3) Engine = extremst viel Arbeit! -> Schnelles vorankommen alleine ist da nicht (ich bin momentan auch an einem Punkt, an dem ich immer sehr viel nachdenken muss bevor ich überhaupt irgendwie weiterkomme ... Logik FTW)

4)


Crymes schrieb:


> Ich schreib alle sinm Visual Studio (C++ und C#), da gibts die verdammt praktische Funktion IntelliSense, die rückt den Code ein und überprüft ihn größtenteils während des Schreibens, d macht man weniger Leichtsinnsfehler.
> Hoffe mal das VS 2012 bald kommt [...]


 
- nichts < IntelliSense < VisualAssistX 
- auf Gamedev.net hab ich neulich schonmal einen kleinen Erfahrungsbericht von jemandem gesehen, der irgendwie an eine Version von VS2012 rangekommen ist, sollte also nicht mehr lange dauern


----------



## shady1080 (6. August 2012)

fadade schrieb:


> 1) Hi
> ...
> - nichts < IntelliSense < VisualAssistX
> - auf Gamedev.net hab ich neulich schonmal einen kleinen Erfahrungsbericht von jemandem gesehen, der irgendwie an eine Version von VS2012 rangekommen ist, sollte also nicht mehr lange dauern


 
Ja das ist kein Problem, den Release Candidate kann sich jeder runterladen Downloads | Microsoft Visual Studio 2012

Sieht ja interessant aus dieses VisualAssistX, aber was macht es denn so?


----------



## Crysis nerd (8. August 2012)

shady1080 schrieb:


> Sieht ja interessant aus dieses VisualAssistX, aber was macht es denn so?


 
Ich kann hier auch nur zustimmen: VisualAssistX is klasse 
Er bietet dir praktisch immer Vorschläge an, meist auch sehr intelligent (hat man die Membervariabel m_data und die funktion GetData() und schreibt gerade den funktionsrumpf mit "return ..." dann schlägt er dir sofort als erste Option m_data vor, auch wenn man tausend andere member variabeln hat)
Außerdem kann er zb. Funktionen und Variabeln umbenennen, also überall, wo diese vorkommen.
Das letzte ist, dass er paar Auto-Formats vornimmt, wie die { } setzen (was VS ja nich von alleine macht oder?).

Naja, Empfehlung pur


----------



## shady1080 (8. August 2012)

Okay, bietet VS denn nicht von Haus aus eine Möglichkeit für das Renaming? Hab mit VS schon fast ein ganzes Jahr nicht mehr gearbeitet...

Ich glaube wir sollten das wirklich auslagern


----------



## Airboume (12. September 2012)

*haaaaa puuuuuhhhhh*

kümmert euch nicht um mich - ich mach hier nur sauber


----------



## feifelm1983 (23. September 2012)

Was macht das Projekt? Wann gibt es etwas neues zu sehen, Bilder, Videos?


----------



## AMD (9. Januar 2013)

Hey,

es ist leider nicht wirklich viel passiert.
Ich habe zwar noch ein paar Shader überarbeitet aber das ist auch nicht wirklich^^

Ich programmiere zur Zeit mit jemanden von der Uni ein Online-MMO und das macht einfach nur fun^^
Über 10.000 Zeilen Code sprechen da schon für sich ^^

Ich möchte das Projekt nicht für Tod erklären aber momentan gibt es andere Interessen und Klausuren stehen in der Uni auch an


----------



## mf_Jade (9. Januar 2013)

AMD schrieb:


> Ich programmiere zur Zeit mit jemanden von der Uni ein Online-MMO


 
Genre? Screenshots? Videos? Her damit!


----------



## neflE (9. Januar 2013)

mf_Jade schrieb:


> Genre? Screenshots? Videos? Her damit!



Seh ich genau so!


----------



## AMD (9. Januar 2013)

Damit hab ich jetzt nicht gerechnet 

Dann bereite ich mal paar Infos vor... gibt ja scheinbar interesse ^^
Zeigen kann ich nur gerade nichts, da ich zum großteil den Server programmiere und er den Client, wovon ich keinen aktuellen Build habe... bei mir gibts da ja eher weniger zu sehen ^^


----------



## mf_Jade (9. Januar 2013)

Aber runduminfos kannst du geben, wir helfen bestimmt auch bei pre Alpha, Alpha oder Betatests mit


----------



## AMD (9. Januar 2013)

Also, die Sache ging wie folgt los:
In der Uni haben wir das Modul Datenbanken und wir wollten einen MMO Prototypen programmieren, der eben mit einer Datenbank arbeitet.
Wir haben die Anforderung fürs Projekt bestimmt schon um das 20-fache überschritten... der SQL Editor kann garnicht mehr das ER-Model der Datenbank generieren weil es zu viele Tabellen sind 

Einen Speziellen Plan für Quests gibt es noch nicht, da wir noch das Grundlegende System aufbauen. 
Aktuell kann ein Account angelegt werden, Spieler erstellen werden (verschiedene Köpfe, Gesichter, Körper, Hände, Füße, Farben, Spielerklassen, usw... sieht schon echt cool aus, Bild mach ich dann mal ^^) sowie kann ingame gejoint werden.

Das Inventarsystem ist komplett fertig, es können Items aufgehoben werden, diese erscheinen im Inventar, außerdem kann z.B. ein Schwert equipt werden, wodurch der Player es in der Hand hat (oder eben auch ein Schild, oder eine Rüstung am Körper).

Heute haben wir die Positionssyncronisierung mit anderen Spieler gemacht. Wir waren mit insgesamt 3 Clients online und alle haben sich gegenseitig gesehen... das war schon echt cool xD
Soeben habe ich nochmal was am Code optimiert, da 3 Clients einen ziemlich hohen Traffic verursacht haben (ca. 30-40 kb/s) beim Server. Jetzt sollten es ca. 10-15kb/s sein.

Morgen vormittag wollen wir dann schnell ein Chatsystem integrieren^^
Die Funktionen an sich kommen jetzt ziemlich schnell rein, da das Grundgerüst eben steht^^


Das ist zumindest ein grober überblick was wir aktuell machen... was dann mal Questtechnisch passiert... mal schauen^^


----------



## mf_Jade (10. Januar 2013)

Da werd ich richtig neidisch, zum einen weil ich kaum noch programmieren kann und zum anderen dass wir damals nicht sowas gemacht haben  *wünscht sich 10 Jahre zurück* 
Poste mal Screenshots


----------



## AMD (10. Januar 2013)

Mist, kann mich von zuhause nicht einloggen, da ich kein zugriff auf die interne Datenbank vom Uniserver habe... die externe Datenbank ist leider nicht auf dem laufenden 

Bis zum Loginscreen kam ich aber xD



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Robonator (10. Januar 2013)

Wie geil 
Wenn man dich so schreiben sieht, könnte man glatt denken das sowas nicht schwer sei


----------



## AMD (10. Januar 2013)

Ist es auch nicht, nur Zeitaufwendig


----------



## mf_Jade (10. Januar 2013)

Wieviele seid ihr? Wieviel "Content" gibts bisher? Fragen über Fragen


----------



## bingo88 (11. Januar 2013)

Ziemlich cool 
Macht ihr die Assets (Models, Texturen, etc.) auch selbst?


----------



## Austi2k (11. Januar 2013)

Richtig gut! Das kann ja was werden. Bin gespannt


----------



## godfather22 (11. Januar 2013)

Schickt mir nen client und ihr könnt testen, wie der traffic bei 4 personen ist ^^


----------



## AMD (12. Januar 2013)

@mf_Jade: Wir machen das nur zu zweit und es gibt noch nicht wirklich viel Content... erstmal wollten wir einfach das Grundgerüst programmieren und das steht nun auch.

@Bingo88: Das versuchen wir natürlich. Wir haben uns aktuell aber auch an vorhandenen Sachen bedient, da es einfach schneller geht. Wir wollten uns erstmal auf den Teil mit der Programmierung bedienen.

Wir haben gestern in der Uni den Client an ein paar Leute verteilt und es waren 6 Leute online... war schon lustig zusammen etwas durch die Gegend zu laufen oder ingame zu chatten... einfach mal weil wir es selber programmiert haben xD Da freut man sich über sowas banales


----------



## Skysnake (12. Januar 2013)

Implementiert auf jeden Fall durch Zufallsgeneratoren generierte Quests.

Sammle XY, oder gehe zu AB, kann man damit echt easy generieren und massig "Content" suggerieren.

Die Ausgangsvorraussetzungen (Datenbank) habt ihr dafür ja schon mal.

Wenn ihr mit zählt, was ihr so verteilt habt, könnt ihr auch schön variantion rein bringen, oder umgekehrt, die Quests, die beliebt sind auch prozentual öfters anbieten.


----------



## Crenshaw (17. Januar 2013)

Also ich werde gerne Betatester


----------



## SpotlightXFX (17. Januar 2013)

Bin dann auch dabei ;D


----------



## DiabloJulian (26. Januar 2013)

Richtig nett! Bin schon auf erste "Gameplay" Szenen gespannt! 
Das was ihr hier zu 2! macht, machen in manch anderen Spielen ein ganzes Team von Entwicklern *hut zieh*


----------



## Low (26. Januar 2013)

AMD schrieb:


> Hey,
> 
> es ist leider nicht wirklich viel passiert.
> Ich habe zwar noch ein paar Shader überarbeitet aber das ist auch nicht wirklich^^
> ...


 
Was studierst du nochmal?


----------



## gluecksbaeR (27. Januar 2013)

Sehr Intressantes dingen! Wenn du wen zum Testen brauchst, ich bin auch dabei!


----------



## Rollora (29. Januar 2013)

DiabloJulian schrieb:


> Richtig nett! Bin schon auf erste "Gameplay" Szenen gespannt!
> Das was ihr hier zu 2! macht, machen in manch anderen Spielen ein ganzes Team von Entwicklern *hut zieh*


Naja 
Ich finde AMDs Arbeit zwar beeindruckend, aber einen Renderer zu Schreiben von dem Umfang macht normalerweise kein ganzes Team. In der Medieninformatik gibts dafür sogar einen eigenen Semesterkurs, sprich man muss sowas innerhalb eines Semesters durchziehen.
Außer wir sprechen von modernen Engines... die natürlich aber auch viel mehr können (Was Physik, Grafik, Netzwerk etc betrifft), da steckt natürlich ein Team dahinter.
Die meisten Engines in den 90ern wurden auch von 1-2 Leuten geschrieben, etwa die Doom Engine, Unreal, Quake etc engines. Davon gabs damals wirklich einige.
Inzwischen sind Engines halt so komplex und umfangreich, dass das nicht mehr zu empfehlen ist, auch wenn Carmack den REnderer der Doom 3 und Rage Engine alleine versucht hat zu schreiben und nur Details ausgelagert hat.


gluecksbaeR schrieb:


> Sehr Intressantes dingen! Wenn du wen zum Testen brauchst, ich bin auch dabei!


 
Kommt wohl drauf an, was er genau testen will. Bei solchen Projekten will man am Anfang meist erfahrene Softwaretester, nicht einfach Leute die es installieren und sagen "aha, läuft nicht so recht"


----------



## AMD (2. Februar 2013)

Low schrieb:


> Was studierst du nochmal?


 Computer Engineering... entwerfe also eigentlich eher Hardware.


----------



## GotPainInTheAss (26. Februar 2013)

Sieht sehr cool aus, sowas könnte ich auch gerne! Wie macht man das dann eigtl. Bzgl Engines, und in welcher Sprache/Software programmiert ihr?


----------



## Voodoo2 (20. April 2013)

wow


----------



## Gunzi (6. Mai 2013)

Sehr schönes Projekt, lebt es noch?


----------



## AMD (6. Mai 2013)

Danke und ja!
In den letzten paar Wochen habe ich wieder eine ganze Menge gemacht


----------



## ferb (6. Mai 2013)

Das hört sich ja mal gut an bin gespannt was da noch kommt


----------



## Gunzi (6. Mai 2013)

Gute Nachricht an einem schönen Abend, freu mich schon!


----------



## AD3TR0N (23. Oktober 2013)

Sieht echt toll aus. Wollte sowas auch schonmal machen, habe aber leider zu wenig Zeit neben der Schule um mich in sowas rein zu arbeiten.


----------



## Low (23. Oktober 2013)

AD3TR0N schrieb:


> Sieht echt toll aus. Wollte sowas auch schonmal machen, habe aber leider zu wenig Zeit neben der Schule um mich in sowas rein zu arbeiten.


 Später hast du noch weniger Zeit


----------



## AD3TR0N (24. Oktober 2013)

Ich ahne es schon. Will übrigens Informatik studieren.


----------



## Low (24. Oktober 2013)

Weißt du auch schon ob FH oder Uni?


----------



## AD3TR0N (24. Oktober 2013)

Auf jedenfall Uni, dachte so an Dresden.


----------



## KAEPS133 (24. Oktober 2013)

AD3TR0N schrieb:


> Auf jedenfall Uni, dachte so an Dresden.



Uni würde ich nur bedingt empfehlen. Kommt halt drauf an was du machen willst, aber so wie ich es mal bei einem blick auf UNI Informatik Studiengänge geschaut habe, fährt man auf einer ordentlichen Hochschule besser.
Schau dir am besten mal paar Modulhandbücher zum vergleich an. Was dort die Lernziele sind und was gemacht wird. Besonders wie viele Praktische Übungen angeboten werden.


----------



## AD3TR0N (24. Oktober 2013)

Ich hab ja glücklicher Weise noch 3 Jahre Zeit.


----------



## MaxRink (24. Oktober 2013)

Gibts den Code auch bei Github?


----------



## AD3TR0N (28. Oktober 2013)

Ich mache übrigens gerade ein Praktikum an der Uni, sitze grade in einer Vorlesung zum Thema Darstellung von Zahlen.


----------



## Festplatte (22. Februar 2014)

Super Arbeit bis jetzt, habe mich grade nochmal durch ein paar Thread-Seiten durchgelesen.


----------



## bockwurst90 (8. März 2014)

KAEPS133 schrieb:


> Uni würde ich nur bedingt empfehlen. Kommt halt drauf an was du machen willst, aber so wie ich es mal bei einem blick auf UNI Informatik Studiengänge geschaut habe, fährt man auf einer ordentlichen Hochschule besser.
> Schau dir am besten mal paar Modulhandbücher zum vergleich an. Was dort die Lernziele sind und was gemacht wird. Besonders wie viele Praktische Übungen angeboten werden.


 
Geh an eine Technische Universität (Berlin, München etc.) oder an die ETH Zürich, welche mit Abstand die besten Dozenten und Rahmenbedingungen hat. Bin selber an der ETHZ und was man dort mitkriegt ist genial. Aber mach dir bitte keine falschen Gedanken. Wenn du grafische Programmierung betreiben willst und/oder Game-Engines programmieren willst, dann wirst du viel viel Hoschulmathematik brauchen. Wenn dir das nicht zusagt, vergiss dass mit dem Studium lieber. Viele Leute im Studiengang sind nur hier, weil sie mal gezockt haben und fliegen dann nach dem ersten Jahr Hochkant raus.

Befass dich mal mit Analysis und Lineare Algebra auf Hochschulniveau, sowie Zahlentheorie und entscheide dann, ob das etwas für dich ist. Programmieren bringst du dir im Studium selbst bei, da wird dir nicht viel geholfen, weil das das Einfachste ist. Im 2. Semester baut man einen Prozessor, lernt die Laufzeit von Algorithmen zu berechnen (Komplexitätstheorie), im 3./4. Semester implementiert man Betriebssysteme, Compiler und Netzwerkstacks selbst in C/C++ und lernt numerische Methoden zur Integration und Lösung von linearen Gleichungssystem resp. Differentialgleichungen. Ausserdem wird theoretische Informatik behandelt, was viel Verständnis der Diskreten Mathematik verlangt. Im 5./6. Semester geht es dann richtig geil ab...


----------



## TechBone (16. Juni 2014)

Respekt, ich würde auch gerne so etwas lernen, wo kann man C++ Sprache lernen? in büchern habe ich gehört


----------



## VikingGe (17. Juni 2014)

> wo kann man C++ Sprache lernen? in büchern habe ich gehört


Im Internet gibts eine Menge, eine _Menge_ Material - aber bis man sich nen Stil erarbeitet hat, der auch für große Projekte taugt, und bis man von der Sprache überhaupt erstmal die ganzen Tricks kennt, vergeht eine ganze Menge Zeit.

Abgesehen davon, dass man natürlich, so man denn Programmieranfänger ist, auch erstmal einiges an Zeit gebrauchen kann, um gewisse Konzepte (besonders objektorientierte Programmierung) nicht nur versteht, sondern auch gut einsetzen kann.


----------



## TechBone (18. Juni 2014)

hm ok Danke, aber man muss doch wenn man ein spiel entwickeln will, für die Animationen, z.B. ein Schuss aus einer Waffe oder das nachladen, erstmal das programmieren? und die Waffe muss erstmal in die leere Engine eingefügt werden und bevor ich das machen kann muss ich sie erstmal mit einem anderen Programm erstellen, wenn ich das so richtig verstanden habe?


----------



## bingo88 (18. Juni 2014)

Jupp, Programmieren ist halt nur ein Teilbereich, zu einem Spiel gehört noch mehr (Texturen, Modelle, Audio, Maps, ...).


----------



## TechBone (18. Juni 2014)

bingo88 schrieb:


> Jupp, Programmieren ist halt nur ein Teilbereich, zu einem Spiel gehört noch mehr (Texturen, Modelle, Audio, Maps, ...).


 
Ja aber das ist ja eh das was eingefügt werden muss. ein sehr gutes Map beispiel hatte ich damals beim Star Wars Empire at war Map Maker  allerdings war da alles dabei was im normal spiel auch vorkommt, wenn man weiß wie man programmiert dann würde man doch mehr hinzufügen können, so wollte ich das ausdrücken, eigene objekte.


----------



## bingo88 (18. Juni 2014)

Abhängig davon, wie man die Engine/das Spiel programmiert hat, muss man zum Hinzufügen neuer Objekte (bzw. Objekttypen) keinen Code mehr schreiben. Das lässt sich beispielsweise über generische (und eventuell hierarchische) Entity-Klassen realisieren. Du müsstest dann trotzdem noch die Objekte selbst erstellen, beispielsweise bei Modellen mit einem 3D-Programm (Blender, Autodesk Maya oder 3ds Max, ...). Diese Daten werden dann in der Regel in ein für dein Spiel verständliches Format exportiert und sind dann ohne weitere Anpassungen nutzbar.


----------



## TechBone (18. Juni 2014)

oO aber das steht sicherlich in so nem buch auch nochmal beschrieben.

ich frage mich wieviel arbeit die Outlast entwickler hatten. speziell die programmierer.


----------



## bingo88 (18. Juni 2014)

Klar gibt es Bücher zu dem Thema, die zumindest die Grundlagen vermitteln können. Da muss man schon einiges an Zeit investieren. Wenn du "schnell" sichtbare Erfolge haben willst, würde ich dir aber eine fertige Engine empfehlen (bspw. UDK, Ogre, Unity).


----------



## TechBone (18. Juni 2014)

ja ja meine ich ja, man fängt ja eh schon mit programmieren an wenn man so eine engine nimmt, also wenn man Figuren einfügt oder so...


----------



## bingo88 (18. Juni 2014)

Das hängt von der Engine ab. Normalerweise geht das über einen Editor und Skripte. Ich hab 2012 mal ne Demonstration von einem Crytek-Entwickler zur damals aktuellen Engine bekommen, das war quasi nur noch Klicken im Editor. Klar, das reicht nicht für alles, aber ist schon recht angenehm


----------



## DarkMo (18. Juni 2014)

also ich finde jetzt das grundsätzliche an einer engine garnich mal so wild. also ich mein jetz, überhaupt erstmal ne ausgabe hinzubekommen. sowas zu drehen usw. die effekte sind schon ne nummer größer (shader und die pipeline und wie das so alles funzt mit mehreren renderdurchgängen ^^). als schlimmstes ist es wohl, das ganze dann auch noch einigermaßen performant hinzubekommen xD da sind die fertigen engines natürlich ne absolute hausnummer, wenn man sowas wie ich einfach nur mal slbst probieren möchte. glaube, da brauch man an sich selbst nicht den anspruch stellen, das überbieten zu wollen  aber wie gesagt, so grundlegendes is noch nichmal sooo schwer *find*


----------



## TechBone (19. Juni 2014)

wenn man ein spiel entwickelt muss man ja nicht nur gute Performance bringen sondern auch bugfixes, lol The Forest :0


----------



## VikingGe (19. Juni 2014)

Performance ist aber in der Tat das größte Problem - ich hatte mal vor Jahren was mit nem Deferred-Renderer mit naiv geschriebenem OpenGL 2.1 zusammengebaut, musste aber genau aus dem Grunde abgebrochen werden, dass es einfach viel zu langsam war. Und auch heute noch zu langsam ist, die einfachsten Szenen laufen in 800x600 nicht mit mehr als 15 FPS auf meinem Rechner. 



> die effekte sind schon ne nummer größer


Da muss man kreativ sein: "Wie baue ich jetzt einen Dirty Hack, um das und das so halbwegs irgendwie darzustellen?"


----------



## Crysis nerd (19. Juni 2014)

VikingGe schrieb:


> "Wie baue ich jetzt einen Dirty Hack, um das und das so halbwegs irgendwie darzustellen?"


 
Beste Sache an Echtzeitgrafik-Programmierung <3
Grafik in modernen Spielen ist einfach nur ein rieser Haufen "Betrug" und Hacks ^.^


----------



## kbit (24. Juli 2014)

Ich habe mal eine Frage was ist jetzt mit der Grafik Engine bzw mit dem MMORPG passiert?


----------



## feifelm1983 (24. Juli 2014)

Ja mich würde auch interessieren, wie es mit der _Grafik Engine_ weiter geht? Weiß jemand mehr darüber oder ob der *AMD* das noch weiter entwickelt?


----------



## AMD (27. Juli 2014)

Ich habe die letzten Wochen immer wieder mal was dran gemacht aber ich habe noch nicht so viel zu zeigen^^
Momentan muss ich aber auch viel arbeiten und wenn ich zu Hause bin hau ich mich gerne auch einfach mal auf die Couch


----------



## kbit (27. Juli 2014)

schön das das Projekt noch lebt


----------



## kevinho (18. Dezember 2014)

Lebt's denn immer noch? Auch, wenn ich mich aktuell nur mit der Programmierung von Smartphone-Apps befasse, so finde ich dieses Projekt höchst interessant!


----------



## AMD (29. Dezember 2014)

Vom Prinzip her schon.
Ich hatte das Projekt so gesehen nochmal komplett von vorne begonnen, um gewisse Dinge einfach besser zu machen. Natürlich konnte teilweise schon Code übernommen werden aber in etlichen Bereichen läuft alles viel runder.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



An der Grafik kann man erkennen, dass die Last auf 4 Kerne verteilt wird und nicht sonderlich hoch ist aber trotzdem die R9 290 am Limit arbeitet. Vorher war alles zu sehr auf 1 Kern ausgelegt was mitlerweile deutlich besser funktioniert.


Momentan muss ich jedoch eine CAN API programmieren (was jedoch kein Hobby ist) und da fehlt mir aktuell etwas die Lust dann noch dieses Projekt weiter zu machen aber ab Februar sollte dafür wieder mehr Zeit sein.


----------



## feifelm1983 (3. Februar 2015)

Ich bin gespannt wie es weitergeht. Go Go Go


----------



## Dark Messiah (1. April 2020)

und, lebt das Projekt auch 5 Jahre später noch?


----------



## feifelm1983 (3. April 2020)

Dark Messiah schrieb:


> und, lebt das Projekt auch 5 Jahre später noch?



Ich glaube nicht, sehr schade.


----------

