Summary
Define stable adapter contracts, DTO shapes, and example APIs used by all engine adapters (rendering, input, audio, asset lifecycle).
Current Implementation Status (repo)
Implemented under src\GameEngineAdapter.Core\:
- Core contracts:
IEngineAdapter, provider interfaces (IRenderProvider, IInputProvider, IUserInterfaceProvider, IAssetProvider), and IAudioPlayer/IAssetLoader.
- DTOs:
EngineCapabilities (includes ContractVersion), plus draw/material/transform DTOs.
- Unit tests exist for DTOs and headless implementations under
src\GameEngineAdapter.UnitTests\.
- Translator tests:
src\GameEngineAdapter.UnitTests\Translator\TranslatingRenderProviderTests.cs covers SubmitSprite, SubmitText, SubmitMesh, and frame boundary calls using RecordingFakeRenderBackend.
- Benchmark suite:
src\GameEngineAdapter.Benchmarks\RenderTranslationBenchmarks.cs (BenchmarkDotNet, [MemoryDiagnoser]) measures single-sprite and 1000-sprite render translation hot paths. Formal validation of the single-digit microsecond target has not yet been run.
Notes / gaps:
- Contract mismatch detection/diagnostics is not implemented in this repository (the contract is versioned via
EngineCapabilities.ContractVersion, but there is no central validator/fail-fast helper yet).
Objective
Produce small, well-documented C# interfaces and compact DTOs that minimize allocation and provide a stable surface for engine adapters.
Technical Details (updated)
- Define
IEngineAdapter (lifecycle, capability descriptor, provider properties: RenderProvider, InputProvider, UserInterfaceProvider, AssetProvider, AudioPlayer).
- Define provider interfaces:
IRenderProvider, IInputProvider, IUserInterfaceProvider, IAssetProvider.
- Define
IAudioPlayer (play/stop/volume, audio asset references) and IAssetProvider/IAssetLoader for asset lifecycle.
- Define
EngineCapabilities capability descriptor model (includes ContractVersion) with engine-specific variants (e.g. HeadlessEngineCapabilities).
- DTOs are
readonly record struct for compact value semantics; include Transform and Layer for deterministic ordering.
Requirements
Acceptance Criteria (updated)
Docs
docs/plans/phase-1-interface-development.md
Dependencies
Parent: #2
Summary
Define stable adapter contracts, DTO shapes, and example APIs used by all engine adapters (rendering, input, audio, asset lifecycle).
Current Implementation Status (repo)
Implemented under
src\GameEngineAdapter.Core\:IEngineAdapter, provider interfaces (IRenderProvider,IInputProvider,IUserInterfaceProvider,IAssetProvider), andIAudioPlayer/IAssetLoader.EngineCapabilities(includesContractVersion), plus draw/material/transform DTOs.src\GameEngineAdapter.UnitTests\.src\GameEngineAdapter.UnitTests\Translator\TranslatingRenderProviderTests.cscoversSubmitSprite,SubmitText,SubmitMesh, and frame boundary calls usingRecordingFakeRenderBackend.src\GameEngineAdapter.Benchmarks\RenderTranslationBenchmarks.cs(BenchmarkDotNet,[MemoryDiagnoser]) measures single-sprite and 1000-sprite render translation hot paths. Formal validation of the single-digit microsecond target has not yet been run.Notes / gaps:
EngineCapabilities.ContractVersion, but there is no central validator/fail-fast helper yet).Objective
Produce small, well-documented C# interfaces and compact DTOs that minimize allocation and provide a stable surface for engine adapters.
Technical Details (updated)
IEngineAdapter(lifecycle, capability descriptor, provider properties:RenderProvider,InputProvider,UserInterfaceProvider,AssetProvider,AudioPlayer).IRenderProvider,IInputProvider,IUserInterfaceProvider,IAssetProvider.IAudioPlayer(play/stop/volume, audio asset references) andIAssetProvider/IAssetLoaderfor asset lifecycle.EngineCapabilitiescapability descriptor model (includesContractVersion) with engine-specific variants (e.g.HeadlessEngineCapabilities).readonly record structfor compact value semantics; includeTransformandLayerfor deterministic ordering.Requirements
(Complete) API definitions committed with XML docs and examples.
(Partially complete) Adapter lifecycle & capability negotiation
IEngineAdapterreturnsEngineCapabilitiesand exposesInitialize/Shutdownsemantics.Acceptance Criteria (updated)
ContractVersioninEngineCapabilitiesfor versioning/compat shims.Docs
docs/plans/phase-1-interface-development.mdDependencies
Parent: #2