Autor |
Beitrag |
Hugo343
      
Beiträge: 114
Erhaltene Danke: 2
Windows 7
Turbo Delphi, Dev C++
|
Verfasst: Fr 20.05.11 21:52
HalliHallo, meine Antstrengungen ziehen sich in letzter Zeit auf mein 3D Irrgarten-Spiel und da soll auch der passende Sound nicht fehlen (Fußschritte, Geräusche, etc.). Nachdem ich so einige Bibliotheken probiert habe, die auch räumlichen Ton unterstützen, bin ich ein wenig ernüchtert und habe nun mal Audorra ausprobiert. Nur leider finden sich dazu keine Tut's (Google, DelphiForum sowie das offizielle Audorra-Wiki sind da recht ausgetrocknet). Vielleicht gibt es hier einige, die sich damit schon einmal beschäftigt haben, da wäre ich dankbar für jede Hilfe  .
MfG, Hugo
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 21.05.11 04:44
Ich habe es mal heruntergeladen, igendwie ist das schon komisch, weil die Demo so im Moment eigentlich nicht funktionieren kann. Aber wenn du kurz in den Quelltext schaust, dann siehst du, dass du nur den Treibernamen setzen musst und beim Setzen des Treibernamens ein Semikolon nach dem else zu viel ist.
Es gibt jedenfalls nicht für alles Tutorials. Sag doch besser wo gerade dein Problem ist.
Da das Projekt jedenfalls noch in der Vorschauphase war und seit anderthalb Jahren keine Neuigkeiten mehr dazukamen...
// EDIT:
Aber wirklich laden tun die Demos die Dateien trotzdem nicht. 
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 21.05.11 09:16
Du kannst dir auch sonst gerne mal das Elysion Framework angucken.
github.com/freezedev/elysion
Aktuell planen wir zwei Releases im Monat, wobei die dann eher von kleineren Erweiterungen gespickt sind. Größte Neuerung im Juni wird das neue Rendering- und Shader-System sein, welches ich aktuell noch entwickel. Ansonsten ist Elysion auf intuitive und schnelle Entwicklung von Spielen und grafischen Applikationen jeder Art getrimmt. Außerdem bietet Elysion alle Features, die man als Spieleentwickler in den Anfängen braucht:
* Input
* Sprite-Rendering
* Kollisionserkennung
* Window-Management
* Erweiterbarkeit
Wir arbeiten aktuell wieder viel an Elysion und hoffen auch eine Scripting-Engine integrieren zu können. Hier mal ein kleiner Ausschnitt aus einer Beispielapplikation:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275:
| unit uGame;
interface
uses ElysionTypes, ElysionApplication, ElysionScene, ElysionLogger, ElysionColor, ElysionGraphics, ElysionTrueTypeFont, ElysionTimer, ElysionInput, ElysionUtils, ElysionRendering, ElysionTexture,
SysUtils, uBasic, uGlobal, uConfig, uMainMenu, uGameScreen, uCredits, uOptions;
type TGame = class(TelGame) private fMainMenu: TMainMenu; fGameScreen: TGameScreen; fCredits: TCredits; fOptions: TOptions; fLoadScreen: TelSprite;
fFont: TelTrueTypeFont; fShowFPS, fDebug: Boolean; fForceFullscreen, fForceWindow: Boolean;
fRenderTarget : TelRenderTarget;
public constructor Create(); Override; destructor Destroy; Override; procedure Initialize(); Override;
procedure Render(); Override; procedure Update(dt: Double = 0.0); Override; procedure HandleEvents(); Override; published property Debug: Boolean read fDebug write fDebug; property ForceFullscreen: Boolean read fForceFullscreen write fForceFullscreen; property ForceWindow: Boolean read fForceWindow write fForceWindow;
property Font: TelTrueTypeFont read fFont write fFont;
property MainMenu: TMainMenu read fMainMenu write fMainMenu; property GameScreen: TGameScreen read fGameScreen write fGameScreen; property Credits: TCredits read fCredits write fCredits; property Options: TOptions read fOptions write fOptions;
property ShowFPS: Boolean read fShowFPS write fShowFPS; end;
implementation
constructor TGame.Create; var tmpFullscreen: Boolean; begin Debug := true;
fForceFullscreen := false; fForceWindow := false;
fShowFPS := false; GameState := gsMainMenu;
if Self.Param('-debug') then Debug := true; if Self.Param('-fullscreen') then ForceFullscreen := true; if Self.Param('-window') then ForceWindow := true;
if Debug then begin TelLogger.getInstance.Priorities := [ltNote, ltWarning, ltError]; tmpFullscreen := false end else tmpFullscreen := true;
if (ForceWindow) and (not ForceFullscreen) then tmpFullscreen := false else tmpFullscreen := true;
if ((Desktop.Width = 1024) and (Desktop.Height = 600)) then inherited Create(Desktop.Width, Desktop.Height, AppConfig.Bits, true) else inherited Create(AppConfig.Width, AppConfig.Height, AppConfig.Bits, false);
fLoadScreen := TelSprite.Create; fLoadScreen.LoadFromFile(GetResImgPath + 'loadscreen.jpg');
fRenderTarget := TelRenderTarget.Create;
end;
destructor TGame.Destroy; begin inherited;
fLoadScreen.Destroy;
MainMenu.Destroy; if GameScreen <> nil then GameScreen.Destroy; end;
procedure TGame.Initialize; var newRatio: Single; begin
ActiveWindow.BeginScene; fLoadScreen.Draw; ActiveWindow.EndScene;
ActiveWindow.Caption := 'My Application'; ActiveWindow.ShowCursor();
fFont := TelTrueTypeFont.Create; fFont.LoadFromFile(GetStdFont, 16); fFont.Color := Color.clWhite; fFont.RenderStyle := rtBlended;
Input.DebugInfo();
fRenderTarget := TelRenderTarget.Create;
MainMenu := TMainMenu.Create(); Options := TOptions.Create(); Credits := TCredits.Create();
end;
procedure TGame.Render; var fSprite : TelSprite; fTexture : TelTexture; fColor : TelColor; begin
fRenderTarget.Bind;
if MainMenu.NewGameClick then begin fLoadScreen.Draw; ActiveWindow.EndScene;
if fGameScreen <> nil then FreeAndNil(fGameScreen); fGameScreen := TGameScreen.Create;
MainMenu.NewGameClick := false; end;
case GameState of gsMainMenu: MainMenu.Render(); gsOptions: Options.Render(); gsIntro: ; gsCredits: Credits.Render(); gsGame: GameScreen.Render(); end;
fSprite := TelSprite.Create(); fTexture := TelTexture.Create(); fTexture.LoadFromGL( fRenderTarget.TextureId, ActiveWindow.Width, ActiveWindow.Height ); fSprite.LoadFromTexture(fTexture); fRenderTarget.Unbind;
fColor.R := 150; fColor.G := 140; fColor.B := 120;
fSprite.Draw; end;
procedure TGame.Update(dt: Double); begin if ShowFPS then fFont.TextOut(makeV3f(8, 8, 0), Format('FPS: %.2f Delta: %.5f \n Mouse Abs: %d %d Rel: %d %d', [ActiveWindow.FPS, ActiveWindow.DeltaTime, Input.Mouse.Cursor.X, Input.Mouse.Cursor.Y, Input.Mouse.RelCursor.X, Input.Mouse.RelCursor.Y]));
case GameState of gsCredits: begin Credits.Update(dt); end; gsOptions: begin Options.Update(dt); end; gsMainMenu: begin MainMenu.Update(dt); end; gsGame: begin GameScreen.Update(dt); end; end;
end;
procedure TGame.HandleEvents(); begin case GameState of gsCredits: begin Credits.HandleEvents; end; gsOptions: begin Options.HandleEvents; end; gsMainMenu: begin MainMenu.HandleEvents; end; gsGame: begin GameScreen.HandleEvents; end; end;
if GameState <> gsMainMenu then begin if Input.Keyboard.isKeyHit(Key.Escape) or Input.XBox360Controller.Back then GameState := gsMainMenu; end else begin if Input.Keyboard.isKeyHit(Key.Escape) or Input.XBox360Controller.Back then Application.Quit(); end;
if Input.Keyboard.isKeyHit(Key.F) then begin ShowFPS := not ShowFPS; end;
if Input.Keyboard.isKeyHit(Key.T) then begin ActiveWindow.TakeScreenShot('screenshot'); end;
end;
end. |
Der Code zeigt eine komplette Elysion-Applikation mit mehreren States, Input und Rendering. Bei Fragen kannst du dich auch gerne an mich wenden.
|
|
Hugo343 
      
Beiträge: 114
Erhaltene Danke: 2
Windows 7
Turbo Delphi, Dev C++
|
Verfasst: Sa 21.05.11 09:32
Naja also irgendwie hilft mir ein fremdes Gerüst bei meinem Problem nicht weiter. Ich wollte es ja gerade wegen sowas wie Kollision (die übrigens schon funktioniert ^^) selbst aufsetzen, um mich in sowas zu üben. Mein konkretes Problem liegt bei der Verwendung der Audorra-Bibliothek, ich suche nach einem Tutorial wie das von Andorra2D. Aber wenn es das wohl echt nicht gibt, würde ich auch gerne Hilfe bei dem Win7-Treiber-Problem von OpenAL entgegennehmen ... die Sache mit der Zugriffsverletzung.
MfG, Hugo
|
|
Hugo343 
      
Beiträge: 114
Erhaltene Danke: 2
Windows 7
Turbo Delphi, Dev C++
|
Verfasst: Mo 23.05.11 15:43
Bin auf die BASS.dll umgestiegen, das Thema hat sich damit geklärt.
MfG, Hugo
|
|
|