# Visual Basic > Games and Graphics Programming > Game Demos >  Free 2D/2.5D Game Engine for .Net and VB6

## DracullSoft

Ice2D Game Engine is a royalty free game/sprite engine for 2D/IsoMetric and simpler 3D cut scenes.

Ice2D  (earlier known as DxIce) now has a new home. Read more http://www.indiedb.com/engines/ice-2d-game-engine 

SDK Download from http://1drv.ms/1MnTehw

----------


## Pino

Moved to Demos/Games

----------


## RaZeR

Very good  :Smilie:  :Thumb: 
Can you create some new 3D examples using this engine, please?  :wave:

----------


## DracullSoft

Thanks RaZeR

The Air Hockey sample game include a 3D intro screen with 3D text flying in and rotating in 3D

Current development includes a Space Fighter game sample with a new Spline Path feature for enemy flight paths.
The Spline feature could also be using in bobble shooters like Luxor  :Smilie: 

The 3D features is mainly intended for Cut Scenes and Menu's. If you are looking for a 3D engine and 3D scenery/landscape take a look at *nGene* or *Unity* 
Here are some screenshots for the new Space Fighter sample

----------


## DracullSoft

*Version 1.61 released 7th jan 2010*

Download the new SDK today http://www.ice2d.com/

Fixed: IceSound Pause and Resume is called when game window is out of focus or minimized.
Added: DxIsoGame.Net sample
Added: DxIceSampleA.NET sample
Added: IceCamera - a simple 3D Camera
Added: new features in IceDraw, Ice3DMesh and IceFont


Example of a Shareware game in the making:

----------


## Mikle

Very interesting, but the archive includes d3dx9xx.dll, and it is forbidden by Microsoft. Is it possible to abandon the use of the library, even abandoning it functional?
Will operate registerDx9Ice.bat on Windows Vista or Windows7, if you do not have administrator rights?

----------


## DracullSoft

RegisterDx9Ice.bat is needed to perform a registration of the typelibrary and the dxIce Game engine DLL itself. If you make an installation / setup job for the final game this will only need to do a standard regsvr32 on the DxIce Game Engine DLL, the tbl is not needed after compiling the game.
I am not aware that deploying d3dx9_24.dll or any other or the d3dx9_XX.dll is forbidden. In fact, i believe, Microsoft suggest this in several support cases. Alternatively you can deploy the full distribution package for dx9.

----------


## Jenner

It would be better though to detect the version of DirectX on the target machine and use those libraries as required.  It wouldn't be hard to do and would remove the necessity for any d3d.dll's in the package.  DirectX is fully backward compatible functionally.

----------


## DracullSoft

@Jenner: True enough - thanks for the feedback. Newer versions would already have the required functionality, I just encountered situation where people messed up some of d3dx9_xx dlls so I decided to just include it since its the only real dependency apart from having a some version of dx9 installed (including a dinput.dll and dsound v3 or later).

also - congrets with the tetris. I havn't tried it yet since i don't have xna installed on my dev PC. Posting a screen shot or a zip with a playable game without requiring installing the full xna sdk would allow more people to try it.

----------


## Jenner

That's a really good suggestion.  I'll do that.  Thanks!  :Smilie:

----------


## DracullSoft

Dx ICE Version v1.70 includes 3 new samples

* 3DApp2: Another Simple 3D scene with a low poly DUCK (showing 2 MESHes)
* DrawFormSample: Very minimal drawing sample. (only a Form and a Bas module) - no game scene manager etc.
* BouncingBeachBallSample: Form with Picturebox rendering. IceAnimation for easy sprite animation. TextType feature.

DrawFormSample is also an example that shows how DxIce game engine can render into a picture box (any hwnd with a dc) and autosize the form's client area to fix the resolution desired.
The example demonstrates how to draw Triangles and how to toggle a special fullscreen mode - while the game is running. The picturebox can be stretched to full screen or it can keep resolution and adding borders around the rest of the view to fill the monitor in fullscreen mode
It also shows how to draw a polygon on a hdc using GDI and copy that into a Dx Texture that is used in the engine as an overlay (or sprite). This is done by using the new method: DBTexture. LoadFromFileInMemory

With Bouncing Beach Balls i choose one of the goals (beyond making a fun game) to make it look good both on regular 4:3 monitors (800x600 and 1024x768) and widescreen 5:3 / 8:5 monitors (1280x768 / 1280x800 up) and at the same time be able to run on Netbooks with 1024x600.
All internal game logic and graphics will be designed in 960x600 and the various monitors will be supported with different options Aspect correct Scaling or borders around a centered screen
Another goal was to implement a game with simple real-world physics and with a bit of Sprite Animations.

*In V1.70 the following was changed*
Add: Toggle Full Screen - in game
Add: Full Screen with borders - keeping your game in the original resolution
Add: Automatic Window resize and centering (FullScreenFormVB6)
Add: IceAnimation - a new interface for easy / automatic sprite animation handling
Add: IceFont TextType. Nice for "Dating Sims" or text adventures or just a cool menu.
Add: IceDraw DrawTriangles (both filled or not)
Add: DBLoadFromFileInMemory
Add: IceDraw.BlitTextureUV and BlitTexture
Add: Ice3DMesh.BlitTexture3D
Add: Frame rate / TimeDelta stabalized with better algoritm.
Add: Shadow for sprites. (enabled or disabled). Works with all other sprite features incl animation, splines and robots.
Add: Global shadow parameters are offsetX, offsetY, shadowgrey and shadowDepths.


Fix: Smooth bilinear filtering for Fonts and Sprites (or not-you decide - i messed up a bit for sprites when fixing the Fonts in v1.52)
Fix: MakeScreenshot PNG, JPG, DDS and DIB now working
Fix: CopyRegion - if you use the correct texture pools. D3DPOOL_SYSTEMMEM or SCRAP -> D3DPOOL_DEFAULT
Fix: DBTexture Add and Replace can now set texture Pool using the TType parameter
Fix: IceSound now pauses when window is minimized or out of focus.
Fix: Spline for IceSprite can now run a number of times (without messing up )
Fix: Minor bugs in DBMouse and DBSprite

----------


## DracullSoft

DxICE Game Engine v 180 has been released 15-5-2010

Add: New style rsBounce for IceSprite robots 
Add: IceSprite.DrawBox = True renders a boundry "debug" Box
Add: SetDrawBox From, To, True/False Sets DrawBox for a range of sprites
Add: IceSprite.SetGlobalShadow configures global shadow parameters
Add: IceSprite.ShadowGlobalOn enable a sprite to "cast" shadow.
Add: IceSprite.Shadow change the darkness of the shadow for a sprite
Add: IceSprite.ShadowDepth modify the depth of the shadow
Add: IceSprite.FindState finds the first sprite with a given state (long) 
Add: DBSprite.Set/GetUserHit a user defined long value
Add: DBSprite.Set/GetUserPower a user defined single value
Add: DBSprite.Set/GetUserValue another user defined single value
NB: other user values are Set/GetIdNum and Set/GetIdString
Add: GameSceneManager.SceneTime. Time since the scene started - makes it easier to make menus and triggers to make items appear shortly after the scene has started.
Add: DBMouse.GetLeftButtonReleased. Know if a button was just released. This will only be true in one render loop after the mouse button was released.

Fix: Sprite Origin Center corrected
Fix: Music on computers that does not support pr program volume control. ( caused midi files to fail on some laptops )
Fix: IsoMap was Rended ugly on some Graphics cards - now fixed.

Performance: Rotating sprites performance better and a minor improvement on none rotated sprites.
Performance: Improved the performance for Particle Effects (about 15%).

- thanks to a dxICE user for basic code and working example we now have:
Add: New Path Finder class for Iso Sprites 
Add: Render Path for IsoMap
Add: RenderTerrainAltitude for IsoMap - draws an Altitude colored map
Add: Get/SetMapCellPathWalk to define if a map cell is blocked (including load/save of maps)

Extended: IsoGame - The game map is now bigger. Showing the Path Finder in function and the Altitude Rendering
Extended: IsoEditor - can show altitude and pathwalk for maps

----------


## DracullSoft

Dx9 Ice2D Game Engine for use with VB.NET 2010 C#.NET 2010 (express versions works fine) or VB6 or other ActiveX enabled languages (must be able to use typelibs or interop.libs).

Visit http://ice2d.com

current Dx9 Ice2D v1.87
Replacing FXEffect with new Particle effects interface IceFX with Batch mode render as option.
Add: Ice2D FXTool and example code
IceFX interface has the same basic functionality as FXEffects and many additional features including
Same circular effects as FXEffects - some names have changed (e.g InfiniteSpread is now called Emitter and is a property) 
Straight line effects (dropping or bobbling) 
Easy FireAndForget without the need to manage indexes
Additional blending effects (alpha, add, subtract etc as common with IceDraw.BlitTexture functions )
FX Tool sample to try out some effects and tweak
Replacing of the Config structure with Methods (better naming)
Easy use of the Standard fx texture for the standard resources
Particle variable Rotation and variable Scaling
Particle Color modes Fade In, Fade Out and Fade in+out 
Fx Direction from Sprite's rotation
Fx Direction changes (increments) while FX is emitting.
Variable velocity of particles
Several bug fixes from features in FXEffects


Dx9 Ice2D v1.86
Now using less CPU when running with fixed framerate (when time permits it)
IceFont - Added methods to manage Text Indexes
Ice3DMesh - Added methods to manage Mesh Indexes 
Ice3DMesh - Added way points feature.
IceDraw - Blit methods modified.
Improved Rendering performance for IceFont, IsoMap, Sprites, FXEffects and Performance improved most when using Software Vertice Rendering (on low-end Net books - without Hardware Accelerated Graphic cards)
Mainly when rendering multiple sprites or isomap tiles from the same texture.

Dx9 Ice2D v1.85
IceDraw - Blit methods added
Several minor bugs fixed.
Wiki   http://ice2d.com/wiki

Dx9 Ice2D v1.84
Add: IceFont.FontGetWH(ByVal FontId As Long, TextString As String, outWidth As Single, outHeight As Single, [ByVal ScaleXY As Single = 1], [ByVal LetterSpace As Long = 0], [ByVal LineSpace As Long = 0])
Allows faster calculation of Width and Height of a TextString without the needed for setting up a TextID entity
Add: LogOption_Font added - will log errors.
Fix: IceFont - some methods had arguments as variants -> now correct type
Fix: IceFont LetterSpace and LineSpace did not work correctly when scaling a textId entity
Changed: TextScaleXY is now a property

v 1.83
Add: FxEffect ViewOffsetXYParticleOnce() ViewOffsetSetXY () and ViewOffset properties to allow effects to be shifted with the background or sprites
Add: DBTexture.CopyStretchToRenderTarget (both render target textures and current device render target / screen)

Dynamic lighting does not affect overlay or sprites

Add: Engine.LightOn Property to turn on DirectX 3d lighting. ( default off)
Add: Engine.LightSlotEnable() Property for enabling lightslots 0-7 used by Ice3DLight
Add: Engine.LightAmbient Property for the ambient lighting.
Add: Engine.LightAmbientRGB Set the ambient lighting in the 3D environment with RGB 0-255
Add: Ice3DLight Directional Light and Point lights - including render light Lens and particle tail effect. Automatic Waypoints movement in 3D. Its posible to render as many lights as you want in the same lightslot but only one of them with cast light to the environment. (this will be the light updated last in the frame)

Fix: Ice3DLight.Render in 3D ( z now also in use ) 
Fix: DBTexture.Fill
Fix: Materials from x files 
Better: DBTexture logging 
Better: Hints of use / doc on interfaces in Object Browser

v1.82

Add: Log improved
Add: Separate Render functions for Sprite etc. first attempt at splitting up Render() to give more control over sequence in rendering.
Examples are : RenderUpdate() RenderSprite(id) RenderSpriteRange( SP_start, SP_end)
Add: IceDraw.ClearManagedTextureMemory Removes all managed textures from graphics card (they will be moved automatically to card, next time they are rendered or used)
Add: IceDraw.GetAvailableTextureMemory(). Returns available graphics card texture memory
Add: Properties for IceSprite to access the robot values RobotScaleValue, RobotAlphaValue, RobotRotationValue
Add: Ice3DLight Directional Light and Point lights - including sprite render
Add: a Number of Light related methods/properties in DxIceEngine
Add: Materials loaded from x files (to make use of the light)
Add: Materials can also be defined in code
Add: IceSprite Spline properties SplineOffsetX,SplineOffsetY,SplineOffsetAngle,SplineSpeed

Renamed: Get/SetZOrder is now called Get/SetLayer (both overlays and sprites)
Renamed: Get/SetMaxLevel is now a called MaxLayers (and is a property on DxIceEngine)
TIP: Engine.Render() will render all Sprites in Layer 0 (starting with the lowest Index) then all in Layer 1, etc. Up to MaxLayers. Keep Layers to a minimum.
if you have some sprites you want to render yourself ( using the new RenderSprite(id) or RenderSpriteRange( , ) ) then you can move them to a layer > MaxLayer.
This way Engine.Render() will not render them ( but will still render the rest)


Changed: The 3D projection and coordinates have been changed.
Now the default is : D3DXMatrixPerspectiveFovLH g_matProj, 45 * PI_DEG, DisplayUsedWidth/ DisplayUsedHeight, 1, 10000
If you render a standard texture to 800x600 with center at LookAt=(0,0,0) where the cam is default looking
and the display used is also 800x600 then it will fill the full display area (ie. just like the 2D coordinates perhaps with a view minor pixel differences)
ResetCam() will set cam to Cam Pos: (0, 0, -724) Angle = 90 and Y Axis up with Cam Flatten = 0

Tip: Splines on a sprite can can be used as coordinates for a 3DMesh

Removed: IceLoops ( too difficult to use )
Removed: DBVertexGroup ( too difficult to use. Also its better to use real 3D )



v1.81
Add: Log improved
Add: Separate Render functions for Sprite etc. first attempt at splitting up Render() to give more control over sequence in rendering.
Examples are : RenderUpdate() RenderSprite(id) RenderSpriteRange( SP_start, SP_end)
Add: sub IceDraw.ClearManagedTextureMemory() 
Add: fucntion IceDraw.GetAvailableTextureMemory() as long.

Fix: Spline with continues loops ( start and end coords are the same)
Fix: Spline RotateToDirection.

Tip: Splines on a sprite can can be used as coordinates for a 3DMesh

----------


## Jenner

Nice work DracullSoft!  This game engine is getting pretty nice!  Are there any plans to move it to DX10 or 11 or do you want to keep it viable for WinXP a little while longer?

----------


## DracullSoft

Thanks Jenner. No we have no plans for DX10 or 11. Currently it runs on XP ( and earlier as far down as Dx9 goes) and vista, win7 (and even win 2008 and virtualized though performance is down)

----------


## Jenner

Yea, the only reason I ask is I recently tried to play a DX8.1 game in Win7 and it was awful because everything before DX9 is emulated now via software.  I was a little worried about Microsoft's plans for the longevity of the DX9 system.

----------


## DracullSoft

dx is upgrading and at one time it will be neccesary to move to dx 11 or 12 and we will do it if possible - but thats a worry for the next gen.  Eventually even microsoft OS will have logevity problems  :Smilie:

----------


## DracullSoft

Two new great features added. :Roll Eyes (Sarcastic): 

Tween -  ei. smooth & casual motion path ala flash. With a new Tween Tool with source code in VB.NET and VB6
BlurLayer - BlurLayer Action is the "cheapest".. then dift, blursoft, blurmed, blurhard.
Gives incredible eye-candy both in action games and when used with IceFX you can really get some nice trails or multiply your particles with 4-10 times with very little overhead. Also some fx like "fireworks" can be made much more real


*new in V1.88*
Add: Ice2D TweenTool with source code both in VB6 and VB.Net 2010 as reference for Tweens and BlurLayer
Including examples of Custom Tweeners "TweenerCircleSprite" and custom TweenEvent Handler "TweenEvHandler"
Add: Class BlurLayer for Action Stamp and Blur trails. Layer has the following algorithms: FadeColor and FadeTimes can be set
Action 0, BlurSoft 1, BlurMed 2, BlurHard 3 Static 4, 
Keep 5, KeepBlur 6, XBlurSoft 7, XBlurMed 8, XBlurHard 9, Drift 10, DriftMore 11
Add: IceTween for easy use of Tween on Sprites and Custom object management.
Add: Classes Tween, TweenManager, TweenGroup and interfaces ITweenable, ITweenEvent
Tween have great flexibility and can make the nice Flash-like motion paths
Tween supports instruction / call chaining.
Tween has the following algorithms implemented:
Linear_TF BounceIn_TF, BounceOut_TF, BounceInOut_TF
ElasticIn_TF , ElasticOut_TF, BounceInOut_TF SpringOut_TF,
BackIn_TF, BackOut_TF, BackInOut_TF
CircIn_TF , CircOut_TF, CircInOut_TF, 
SineIn_TF, SineOut_TF, SineInOut_TF
QuartIn_TF , QuartOut_TF, QuartInOut_TF, 
BackEIn_TF, BackEOut_TF, BackEInOut_TF
some bug fixes

----------


## Waxy

404 error to the first link given: http://gamedev.digiapp.com
you may want to edit/update that first post's link.

----------


## DracullSoft

Yes, Ice2D Game Engine has moved to a new home  :Smilie: .

Links updated 
Cheers

----------


## Dabeisen

I cannot register on that page. No activation mail is sent. Any ideas?
Please help.

----------


## Dabeisen

My account on your site is "dabeisein"

----------


## DracullSoft

Hi Dabeisen,

The email authentication is not needed anymore.

It was a misconfiguration on my part. Sorry about that.
It should be open now

----------


## DracullSoft

New version v1.90

Resource file "Ice2D.Pak"   replaces old  "DxIce110.Pak"
Included .NET interop libs 
Included vb2010.NET template of the tween tool: Ice2DTweenTool_v190_VB2010_v1.zip
Included an executable build of the CS2010.net build of the Warp Game
Included TweenTool VB6 and executable

[Add 1.90] Fast thumbnail screenshots 
[Fixed 1.90] Text placed at twice the coordinates. if TextPosXY is used 
[Fixed 1.90] FX behave differently depending on FPS 
[Add 1.90] BlurLayer Enhancements 
[Add 1.90] BlurScreen method  
[Add 1.90] BlurLayer blit with blendmodes 
[Add 1.90] Improve SplineIndex management 
[Add 1.90] [Info] On Device Lost  

A few changes 

IceSprite.Load    now has 2 new arguments   Optional ByVal SpriteId as long = 0,  Optional ByVal IdNum As Long = -1
 If  SpriteId > 0 this id will be reused but the sprite will be setup again ( as DBSprite.Setup).
 If IdNum <> -1 then DBSprite.SetIdNum is called.

IdNum is typically used to mark sprites that belong to the same functional area. This will make it easier to find these sprites again using the Find..() methods of IceSprite interface. By default all Sprites has IdNum = 0 unless specified or changed using DBSprite.SetIdNum 

Possible breaking change ( argument order changed so you need to review your statements)
DBTexture.Load  now has an Optional ByVal textureId As Long = 0    If  textureId is > 0  the old texture will be released and the id will be reused to load the texture, perhaps with a different filename. 

v 1.89
[Add1.89][Request] Improve management of Texts in IceFont 
[Add1.89][Request] Keep game running when window loses focus 
[Fix1.89] MouseHoverText to use IceFont text 
[Add1.89][Request]TextChar.... methods in IceFont
[Add1.89][Request] optional TextId argument to TextSetup to make it easy to reuse Ids

Cleaned up some unused methods in DBSprite and DBOverlay  ( most LL LB UL UB methods was never really good )

----------


## DracullSoft

Now on indieDB.com
http://www.indiedb.com/engines/ice-2d-game-engine

*Arcade Machine with Ice2D Game Engine + Kinetics camera* 
An arcade machine had a build in kinetics camera (normally used for xbox 360) that was interfaced with Ice2D to target the special Gun and to show the live image of the players as a background in the game. Ice2D itself saved the images from the game - there are many hundres posted on FB  - very cool

----------


## DracullSoft

Users have indicated that Ice2D works great in Windows 8 64bit with VB.NET 2012  :Smilie: 
(havn't yet tested it myself - since i only have VB.net2010 express and Win7)

----------


## DracullSoft

DxIce Engine SDK v2.00

To get started download the SDK http://www.ice2D.com , refer to the samples, Use the Game Templates for .NET, Read the forum, Read and contribute to the Wiki http://www.ice2d.com/wiki/



*Requirements:
*DirectX 9c (aug.2009 or newer): d3d9.dll, d3dx9_42.dll, d3d8thk.dll, dinput8.dll, (dsound.dll for bass.dll)
(DirectX compatible graphics card )
(DirectX 3 compatible sound card)

Windows XP, Windows Vista, Win7, Win8 pro (not the RT) 

*Development tools
*VB.NET 2010 express or C#.NET 2010 express or VB6 or other COM enabled windows tool


*Ice2D v200: Summer 2013*
[Add 2.00] IceVideo interface to render video (no sound) to textures
[Add 2.00] IceVideo interface to render from input image devices (webcams) to textures
[Add 2.00] IceSprite added spline management to add and remove splines
[Add 2.00] VideoPlay example of Video and WebCam on Texture
[Add 2.00] Sprite Template for VB.NET 2010 - Very simple game shell
+ fixes

*App / Examples in .NET2010*
Ice2DWarp2.00v1CS2010.NET         :  Ice2D Game Engine v2.0 - Warp Game Template v1
Ice2DWarp2.00v1VB2010.NET          :  Ice2D Game Engine v2.0 - Warp Game Template v1
Ice2DSprite2.00v1VB2010.NET         :  Ice2D Game Engine v2.0 - Sprite Template v1
Ice2DTweenTool2.00v1VB2010.NET  :  Ice2D Game Engine v2.0 - Tween Tool v1

*App / Examples in VB6 (most are easy to translate to .NET if you have VB.net 2008 you can automate )*
  VideoPlay: Demonstration of Video playback on Texture and Webcam capturing to Texture in realtime.
  TweenTool: The Newest Tool to show amazing tween and blurlayer
  Benchmark: how many sprites?
  IsoGame: Isometric view game with knight walking.
  IsoEdit: Simple editor to make Isometric game maps
  3DApp: Showing Simple 3D cut scene features
  AirHockey: Extended Sample Game with multi game scenes 
  YASS: Yet Another Space Shooter
  TilerMovie: IceTiler and IceMovie tutor
  SampleA: Bobles
  SampleB: IceFont Test
  SampleC: Sprite Robot Test
  DrawFormSample: Very minimal drawing sample. (only a Form and a Bas module) - no game scene manager etc.
  BouncingBeachBallSample: Form with Picturebox rendering. IceAnimation for easy sprite animation. TextType feature.
  SampleD: logo with blend effect
  3DAppLight: Another 3D scene with a low poly DUCK with dynamic light and other features like texture copystretch. Added waypoints to mesh.
  SceneTransition: Stencil enabled Render to Target with various technics displayed in SceneB (spacebar to change scene). Also show reusing texture indexes and unloading / reloading of textures.

----------


## Kyodai

Can someone upload the SDK somewhere? The ICE2D forum simply never sends me the activation code via email and i dont see any other way to get the SDK. Very annoying!

----------


## DracullSoft

Hi - The forum is shutdown due to spam bots
Direct download link is 
Ice2DSDK200

----------


## mikeva1

Firefox can't find the server at www.ice2d.com.
Is there any other sources for getting this?

----------


## DracullSoft

> Firefox can't find the server at www.ice2d.com.
> Is there any other sources for getting this?


The site was closed.
The SDK can be found here: http://1drv.ms/1MnTehw

----------


## anumkhan

hi im anum khan I enjoyed this class because the modules were easy to read and follow along. The assessment was challenging but not overly difficult.Game designg is very interesting . you can develop many things about games & different Entertainment

----------


## DracullSoft

Tested the project tempates for Ice 2D  with visual studio 2013 - pleased to report they are all working both vb.net and c#  :Smilie:

----------


## aswanmatt

nice

----------


## xman2000

> The site was closed.
> The SDK can be found here: http://1drv.ms/1MnTehw


hi, link is broken, please new link to download ice2D sdk.  
thanks.

----------


## Muhammed Eid

Thank you

----------

