Please e-mail for this version if you want it
Bugs fixed in this release
==========================
Sprite003: friction is now working
Engine007: GetFirstSpriteOfThisType() now works
Engine008: RemoveFirstSpriteOfThisType() now works
Engine009: KillFirstSpriteOfThisType() now works
Some proper testing would help !
EventManager003: non auto reset timers are now elapsed correctly, this was fixed with changes mentioned below to timer logic
EventManager004: events are properly reset when added to the EventManager after previously being added and removed.
Changes in this release
=======================
SpriteDebug
-----------
added - storedInt, this will display the contents of the StorageInt property of the sprite
Event
-----
added - AutoReset, this property is true by default and forces the event manager to reset a timer if it was checked using Elapsed and has elapsed. If you set it to false the timer will remain elapsed until you manually reset it.
EventManager
------------
added - TimerStringLinesReturn, this returns all active timer names on a separate line
removed - AutoReset, this didn't make sense as a global setting so has now been refactored individually for each event
EngineManager
-------------
added - SpriteDebug.storeInt support to sprite debugging
FontBank
--------
added - new font vector, which contains a vector style font as used in games such as asteroids, starwars etc... You will need to use the new FontSheet.png file in order to take advantage of this font. (Remember its white text on a transparent tile so when you download it it will look invisible in the browser, so right click and save as a PNG)
Limit
-----
added - Activate(), forces the limit box to be active, this should only be needed in exceptional circumstances.
Sprite
------
added - StorageInt, to allow the storage of an integer value
fixed - After all the major changes I hadn't realised that certain updates of the sprite were happening even when it shouldn't
fixed & adjusted - Friction is now a scalar quantity (a single value rather than a Vector3), 0 means no friction.
removed - ApproximateSpeed, use SpriteHelper.ApproximateSpeed() instead as this actually works!
Tuesday, 29 December 2009
Sunday, 20 December 2009
Engine3.13 released
I am unable to upload the dll file to googledocs (I don't think it likes accepting executable code), I am looking for a free hosting service that will accept the dll's, but for the time being if you want the files please e-mail ebarwell@palmers.ac.uk and I'll e-mail it to you directly.
There is still a problem with rendering errors if losing graphics device state I have put some code in to fix things but I can still get errors when forcing the graphics card to Change between one and two monitors (this should not be a problem). Can you test 3.13 going into full screen mode and post a comment on this post, so that I can be sure at least that works. If it doesn't I'll have to re-think the renderer.
Bugs fixed in this release
==========================
Sprite002: fixed viewport limit problems. It was caused by the code that checks to see if a viewport is active, it was assuming all sprites were in world coordinate mode rather stupidly.
AnimatedTexture001: fixed animation not changing, it only affected doing a FrameRate after OnDistance. You should now be able to switch a sprite between diferent animation methods no problems.
EventManager002: fixed dozy mistake preventing the returning of event names, the code was set to return the string version of the object type - can't even understand why I wrote it that way - must have been testing something else and forgot to change it back!
EngineManager006: fixed problems when using RemoveAllLayers(), and then adding more layers.
Just leaves the rather very very complicated TileSheet001 :(
Changes in this release
=======================
EngineManager
-------------
added - GetFirstSpriteOfThisType(), this returns a single sprite of the type given, this is useful if you know you have one particular sprite of a type that you need to manipulate.
added - RemoveFirstSpriteOfThisType(), this will remove the first occurence of a sprite with the given type.
added - KillFirstSpriteOfThisType(), this will kill (and hence launch any funeral handler) the first occurence of a sprite with the given type.
LayerManager
------------
added - RemoveLayer(), this allows you to remove an individual layer from the layermanager. It may be preferable to just hide an existing layer tho'
There is still a problem with rendering errors if losing graphics device state I have put some code in to fix things but I can still get errors when forcing the graphics card to Change between one and two monitors (this should not be a problem). Can you test 3.13 going into full screen mode and post a comment on this post, so that I can be sure at least that works. If it doesn't I'll have to re-think the renderer.
Bugs fixed in this release
==========================
Sprite002: fixed viewport limit problems. It was caused by the code that checks to see if a viewport is active, it was assuming all sprites were in world coordinate mode rather stupidly.
AnimatedTexture001: fixed animation not changing, it only affected doing a FrameRate after OnDistance. You should now be able to switch a sprite between diferent animation methods no problems.
EventManager002: fixed dozy mistake preventing the returning of event names, the code was set to return the string version of the object type - can't even understand why I wrote it that way - must have been testing something else and forgot to change it back!
EngineManager006: fixed problems when using RemoveAllLayers(), and then adding more layers.
Just leaves the rather very very complicated TileSheet001 :(
Changes in this release
=======================
EngineManager
-------------
added - GetFirstSpriteOfThisType(), this returns a single sprite of the type given, this is useful if you know you have one particular sprite of a type that you need to manipulate.
added - RemoveFirstSpriteOfThisType(), this will remove the first occurence of a sprite with the given type.
added - KillFirstSpriteOfThisType(), this will kill (and hence launch any funeral handler) the first occurence of a sprite with the given type.
LayerManager
------------
added - RemoveLayer(), this allows you to remove an individual layer from the layermanager. It may be preferable to just hide an existing layer tho'
Monday, 14 December 2009
Engine3.12 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 12:15 PM 14th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
Menu001: fixed tag track problem
Changes in this release
=======================
EngineManager
-------------
removed - RebuildLayerBatches(), you don't need this in your code anymore, the LayerManager now sorts this out for you. When you get build errors deleting this line in your code. Template updated accordingly.
TrackHelper
-----------
removed - Draw(), use EngineManager method TrackDisplayOn() instead [e.g. engineM.TrackDisplayOn(track, num points);]
added - SpeedForTime(), calculates the speed required to traverse the given track in the time quoted.
This version will be live by 12:15 PM 14th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
Menu001: fixed tag track problem
Changes in this release
=======================
EngineManager
-------------
removed - RebuildLayerBatches(), you don't need this in your code anymore, the LayerManager now sorts this out for you. When you get build errors deleting this line in your code. Template updated accordingly.
TrackHelper
-----------
removed - Draw(), use EngineManager method TrackDisplayOn() instead [e.g. engineM.TrackDisplayOn(track, num points);]
added - SpeedForTime(), calculates the speed required to traverse the given track in the time quoted.
Thursday, 10 December 2009
Engine3.11 released
Expect more changes to come quickly to start with as bugs are found.
Major update affecting Layers (still need to sort out TileSheet001 - fix coming soon) + need to add layer alignment to help take advantage of new cool stuff and also the rotation origin needs some work as when scaling it has potentially undesirable effects. (As I'm typing an idea that might work came into my head - it'll might make it into the next release).
This version will be live by 9 AM 11th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
Sprite001: relaxed HistorySampleRate it can be much higher now, see below:
EngineManager005: sorted out Engine Debug output so it only shows items requested (not bin and collision stuff always)
Changes in this release
=======================
EngineManager
-------------
added - scale, rotation and rotation centre information to layer debug output
removed - RebuildLayerBatches(), re-worked the LayerManager to automatically run this for you
adjusted - SpriteDebug.Track now displays track index as well as track name
TileSheet
------------
added - CreateMatrix, if set to true the TileSheet will create a rotation and scaling matrix for you based on RotationOrigin, ScaleFactor and RotationAngle
added - RotationAngle, lets you set the rotation angle of the Tilesheet
added - ScaleFactor, allows you to specify the scaling of the Tilesheet (extra tiles are dropped or drawn accordingly)
added - RotationOrigin, this will work in conjuction with the above
added - DisplayMatrix, this allows you to manually specify a matrix for scaling and rotation of the layer
Sprite
---------
adjusted - HistorySampleRate, was clamped at 0.02 (50 times a second) reduced the clamp to 0.0005 (2000 times a second) can't reach this as game won't run that first.
TrackManager
------------
added - TrackCurrent, allows you to get or set the current track being travelled, use with extreme caution. You should let the TrackManager deal with the tracks, but this may be useful for advanced track work beyond the engines ability.
VideoManager
------------
added - VideoManager(), creates a video manager with the video content specified
added - PlayVideoOnce(), plays a video previously associated with the videomanager once only
added - PlayVideoLoop(), plays a video previously associated with the videomanager forever
Major update affecting Layers (still need to sort out TileSheet001 - fix coming soon) + need to add layer alignment to help take advantage of new cool stuff and also the rotation origin needs some work as when scaling it has potentially undesirable effects. (As I'm typing an idea that might work came into my head - it'll might make it into the next release).
This version will be live by 9 AM 11th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
Sprite001: relaxed HistorySampleRate it can be much higher now, see below:
EngineManager005: sorted out Engine Debug output so it only shows items requested (not bin and collision stuff always)
Changes in this release
=======================
EngineManager
-------------
added - scale, rotation and rotation centre information to layer debug output
removed - RebuildLayerBatches(), re-worked the LayerManager to automatically run this for you
adjusted - SpriteDebug.Track now displays track index as well as track name
TileSheet
------------
added - CreateMatrix, if set to true the TileSheet will create a rotation and scaling matrix for you based on RotationOrigin, ScaleFactor and RotationAngle
added - RotationAngle, lets you set the rotation angle of the Tilesheet
added - ScaleFactor, allows you to specify the scaling of the Tilesheet (extra tiles are dropped or drawn accordingly)
added - RotationOrigin, this will work in conjuction with the above
added - DisplayMatrix, this allows you to manually specify a matrix for scaling and rotation of the layer
Sprite
---------
adjusted - HistorySampleRate, was clamped at 0.02 (50 times a second) reduced the clamp to 0.0005 (2000 times a second) can't reach this as game won't run that first.
TrackManager
------------
added - TrackCurrent, allows you to get or set the current track being travelled, use with extreme caution. You should let the TrackManager deal with the tracks, but this may be useful for advanced track work beyond the engines ability.
VideoManager
------------
added - VideoManager(), creates a video manager with the video content specified
added - PlayVideoOnce(), plays a video previously associated with the videomanager once only
added - PlayVideoLoop(), plays a video previously associated with the videomanager forever
Stupid world size error in template (and hence your code)!
There is a calamitous error in the setup code (only just been spotted). This won't effect you until you try to use the collision system.
The lines to adjust are found in the Statup() subroutine found in GeneralLogic.cs
Just make sure the WorldHeight is set to the Y res and the WorldWidth is set to the X res.
Sorry about this and thanks to:
Dan Cotton
Richard Brinkley
for originally spotting this problem.
The lines to adjust are found in the Statup() subroutine found in GeneralLogic.cs
private void Startup()
{
//make sure tracks are defined before using them
CreateTracks();
//engine settings (can be changed)
engineM.ScreenColour = Color.Black;
engineM.WorldHeight = resolutionX;//<- should be resolutionY
engineM.WorldWidth = resolutionY; //<- should be resolutionX
{
//make sure tracks are defined before using them
CreateTracks();
//engine settings (can be changed)
engineM.ScreenColour = Color.Black;
engineM.WorldHeight = resolutionX;//<- should be resolutionY
engineM.WorldWidth = resolutionY; //<- should be resolutionX
Just make sure the WorldHeight is set to the Y res and the WorldWidth is set to the X res.
Sorry about this and thanks to:
Dan Cotton
Richard Brinkley
for originally spotting this problem.
Tuesday, 8 December 2009
Engine3.10 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 1PM 08th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
EngineManager004: re-worked sprite layer rendering code in Engine.
Changes in this release
=======================
Animation
---------
adjusted - OnAnimate(), now called before animation changes, this enables you to check what the last frame was before it is about to change
EngineManager
-------------
renamed - GetThisTypeAs() becomes GetThisType() as the name was stupid
TileSheet
---------
renamed - Displacement becomes DisplaceCurrentPosition as this better describes its function as it alters the scroll position of the layer
- Don't get confused with DrawOffset as this alters the draw position of the layer.
This version will be live by 1PM 08th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Bugs fixed in this release
==========================
EngineManager004: re-worked sprite layer rendering code in Engine.
Changes in this release
=======================
Animation
---------
adjusted - OnAnimate(), now called before animation changes, this enables you to check what the last frame was before it is about to change
EngineManager
-------------
renamed - GetThisTypeAs() becomes GetThisType() as the name was stupid
TileSheet
---------
renamed - Displacement becomes DisplaceCurrentPosition as this better describes its function as it alters the scroll position of the layer
- Don't get confused with DrawOffset as this alters the draw position of the layer.
Monday, 7 December 2009
Engine3.09 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 07th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
Animation
---------
added - QuickDistance(), this allows you to setoff a single set of animation (based on an action), that will allow animation to carry on as it was before when it has finished.
added - QuickDistanceRestart(), this allows you to setoff a single set of animation (based on an action), that will restart the previous animation when it has finished.
added - LoopCount, keeps track of how many times animation has looped, works well in conjuction with OnAnimate()
added - OnAnimate(), this allows you to call a subroutine which will be called after every animation frame change occurs
some name refactoring to make more sense, if you have errors because of this just rename:
renamed - FrameFirst becomes FirstFrame
renamed - FrameLast becomes LastFrame
renamed - FrameActive becomes ActiveFrame
TextManager
------------
added - DrawAsSprites(), this allows you to specify static text for display. You don't need to keep drawing this from the gameloop (if you do you will generate loads of sprites)
added - SpriteGenerateTextAsFrames(), this create a sprite whose frames are each of the characters of the supplied text, this sprite can then be used for signage effects (especially when used with tracks or AnimateOnDistance) - I'll put an example of the help blog
TextStore
---------
fixed - 002: Sprite attributes are now correctly applied to sprite text or typewriter text.
---------
xml Comments completed for
TextManager
BaseSprite
Box
Bin
AnimatedTexture
Animation
ColourHelper
This version will be live by 9AM 07th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
Animation
---------
added - QuickDistance(), this allows you to setoff a single set of animation (based on an action), that will allow animation to carry on as it was before when it has finished.
added - QuickDistanceRestart(), this allows you to setoff a single set of animation (based on an action), that will restart the previous animation when it has finished.
added - LoopCount, keeps track of how many times animation has looped, works well in conjuction with OnAnimate()
added - OnAnimate(), this allows you to call a subroutine which will be called after every animation frame change occurs
some name refactoring to make more sense, if you have errors because of this just rename:
renamed - FrameFirst becomes FirstFrame
renamed - FrameLast becomes LastFrame
renamed - FrameActive becomes ActiveFrame
TextManager
------------
added - DrawAsSprites(), this allows you to specify static text for display. You don't need to keep drawing this from the gameloop (if you do you will generate loads of sprites)
added - SpriteGenerateTextAsFrames(), this create a sprite whose frames are each of the characters of the supplied text, this sprite can then be used for signage effects (especially when used with tracks or AnimateOnDistance) - I'll put an example of the help blog
TextStore
---------
fixed - 002: Sprite attributes are now correctly applied to sprite text or typewriter text.
---------
xml Comments completed for
TextManager
BaseSprite
Box
Bin
AnimatedTexture
Animation
ColourHelper
Friday, 4 December 2009
Engine3.08 released
Minor but important update
This version will be live by 9AM 04th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
LayerManager
------------
added - RemoveAllLayers(), this removes all active layers from the manager. This is important so that unwanted layers are removed when switching between different gamestates.
This version will be live by 9AM 04th December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
LayerManager
------------
added - RemoveAllLayers(), this removes all active layers from the manager. This is important so that unwanted layers are removed when switching between different gamestates.
Wednesday, 2 December 2009
Engine3.07 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 02nd December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
fixed 003 - Rectangle debug information now sensible
EventManager
------------
fixed 001 - (hopefully) ReturnValueForFrame, adjusted so this won't ever return a divide by zero problem
fixed 002 - Viewport wrapping, for sprites in ViewPort co-ordinate mode now works!
FontBank
--------
adjustment- altered visibility of some objects so you should only see the fonts and the font texture.
FontSprite
----------
added - FontSprite(charset, height), simplified font definition so that you only specify character set and height of font during initial definition.
TextManager
-----------
fixed 001 - stopped crashing when attempting to draw unsupported characters, will skip illegals.
This version will be live by 9AM 02nd December 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
fixed 003 - Rectangle debug information now sensible
EventManager
------------
fixed 001 - (hopefully) ReturnValueForFrame, adjusted so this won't ever return a divide by zero problem
fixed 002 - Viewport wrapping, for sprites in ViewPort co-ordinate mode now works!
FontBank
--------
adjustment- altered visibility of some objects so you should only see the fonts and the font texture.
FontSprite
----------
added - FontSprite(charset, height), simplified font definition so that you only specify character set and height of font during initial definition.
TextManager
-----------
fixed 001 - stopped crashing when attempting to draw unsupported characters, will skip illegals.
Thursday, 26 November 2009
Engine3.06 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 27th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
fixed - TrackDisplayOn(), integer arithmetic bug on history stepper
added - TrackDisplayOn(trackDefintion, number of points), this allows you to specify how many points are displayed on the track. Do no use excessive numbers as this will kill draw speed, use enough to see your track clearly. You can still use TrackDisplayOn(trackDefinition) for default number of points displayed.
Note: I will be depreciating TrackHelper.Draw() as this is a repeat of this code with complications.
Sprite
---------
altered - Update(), so it records the last position of the sprite once its started updating. The last position is only recorded when a sprite is updated.
fixed - last position, used to rely on history positions as all sprites generated at least 2 history positions. I forgot that I removed this feature so implemented a lst position.
SpriteHelper
------------
fixed - RotateFacingVelocity(), using fix for last position of sprite
fixed - RotateFacingDirectionMoving(), using same fix as above.
added - ScaleToThisSize(), calculates scale factors to change a sprite to fill a rectangle (you can calculate this yourself tho')
added - ScaleToThisWidth(), calculates X scale of sprite to match the width given, keeps aspect ratio the same so scales Y accordingly.
added - ScaleToThisHeight(), calculates Y scale of sprite to match height given, keeps aspect ratio the same so scales X accordingly
This version will be live by 9AM 27th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
fixed - TrackDisplayOn(), integer arithmetic bug on history stepper
added - TrackDisplayOn(trackDefintion, number of points), this allows you to specify how many points are displayed on the track. Do no use excessive numbers as this will kill draw speed, use enough to see your track clearly. You can still use TrackDisplayOn(trackDefinition) for default number of points displayed.
Note: I will be depreciating TrackHelper.Draw() as this is a repeat of this code with complications.
Sprite
---------
altered - Update(), so it records the last position of the sprite once its started updating. The last position is only recorded when a sprite is updated.
fixed - last position, used to rely on history positions as all sprites generated at least 2 history positions. I forgot that I removed this feature so implemented a lst position.
SpriteHelper
------------
fixed - RotateFacingVelocity(), using fix for last position of sprite
fixed - RotateFacingDirectionMoving(), using same fix as above.
added - ScaleToThisSize(), calculates scale factors to change a sprite to fill a rectangle (you can calculate this yourself tho')
added - ScaleToThisWidth(), calculates X scale of sprite to match the width given, keeps aspect ratio the same so scales Y accordingly.
added - ScaleToThisHeight(), calculates Y scale of sprite to match height given, keeps aspect ratio the same so scales X accordingly
Tuesday, 24 November 2009
Engine3.05 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 25th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
Sprite
---------
fixed - Update(), stupid bug that stopped animation from updating if only 2 frames defined!!
improved - SpriteDebug.physical, added Gravity and Friction properties to go along with Mass
TileSheet
---------
fixed - Draw(), bug that tried to draw tilesheets with undefinded areas (no tiles present)
I am currently working on a substantial re-write to the tiling and rendering of tilesheets that will fix a lot of remaining issues with them.
This version will be live by 9AM 25th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
Sprite
---------
fixed - Update(), stupid bug that stopped animation from updating if only 2 frames defined!!
improved - SpriteDebug.physical, added Gravity and Friction properties to go along with Mass
TileSheet
---------
fixed - Draw(), bug that tried to draw tilesheets with undefinded areas (no tiles present)
I am currently working on a substantial re-write to the tiling and rendering of tilesheets that will fix a lot of remaining issues with them.
Monday, 23 November 2009
Engine3.04 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 23rd November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
added - resAndWorld to Debug settings, this shows the current resolution and the current world dimensions.
adjusted - physical implementations of layers to simplify internal structures.
GravityWell
-----------
adjusted - GravityWell() mass is now specified in GigaTonnes (billion kilograms) to reflect changes to point mass gravity simulation.
TextureProcessor
----------------
added - MassFromPixels(), counts the number of non transparent pixels in either the given sprites current frame or in the given texture and rectangular region given. This will only work for textures that were loaded through the TextureProcessor.
This version will be live by 9AM 23rd November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release
=======================
EngineManager
-------------
added - resAndWorld to Debug settings, this shows the current resolution and the current world dimensions.
adjusted - physical implementations of layers to simplify internal structures.
GravityWell
-----------
adjusted - GravityWell() mass is now specified in GigaTonnes (billion kilograms) to reflect changes to point mass gravity simulation.
TextureProcessor
----------------
added - MassFromPixels(), counts the number of non transparent pixels in either the given sprites current frame or in the given texture and rectangular region given. This will only work for textures that were loaded through the TextureProcessor.
Wednesday, 18 November 2009
Engine3.03 released
Expect more changes to come quickly to start with as bugs are found.
This version will be live by 9AM 19th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release include:
EngineManager
=============
altered - altered the way sprite layers are managed and rendered, this now allow you 4 independant sprite layers as well as a HUD and SpriteText layer. Sprites by default are assigned to layer0 which is rendered first, but you can opt for layer1, layer2 or layer3 (being the last of the four sprite layers rendered)
This has a knock on effect for layer displacement, a mechanism that can shift all items beloning to a layer - perfect for shake effects
---
removed - DisplaceHUDLayer
removed - DisplaceSpriteLayer
removed - DisplaceSpriteTextLayer
removed - DisplaceTextLayer
added - SpriteLayerOffset(), specifies an amount to offset the position of all sprites or text on the layer specified
added - SpriteLayerDisplace(), specifies an amount to add on to the current offset position of the layer specified
added - SpriteLayerGetOffsetX(), gets the X value of the given layer offset
added - SpriteLayerGetOffsetY(), gets the Y value of the given layer offset
added - SpriteLayerGetOffset(), gets the offset for the given layer
--
added - TrackDisplayOn(), this does the same as the Draw() method of the TrackHelper, but only requires a track reference, so it looks neater
added - TrackDisplayOff(), this will remove a track that is currently being displayed. if the track isn't being displayed it does nothing.
Event
=====
renamed - SpecifyEventHandler() changes to OnTick()
added - Ticks, property that keeps track of number of timers an event has elapsed
added - TimeRemaining, property for debugging purposes that tells you how many seconds are remaining for those events that have a time limit
added - OnKilled(), lets you specify a subroutine to call if the EventManager kills your event. This will happend if you added it to the EventManager using either AddEventRaiseUntil() or AddEventRaiseOnce(). This is perfect for shake effects or for countdown events such as highscore entry, you would have a one second event to keep track of the time and have OnKilled run a subroutine when time say 30 seconds elapses, this can leave the high score entry screen.
EventManager
============
added - AddEventRaiseUntil(), this lets you specify a number of seconds that an event is to be active before being automatically removed, useful for shake effects after large explosions (for instance you may have a boss sprite on a separate layer to all other sprites and want this to shake for a couple of seconds when you have done a serious bit of damage)
Enum changes
============
renamed - SpriteDebugInfo changes to SpriteDebug
renamed - CollisionAction.alignMovingBounce changes to CollisionAction.movingBounce
completed - all enums are now fully xml commented, that's 1750 lines of code sorted phew !
Alignment
AnimationMethod
Bin.Type
CollisionAction
CollisionMethod
CollisionMultiHit
CollisionState
CollisionType
CoordinateSystem
DeathAction
Debug
Direction
DirectionAccuracy
EndOfTrackAction
EnergyBarDirection
Fade
FrameDirection
GravitySystem
LastFrameAction
LayerType
LimitAction
MenuSelectMode
MenuType
MovementMode
Shape
Side
SpriteDebug
SpriteType
TagAlign
TagDisplay
TrackStepMode
just another 19000 lines of code to go in 61 class files :(
This version will be live by 9AM 19th November 2009
Template will be updated accordingly and so will the dll and xml files on the student shared game programming resources folder
Changes in this release include:
EngineManager
=============
altered - altered the way sprite layers are managed and rendered, this now allow you 4 independant sprite layers as well as a HUD and SpriteText layer. Sprites by default are assigned to layer0 which is rendered first, but you can opt for layer1, layer2 or layer3 (being the last of the four sprite layers rendered)
This has a knock on effect for layer displacement, a mechanism that can shift all items beloning to a layer - perfect for shake effects
---
removed - DisplaceHUDLayer
removed - DisplaceSpriteLayer
removed - DisplaceSpriteTextLayer
removed - DisplaceTextLayer
added - SpriteLayerOffset(), specifies an amount to offset the position of all sprites or text on the layer specified
added - SpriteLayerDisplace(), specifies an amount to add on to the current offset position of the layer specified
added - SpriteLayerGetOffsetX(), gets the X value of the given layer offset
added - SpriteLayerGetOffsetY(), gets the Y value of the given layer offset
added - SpriteLayerGetOffset(), gets the offset for the given layer
--
added - TrackDisplayOn(), this does the same as the Draw() method of the TrackHelper, but only requires a track reference, so it looks neater
added - TrackDisplayOff(), this will remove a track that is currently being displayed. if the track isn't being displayed it does nothing.
Event
=====
renamed - SpecifyEventHandler() changes to OnTick()
added - Ticks, property that keeps track of number of timers an event has elapsed
added - TimeRemaining, property for debugging purposes that tells you how many seconds are remaining for those events that have a time limit
added - OnKilled(), lets you specify a subroutine to call if the EventManager kills your event. This will happend if you added it to the EventManager using either AddEventRaiseUntil() or AddEventRaiseOnce(). This is perfect for shake effects or for countdown events such as highscore entry, you would have a one second event to keep track of the time and have OnKilled run a subroutine when time say 30 seconds elapses, this can leave the high score entry screen.
EventManager
============
added - AddEventRaiseUntil(), this lets you specify a number of seconds that an event is to be active before being automatically removed, useful for shake effects after large explosions (for instance you may have a boss sprite on a separate layer to all other sprites and want this to shake for a couple of seconds when you have done a serious bit of damage)
Enum changes
============
renamed - SpriteDebugInfo changes to SpriteDebug
renamed - CollisionAction.alignMovingBounce changes to CollisionAction.movingBounce
completed - all enums are now fully xml commented, that's 1750 lines of code sorted phew !
Alignment
AnimationMethod
Bin.Type
CollisionAction
CollisionMethod
CollisionMultiHit
CollisionState
CollisionType
CoordinateSystem
DeathAction
Debug
Direction
DirectionAccuracy
EndOfTrackAction
EnergyBarDirection
Fade
FrameDirection
GravitySystem
LastFrameAction
LayerType
LimitAction
MenuSelectMode
MenuType
MovementMode
Shape
Side
SpriteDebug
SpriteType
TagAlign
TagDisplay
TrackStepMode
just another 19000 lines of code to go in 61 class files :(
Monday, 16 November 2009
Engine3.02 released
Still Loads of xml comments still to be written/re-written to reflect all changes. I have updated the template to reflect the recent changes. Expect more changes to come quickly to start with as bugs are found.
Changes in this release
================
TrackHelper
===========
added - full set of xml comments now added so all intellisense and Metadata will show the help I have written
renamed - changed a few of the method names to better reflect their function
added - Draw(), this enables you to see a track on screen, you need to create a simple sprite to show the track positions and store it in the Marker property of the trackDefinition
TrackManager
============
added - AddTrackStartAt() associates a track with a sprite and translates it to the given position. This may be particularly useful for bullet patterns.
Changes in this release
================
TrackHelper
===========
added - full set of xml comments now added so all intellisense and Metadata will show the help I have written
renamed - changed a few of the method names to better reflect their function
added - Draw(), this enables you to see a track on screen, you need to create a simple sprite to show the track positions and store it in the Marker property of the trackDefinition
TrackManager
============
added - AddTrackStartAt() associates a track with a sprite and translates it to the given position. This may be particularly useful for bullet patterns.
xml intellisense now available for Engine3
I have worked out how to allow you access to the xml comments (which drive the intellisense help) embedded in the Engine3 library.
The intellisense will give you access to all the help and guidance information I have included within my code. I will also publish the xml comments as a website (this is how the Dynamic help system works in Visual Studio).
The comments need a little work, but I will post progress in updating them here.
The intellisense will give you access to all the help and guidance information I have included within my code. I will also publish the xml comments as a website (this is how the Dynamic help system works in Visual Studio).
The comments need a little work, but I will post progress in updating them here.
Engine3.01 released
Loads of xml comments still to be written/re-written to reflect all changes
Changes in this release
================
I will always list the changes under the classes that have been affected (I will keep them in alphabetical order)
EngineManager
==========
added - if you show any engine debugging information the version of the engine you are using is displayed.
LayerManager
==========
renamed LayerAdd() to Add() - this will affect Adam and Joe
TextManager
=========
added - TextManager.DrawQuick(), this allows you to draw no frills text, horizontal with colour,scaling and alignment. This is very much faster than the standard text drawing routines (which do a lot of complex formatting and rotating).
developed - Done some speed ups of complex text rendering methods still lots of room for improvement. (edit)
TileSheet
=======
implemented - ScrollScale factor when moving layer with viewport position. This already happened automatically when scrolling was applied to a TileSheet.
investigate - Draw() draws too many tiles still, need to work out full calculation so we can keep tiles drawn to a minimum, this is a problem with non regular size layers
TrackManager
==========
developed - TravelWithSpeed works but needs some work as seems disproportionate with different tracks pixel lengths!
fixed - moving between tracks now works out where you will join a track rather than place the sprite at position 0 (or end position).
Changes in this release
================
I will always list the changes under the classes that have been affected (I will keep them in alphabetical order)
EngineManager
==========
added - if you show any engine debugging information the version of the engine you are using is displayed.
LayerManager
==========
renamed LayerAdd() to Add() - this will affect Adam and Joe
TextManager
=========
added - TextManager.DrawQuick(), this allows you to draw no frills text, horizontal with colour,scaling and alignment. This is very much faster than the standard text drawing routines (which do a lot of complex formatting and rotating).
developed - Done some speed ups of complex text rendering methods still lots of room for improvement. (edit)
TileSheet
=======
implemented - ScrollScale factor when moving layer with viewport position. This already happened automatically when scrolling was applied to a TileSheet.
investigate - Draw() draws too many tiles still, need to work out full calculation so we can keep tiles drawn to a minimum, this is a problem with non regular size layers
TrackManager
==========
developed - TravelWithSpeed works but needs some work as seems disproportionate with different tracks pixel lengths!
fixed - moving between tracks now works out where you will join a track rather than place the sprite at position 0 (or end position).
Friday, 13 November 2009
C# back end database engine started
I have made a start converting my old VB database engine over to C# to use with your websites. This will hopefully (you may need to do some complex things yourselves) enable you to concentrate on the logic and aesthetics code rather than some of the more serious complications.
I will let you have access to it as soon as I have done some more testing.
I will let you have access to it as soon as I have done some more testing.
Engine3.00 and GameTemplate live
I have made available the first version of the new game engine.
This can be found in the game programming resources folder in student shared
Student shared\0Applied ICT\Game programming resources
There are 2 items in this folder of interest
The first is the GameTemplate folder. This entire folder should be copied into your home drive (or onto a USB stick - make sure you make backups of any work on USB sticks!!!!).
The current template is not complete (it needs audio files adding among other things), this will update over the next few days as I bed the template down.
The other file (which is included in the GameTemplate) is Engine3.dll. This file is the compiled version of the game engine. You will only need to access this when I make bug fixes to the engine. I will explain more about that when it happens.
This can be found in the game programming resources folder in student shared
Student shared\0Applied ICT\Game programming resources
There are 2 items in this folder of interest
The first is the GameTemplate folder. This entire folder should be copied into your home drive (or onto a USB stick - make sure you make backups of any work on USB sticks!!!!).
The current template is not complete (it needs audio files adding among other things), this will update over the next few days as I bed the template down.
The other file (which is included in the GameTemplate) is Engine3.dll. This file is the compiled version of the game engine. You will only need to access this when I make bug fixes to the engine. I will explain more about that when it happens.
Tuesday, 10 November 2009
Engine up and running on XBOX 360 !
I have managed to get my new engine library running on the XBOX360.
Done some tests at 1280x720 (720p resolution) throwing around layers and sprites while playing 720p video and it seems to run above 60fps. You could potentially use a video as a background during your game but I wouldn't then draw hundreds of sprites at the same time with collisions.
One performance problems to note is text rendering. The text renderer is quite complex and can do some very complex formatting. There is a massive speed hit on the XBOX360 when drawing even the debug text. I need to investigate the possibility of provided some quick render options for horizontal/rotated text with no complex alignment issues.
I need to do a little more testing (especially viewport scrolling and automatic layer scrolling) and then I should be ready to put together a sample project to get a view alpha testers breaking things.
Done some tests at 1280x720 (720p resolution) throwing around layers and sprites while playing 720p video and it seems to run above 60fps. You could potentially use a video as a background during your game but I wouldn't then draw hundreds of sprites at the same time with collisions.
One performance problems to note is text rendering. The text renderer is quite complex and can do some very complex formatting. There is a massive speed hit on the XBOX360 when drawing even the debug text. I need to investigate the possibility of provided some quick render options for horizontal/rotated text with no complex alignment issues.
I need to do a little more testing (especially viewport scrolling and automatic layer scrolling) and then I should be ready to put together a sample project to get a view alpha testers breaking things.
Wednesday, 4 November 2009
{new engine benchmarks} Current game engine benchmarks
I have completed the 1st phase of the engine re-write and have calculated some benchmarks for those part of the system that are currently working. As soon as the collision engine is up and running I will be able to post the other benchmarks.
*These numbers are dodgy as visual inspection would suggest that the old engine is only drawing a frame every couple of seconds. Also all the sprites are sat on top of each causing over 1, 500, 000 collision checks are performed for each frame.
You can't really expect every game object to interact with every other game object.
The data shows that in terms of drawing and updating speed the new engine is very fast compared to the old one, but text drawing (which happens a lot with bin displays) is still slow. I'll investigate this at a later date.
A few more tests and checks and I'll publish the game engine and a game start template.
| Testing of old game engine 16u7 compared to Engine3 | |||
| Benchmarks with random scrolling layer (800x2000) 640 tiles 252 tiles shown Sprites at 1/3 size 72 pixels down to 21.6 pixels | History recorded | Old Engine | New Engine |
| best fps | best fps | ||
| 210 bouncing sprites bin display | 50 | 175 | 185 |
| 210 bouncing sprites no bin display/collisions | 50 | 197 | 378 |
| 210 bouncing sprites with 50 history (10710 sprites) | 50 | 19 | 30 |
| 210 bouncing sprites with 50 history (10710 sprites) no bin display/collisions | 50 | 19 | 34 |
| 210 bouncing sprites bin display | default (10) | 184 | 188 |
| 210 bouncing sprites no bin display/collisions | default (10) | 196 | 386 |
| 210 bouncing sprites with default history (2310 drawn sprites) bin display | default (10) | 67 | 94 |
| 210 bouncing sprites with default history (2310 drawn sprites) no bin display/collisions | default (10) | 69 | 126 126 |
| 1400 wrapping sprites | default (10) | 88 | 115 |
| 1400 wrapping sprites colliding no display | default (10) | 30 | 36 |
| 8400 wrapping sprites | default (10) | 15 | 19 |
| 4200 wrapping sprites colliding no display | default (10) | 3* | 4 |
| 8400 wrapping sprites colliding no display | default (10) | 2* | 2 |
*These numbers are dodgy as visual inspection would suggest that the old engine is only drawing a frame every couple of seconds. Also all the sprites are sat on top of each causing over 1, 500, 000 collision checks are performed for each frame.
You can't really expect every game object to interact with every other game object.
The data shows that in terms of drawing and updating speed the new engine is very fast compared to the old one, but text drawing (which happens a lot with bin displays) is still slow. I'll investigate this at a later date.
A few more tests and checks and I'll publish the game engine and a game start template.
Thursday, 17 September 2009
XNA Game Engine re-write in progress
Microsoft have recently released version 3.1 of the XNA framework.
This has introduced more networking and XBOX related materials (such as Avatars). One very interesting new feature is the ability to play and control WMV video.
I have played with this and it sort of works, so I will add the ability to the game engine.
I am re-writing the game engine from scratch and it should be available after half term.
I'll keep posting updates in terms of progress here.
Your setup at home needs to be:
- Visual Studio 2008 professional
- XNA Game studio 3.1 (which you can get from here)
Warning if you have game studio 3.0 already installed you must uninstall that before installing 3.1
Tuesday, 14 July 2009
CPU Emulator v0.12
version 0.12 fixes/improvements 13th July 2009
==================================
[new] - Added an adjustable CPU clock to govern the Control Unit. This is adjustable down to 20ms pulses. It can be turned on or off. (it doesn't work at that speed due to Windows re-drawing objects).
[fix] - LDA, LDX, LDY fixed assignment of N and Z bits
[fix] - sorted out symbol table entries, they are now associated with a code page so duplicate symbols can exist across different code pages.
[fix] - Ram is unloaded when a code page is unloaded
[new] - added RAM ownership display in the RAM window (looks naff - preliminary)
==================================
[new] - Added an adjustable CPU clock to govern the Control Unit. This is adjustable down to 20ms pulses. It can be turned on or off. (it doesn't work at that speed due to Windows re-drawing objects).
[fix] - LDA, LDX, LDY fixed assignment of N and Z bits
clarification - BGT Branches if value compared was greater than register
clarification - BLT Branches if value compared was smaller than register
[new] - BGE Branches if value compared was greater than or equal to regiser
[new] - BLE Branches if value compared was smaller than or equal to register
[fix] - sorted out symbol table entries, they are now associated with a code page so duplicate symbols can exist across different code pages.
[fix] - Ram is unloaded when a code page is unloaded
[new] - added RAM ownership display in the RAM window (looks naff - preliminary)
Friday, 10 July 2009
CPU Emulator bug list
Fixes to known bugs/issues
1) STO X(value) writing to address $02) LDA X being recognised as NOP3) RAM and Dissambler window don't show horizontal scrollbar when content to wide5) Symbols are not unloaded when a code page is unloaded, have to quit program6) Multiple code pages cannot have identical labels (duplicate label errors)7) Code is not unloaded when a code page is unloaded
version 0.12 fixes 10th July 2009
==================================
3) RAM and Dissambler window don't show horizontal scrollbar when content to wide - fixed
5) Symbols are not unloaded when a code page is unloaded, have to quit program - fixed (I think), although I haven't fixed point 7 (although I am close to doing this now with the symbol table changes)
6) Multiple code pages cannot have indentical labels (duplicate label errors) - fixed, re-factored symbol table code to associate code pages. Same symbols allowed to exist in different code pages.
7) Code is not unloaded when a code page is unloaded - this now happens all memory addresses allocated are released appropriately on unload.
version 0.11 fixes 10th July 2009
==================================
1) STO X(value) writing to address $0 - fixed
I hadn't implemented Indexed addressing for Write operations!!
2) LDA X - being recognised as NOP - fixed
I was not picking up the register when register addressing mode was used
outstanding bugs/known issues
======================
4) Instruction window just shows instructions and not supported addressing modes
8) Need to re-visit device interface implementation and remove bodges
9) Not rendering negative values in dissambly window properly
please post bug reports by placing a comment on this buglist, check the known bugs/issues first so I can avoid multiple bug reports:
try to describe the fault, what instruction was involved, what the visible outcome was (whether it was a crash or mistake in decoding etc...)
Thursday, 9 July 2009
CPU Emulator v0.1
>The first working version of the Emulator is now in a "working" state, I'm numbering this v0.1 because it isn't really finished.
It is available in the Student shared folder
\students\0AS COMPUTING\
Run the CPU Emulator inside the CPU Emulator folder.
At the moment you only have access to the Emulator exectuable (the finished program) I have produced but next year we will have VS2008 installed and you will have access to the source code written in C#. This project will grow over next year and we will use it to help illustrate many aspects of the 2nd year theory.
Eric
Tuesday, 7 July 2009
CPU Emulator almost done
Hopefully we will be able to use the CPU emulator I have been writting over the last couple of weeks.
It's taken me ages because:
- I don't have much time to get on with coding at the moment
- I am trying to make it so it can be expanded and externded
- I am hoping to use it to demonstrate other things like Scheduling and multi-tasking programs. This will hopefully work by just writing and assembly langugage program for the emulator to do the scheduling!
It is in a far from finished state, and there are a lot of weird things that may happen. You lot will be the official Alpha testers for the system so please leave any comments on the post.
Cheers
Eric
Tuesday, 9 June 2009
Game engine version 016u7 update
Added the following functions for PC only systems which might be quite useful so didn't do a full intermediate update.
---------------------------
FileManager
----------------------------
OpenFilePCImmediate - added, Opens a PC based xml file from any location.
SaveFilePCImmediate - added, Saves a PC based xml file to any location.
---------------------------
FileManager
----------------------------
OpenFilePCImmediate - added, Opens a PC based xml file from any location.
SaveFilePCImmediate - added, Saves a PC based xml file to any location.
Game Engine version 016u7
----------------------------
Sprite
----------------------------
ReleaseQuickAnimation - added, allow you to remove a quick animation before it has finished going back to previous state
Did some optimising of the sprite Update code(won't have much effect on PC side but hopefully does on 360 side). The whole engine is in need of a total re-write to make use of static allocation, but that won't happen until I build the next version over Summer.
----------------------------
PadHelper - new class added
----------------------------
This allows more flexible support for pad button handling.It automatically keeps track of pad state, so you can track accuratelythe status of all buttons on the gamepad. You can still use you're existing code for gamepad handling and timers but if you need easy access to the following functions, you can with just 2 simplemodifications to you're input code.
Status - added, this updates the gamepad status (tracking the history) mimics the GamePad.GetState method currently used.
Pressed - added, this method checks to see if a button not previously pressed has just been pressed. Using this will stop buttons repeating without the use of a timer, as it will only be true if the button was released before being pressed.
Released - added, this method checks to see if a button previously held has just been released. Using this will let you react to a button being let go for instance charging an energy bar (or the jump angle in track & field).
Held - added, this method checks to see if a button held previously is still being held.
----------------------------
KeyHelper - new class added
----------------------------
This allows more flexible support for keyboard handling.It automatically keeps track of keyboard state, so you can track accuratelythe status of all keys in the keyboard. You can still use you're existing code for keyboard handling and timers but if you need easy access to the following functions you can with just 2 simplemodifications to you're input code.
Status - added, this updates the keyboard status (tracking the history) mimics the Keyboard.GetState method currently used.
Pressed - added, this method checks to see if a key not previously pressed has just been pressed. Using this will stop keys repeating without the use of a timer, as it will only be true if the key was released before being pressed.
Released - added, this method checks to see if a key previously held has just been released. Using this will let you react to a key being let go for instance charging an energy bar (or the jump angle in track & field).
Held - added, this method checks to see if a key held previously is still being held.
----------------------------
TrackManager
----------------------------
SpecifyEndTrackHandler - added, this allows you to call an update routine when a sprite reaches the end of a track, so you can take some action
RemoveEndTrackHandler - added, this removes any end of track handler
----------------------------
Menu
----------------------------
reference to EngineManager -added, this enables Show and Hide to work without going through the MenuManager (gameMenus)
Show(), Hide() - added, this can be directly used with a menu object
e.g. optionsMenu.Show();
----------------------------
MenuManager
----------------------------
AddMenu - altered, to pass a reference to the EngineManager to each menu. The MenuManager is now just responsible for updating all the menus, everything else is now the responsiblity of the menus directly.
Sprite
----------------------------
ReleaseQuickAnimation - added, allow you to remove a quick animation before it has finished going back to previous state
Did some optimising of the sprite Update code(won't have much effect on PC side but hopefully does on 360 side). The whole engine is in need of a total re-write to make use of static allocation, but that won't happen until I build the next version over Summer.
----------------------------
PadHelper - new class added
----------------------------
This allows more flexible support for pad button handling.It automatically keeps track of pad state, so you can track accuratelythe status of all buttons on the gamepad. You can still use you're existing code for gamepad handling and timers but if you need easy access to the following functions, you can with just 2 simplemodifications to you're input code.
Status - added, this updates the gamepad status (tracking the history) mimics the GamePad.GetState method currently used.
Pressed - added, this method checks to see if a button not previously pressed has just been pressed. Using this will stop buttons repeating without the use of a timer, as it will only be true if the button was released before being pressed.
Released - added, this method checks to see if a button previously held has just been released. Using this will let you react to a button being let go for instance charging an energy bar (or the jump angle in track & field).
Held - added, this method checks to see if a button held previously is still being held.
----------------------------
KeyHelper - new class added
----------------------------
This allows more flexible support for keyboard handling.It automatically keeps track of keyboard state, so you can track accuratelythe status of all keys in the keyboard. You can still use you're existing code for keyboard handling and timers but if you need easy access to the following functions you can with just 2 simplemodifications to you're input code.
Status - added, this updates the keyboard status (tracking the history) mimics the Keyboard.GetState method currently used.
Pressed - added, this method checks to see if a key not previously pressed has just been pressed. Using this will stop keys repeating without the use of a timer, as it will only be true if the key was released before being pressed.
Released - added, this method checks to see if a key previously held has just been released. Using this will let you react to a key being let go for instance charging an energy bar (or the jump angle in track & field).
Held - added, this method checks to see if a key held previously is still being held.
----------------------------
TrackManager
----------------------------
SpecifyEndTrackHandler - added, this allows you to call an update routine when a sprite reaches the end of a track, so you can take some action
RemoveEndTrackHandler - added, this removes any end of track handler
----------------------------
Menu
----------------------------
reference to EngineManager -added, this enables Show and Hide to work without going through the MenuManager (gameMenus)
Show(), Hide() - added, this can be directly used with a menu object
e.g. optionsMenu.Show();
----------------------------
MenuManager
----------------------------
AddMenu - altered, to pass a reference to the EngineManager to each menu. The MenuManager is now just responsible for updating all the menus, everything else is now the responsiblity of the menus directly.
Monday, 8 June 2009
XNA Game Engine version 016u6
I have probably missed some other fixes and additions here (did a lot of messing)
----------------------------
Sprite
----------------------------
Pause() - added, this causes the update for a sprite to be suspended, this can be used during loss of life to stop certain sprites attacking/moving etc...
Resume() - added, this causes a sprite to continue updating.
There will be timer related problems due to pausing, these are the same issues that normal timers currently suffer from when paused and then resumed. I will come up with a solution to this at some point but it is not a major problem.
For examples of pausing sprite types look at the Space invaders code when a life is lost.
Collisions:PauseAllInvaders()
GamePlay:StopInvaders()
TimerEvents:ResumeWalk()
----------------------------
EngineManager
----------------------------
SpriteFrameSingleWhitePixel() - added, adds a frame to a given sprite containing a single white pixel, this can be coloured or enlarged.
SpriteFrameSingleTransparentPixel() - added, adds a frame to a given sprite containing a single transparent pixel, used for dummy sprites mainly for applying textattributes for sprite text.
----------------------------
Limit
----------------------------
wrapExact - added, this new wrap method wraps a sprite exactly the width or height of a limit box, the wrap method aligns sprites this is no good for scrolling text displays, use this method for that. You may need to ensure that regions are wider and taller then the view area to stop pop in happening.
----------------------------
Sprite
----------------------------
Pause() - added, this causes the update for a sprite to be suspended, this can be used during loss of life to stop certain sprites attacking/moving etc...
Resume() - added, this causes a sprite to continue updating.
There will be timer related problems due to pausing, these are the same issues that normal timers currently suffer from when paused and then resumed. I will come up with a solution to this at some point but it is not a major problem.
For examples of pausing sprite types look at the Space invaders code when a life is lost.
Collisions:PauseAllInvaders()
GamePlay:StopInvaders()
TimerEvents:ResumeWalk()
----------------------------
EngineManager
----------------------------
SpriteFrameSingleWhitePixel() - added, adds a frame to a given sprite containing a single white pixel, this can be coloured or enlarged.
SpriteFrameSingleTransparentPixel() - added, adds a frame to a given sprite containing a single transparent pixel, used for dummy sprites mainly for applying textattributes for sprite text.
----------------------------
Limit
----------------------------
wrapExact - added, this new wrap method wraps a sprite exactly the width or height of a limit box, the wrap method aligns sprites this is no good for scrolling text displays, use this method for that. You may need to ensure that regions are wider and taller then the view area to stop pop in happening.
Subscribe to:
Posts (Atom)