Intro to Vortex2D.NET

Vortex2D.NET is multipurpose hardware accelerated graphics framework / game engine specially designed for .NET platform starting version 2.0. Project is intended to be used for: creation of indie games, building Windows.Forms application with embedded heavy graphics content updated in real time. Currently game platform is not tuned for some specific gameplay type but flexible enough to build custom high-level frameworks for any kind of it.

Vortex2D project has been started 10th January 2010 and uploaded to Codeplex in April 2010.

Engine is written with C++/CLI (also known as "glue" language) and C# targeting mostly C# development. Game engine consists of two main parts (projects) Vortex.Core and Vortex. Vortex.Core is totally C++/CLI assembly which proxies access to Windows API, Direct 3D, Direct Input. All graphics part of Vortex2D is placed here. Vortex is C# written and contains all other stuff including Game controller class, particle system, scene graph, XML loading utils etc.

Software requirements

Operating system - Windows XP. NET framework of version 2.0 is mandatory. Running of Vortex.Core module requires msvrt90.dll because it is impossible to build C++/CLI project without it. Recommended to include VC++ 9.0 redistributable when shipping product based on Vortex2D.NET (at least msvrt90.dll library with manifest file, both placed in runtime directory) Also Vortex.Core requires DirectX 9.0b to be installed. D3DX library is used but statically linked (no d3d9x_XX.dll hell).

Hardware requirements

CPU with SSE support (AMD Athlon / Duron, Intel Pentium 3). 3D videocard with support of pixel shader model 2.0 (ATI Radeon 9500 and higher, GeForce FX5200 and higher, Intel GMA 900 and higher).

Vortex2D.NET architecture overview

Virtually project consists of two primary parts: graphics framework - Canvas2D.API and game platform (includes skeleton, input, audio, effects etc). Canvas API is placed in Vortex.Core assembly. Game platform requires also Vortex project/dll to be referenced as well.

general architecture.png

Root namespace of engine code is Vortex. Other modules use inner namespaces: Vortex.Drawing, Vortex.Input, Vortex.Core etc.

Canvas2D.API overview

Canvas2D.API is abstraction layer for rendering 2D graphics using modern 3D video accelerators. It is designed to hide most of low-level specific and unnecessary for 2D methods. Some things are still similar to Direct3D API: samplers, HLSL shaders, textures, render targets, states. But all of them are wrapped into .NET classes and doesn't require too much special behavior to use.

Vortex.Drawing.DrawingDevice is abstraction of video device, it targets some OS window surface, controls size of backbuffer, frame begin/end etc. It is required to be used directly only when using Canvas2D.API in WinForms application.

Vortex.Drawing.Canvas2D contains all drawing stuff. It provides mostly sprite-based rendering methods, transformation stack and state management section. Changing of drawing states is designed to be applied for some specified execution scope only:
using (canvas <= someState) {
    // >>>> HERE DRAWING CODE WITH someState ACTIVATED <<<<

Last edited Aug 17, 2010 at 8:20 PM by AlexKhomich, version 17


No comments yet.