Timbles Silverlight

SphenI mentioned previously that I was working on a new project.: Timbles. I also mentioned that I was developing it under Vb.net. And I also mentioned that I was using DirectX3D using SlimDX… Well… things changed…

The game was coming along nicely, and I had taken it into school and installed it on a number of their machines, and on the whole it was working ok. Their were just a few things niggling me about the installation process. That is; it was a pain. I felt it was coming a big ask to get people who were not used to installing games, to install DirectX. And not to mention that some of the machines struggled installing .Net2.0 – once everything was installed it all worked a treat. The process was just a little off putting.

Over the last 6 months I have done very little on Timbles. I started writing the backoffice code that would become the Measurements Server for the game; the idea is that everything that happens on the game is recorded by the measurements server so that teachers can run reports to see how the kids are performing. However, I didn’t touch the game much.

Anyway, last week started doing some work with Microsoft Silverlight, ( for those of you not familiar with it – think Flash ), and I’ll touch more on the specifics in a later post. Anyway, I now have almost all of Timbles running in a browser. Which means it is supported on all the platforms supported by Silverlight.

Here are some screenshots. Please excuse the poor quality – I hadn’t realised that I’d saved them in rubbish quality mode!

Timbles Menu
Main Menu
A Busy Screen
A Busy Screen
Just Starting A Level
Just Starting A Level
A Quiet Screen
A Quiet Screen

Level Rollover
Level Rollover

I hope to get a version running on my site for testing purposes, over the next week or two.

Related Posts:

Timbles, XNA, DirectX, and SlimDX

I’ve written some game code over the years. I joined SCi back in 1994 over the following 14 years I’ve written a fair few applications in C++ and utilised DirectX. When I started at SCi DirectX wasn’t out and we were still working with various graphics and audio libraries that gave you access to the plethera of hardware that was available. When DirectX was release in ’95 if was a godsend.

I haven’t written any game code on windows for a few years now and so coming back to it I spent a little moment thinking about what I wanted to achieve.

has now pretty much been replaced with . Replaced is a loose term there because of course DirectX is still available as a low level library – but have a large push on the XNA technologies. XNA allows you to develop game code in c# that targets windows, zune, and xbox 360. Now I know there will be a lot of pure programmers out there who would despair the concept of coding in c#, but hey, things move on. I’m getting a bit long in the tooth now and coding in C++ really doesn’t interest me anymore.

So I like the concept of XNA and C# – apart from two things – the minimum requirement and the platform dependence. You have to have a graphics card that has shader model 1.1 support. The laptop that I am typing this on – doesn’t!

I’m writing a 2d sprite based game. I want to use the graphics card to do all the work for me – why not, it can throw millions of textured polygons around the screen, so it will have no problem with my sprites – so why do I *need* shader model 1.1? Basically, that rules XNA out for me.

With regard platform dependence – I can target XNA using C++ if I use managed code. To be honest, after doing it, see my previous point – I can’t be arsed! Thinking about my target audience – really platform independance is not a major thing – the majority of them will be windows based. I intend to do a Mac version, but that can come later, and to be honest, porting from VB/c# to C++ or Objective-C – isn’t such a big issue.

DirectX can be used using managed directx. This is a way of accessing the libraries using c# or vb.net. It works well… I hade the prototype up and running pretty quickly using it – one problem – it’s discontinued in favour of XNA!

So that brings me to SlimDX. SlimDX is affectively a cross between XNA and Managed DirectX. It works a treat and doesn’t have the shader issue. So I have Timbles up and running in SlimDX very nicely!

This brings me back to another thing – the choice of language. As I mentioned earlier I coded the prototype in VB. After a little while of playing around, I made a decision: I’m going to leave the game in VB – why – well why not? The game is already up and running. I’m using the hardware for the audio and graphics. Thus the game logic doesn’t actually spend much time running in a update cycle. So why should I spend any time messing around trying to put it into another language. I actually prefer VB over c# – just because it’s simpler and there is nothing I can’t do in VB that I need c# for.

So the prototype has just moved to production code!

Technorati , ,
Wikipedia DirectX, XNA, Microsoft

Related Posts:

Timbles & .Net

I wrote the initial prototype of Timbles using vb.Net. Now I know many people will scorn at such a thing, but the reality is, I’ve been around the block with development languages – been doing it for long enough – and nowdays, I just want to go the easiest route.

Coding with .Net and VB is pretty straightforward, and you can do almost everthing you could want with them nowdays. I initial intention was to create the prototype using .net and windows forms and the move over to C++ directx when I need to code the game proper. The idea is that it is much easier to work with the prototype before investing time in the final production software.

When doing graphics with a Windows form there are 2 things you need to do. Firstly you must create a seperate user control to draw to, the second is that you need to turn doublebuffering on on that control.


Partial Class canvas
Inherits System.Windows.Forms.UserControl

This means that you can turn doublebuffered to true for this control. Place that control on your form and that is now your render target. Here is an example paint event for that control which we will use to render the game.

Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles panel1.Paint

Dim n As New System.Diagnostics.Stopwatch

PlatformDevice.currentGraphicsDevice = e.Graphics

n.Start()

If Not IsNothing(currentPanel) Then
currentPanel.Render()
End If

n.Stop()

PlatformDevice.renderFrameDuration = n.ElapsedMilliseconds

End Sub

This code then tells the current panel to render. And all that needs to be done in there is to draw to the current graphics device.

Place a timer on your control that runs at your required frame rate, and inside the event for this invalidate your control.

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim duration As TimeSpan = Now - lastUpdate

' how long did the update actually take
PlatformDevice.updateTime = duration.Milliseconds

Dim n As New System.Diagnostics.Stopwatch

n.Start()

If Not IsNothing(currentPanel) Then
currentPanel.update()
End If

lastUpdate = Now

n.Stop()

PlatformDevice.updateFrameDuration = n.ElapsedTicks

panel1.Invalidate()

End Sub

That’s it… you’d be surprised that you can get pretty good frame rates based on this method. More than enough for 2d games and in particulalry prototypes.

Next I’m going to mention XNA, Direct3d, and C#…

Related Posts:

Timbles

I started writing a new game recently and I thought I’d take the opportunity to talk around it rather than specifically about it. The concept came from realising that I had the ability to help Rebekah with her learning through the medium of Computer Games! Yep… I was lay in bed thinking about a particular problem Rebekah was having and thinking that I should be able to find a way to help her that would be more entertaining and thus should engage her more, when the penny dropped… I’m a software developer, and a games developer at that – so there is something I could do. I got out of bed and spent through till morning working on the prototype of the game.

It’s a simple puzzle game that I call Timbles – I don’t want to say much more than that at this stage.

After working on it for a few days and feeling happy with the general concept I let the kids play it. They love it and it seems to be doing the job. I took it into Rebekah’s school to show the lead learner and he likes it to. The school are going to work with me on it to help craft it into something that the kids could benefit from.

Related Posts:

%d bloggers like this: