Silverlight Multiplayer Pokerroom

  • english
22 02 2008

Zo, na een aantal weken hard werken ben ik er dan eindelijk weer.

De afgelopen weken heb ik volledig gewijd  aan mijn Silverlight Multiplayer Pokerroom, een technische showcase die laat zien wat er allemaal mogelijk is met Silverlight en ASP.NET.

Silverlight Multiplayer PokerRoomHet bevat meerdere tafels, waarin spelers over de hele wereld samen een potje poker kunnen spelen en chatten.

En als er even niemand is om mee te spelen, kun je altijd een "bot" toevoegen. (Type /help in de chat voor meer info).

Voordat je kan gaan spelen moet je wel even een gebruiker aanmaken, maar aangezien je hier alleen je naam, e-mail en wachtwoord hoeft in te voeren zou het nauwelijks tijd moeten kosten.

De applicatie is getest met IE6+7 en Firefox op windows.

Er missen een aantal Poker regels (o.a Splitpots en all-in) dus kijk niet gek op als niet helemaal naar behoren werkt.

Ook zullen er hier en daar nog wat bugs zitten, daarom wordt de applicatie elke 120 minuten gerecycled.

Ik denk dat het je in ieder geval een paar minuten plezier moet opleveren, en hopelijk brengt het wat mensen "Into the light" :).

Design & 2.0

Silverlight Multiplayer PokerRoomMomenteel ben ik bezig om een echte designer de applicatie te laten redesignen en over een paar weken, waarschijnlijk na de Mix, zal de applicatie moeten worden herschreven in 2.0.

Meer suggesties zijn altijd welkom via het contact formulier, ik hou jullie op de hoogte!

Geek

Als een echte geek/nerd, zijn er een aantal dingen die ik koester:

  • Er is een echte pokerhand vergelijker die 11 miljard handen per seconde kan vergelijken ;-), totaal zinloos maar daarom niet minder leuk. Dit was trouwens veel ingewikkelder dan ik gedacht had.
  • De webservice calls hebben een lange looptijd. Dit houd in dat in plaats van elke 2 seconde een call, een hele lange call die netjes openblijft zolang er niets nieuws is. Een simpele maar zeer effectieve manier om het aantal aanroepen te minimalizeren. Hopelijk kan ik dit vervangen door een mooie WCF oplossing in 2.0.
  • De kleuren in de chat, erg veel werk maar het ziet er gewoon leuk uit!.
  • Wanneer de server restart of de sessie verloopt zat de client dit herkennen en zichzelf herstarten.
  • De bot’s pesten je als ze geld van je winnen, alhoewel het leuk zou zijn om ze meer dan 1 zin te leren ;-).

Links

Veel plezier met poker spelen, See you at Mix!

Robertjan Tuit



Bookmarks, Foto’s and Projecten

  • english
22 02 2008

Afgelopen week heb ik een aantal zaken aan mijn blog toegevoegd:

Foto’s

Ik had mezelf voorgenomen om alle foto’s die ik maak op evenementen te gaan plaatsen op Flickr. En daarmee plaats ik ze dan ook automatisch op mijn blog. Via deze pagina kun je vanaf nu al mijn Flickr foto’s bekijken. En in de sidebar zie je een aantal random foto’tjes staan.

Nu alleen nog

Projecten

Tot nu toe miste ik nog een vaste plek voor een aantal projecten, daarvoor heb ik nu de Projecten pagina gemaakt.

Bookmarks

Sinds kort gebruikt ik del.icio.us om interessante links op te slaan. En omdat ik toch bezig was om mijn blog aan te passen heb ik die ook maar gelijk ingevoegd. :)

Ik bedacht me net alleen wel dat ik dus ook meer plekken up to date moet gaan houden, maar daar had ik dan meer eerder aan moeten denken ;-).

Robertjan Tuit



Silverlight 1.1/2.0 Alpha Timer

  • english
4 02 2008

In Silverlight 1.1/2.0 alpha gaan nog een heleboel dingen fout waarvan je, als verwende ontwikkelaar, verwacht dat ze gewoon werken.

Een van die issues is dat een normale Timer geen aanpassingen meer kan doen aan User Interface. Je krijgt dan de foutmelding dat de Thread niet bij de UI mag.

Er zijnj hiervoor meerdere oplossingen te vinden op internet, waarvan ik er een aantal heb samengevoegd in een simpele class, die je zo kan gebruiken :

public partial class Page : Canvas
{
    UITimer _Timer;
    public void Page_Loaded(object o, EventArgs e)
    {
        // Create a new UITimer
        _Timer = new UITimer(this); 

        // With a 10 seconds interval
        _Timer.Duration = new TimeSpan(0, 0, 10); 

        // And call this delegate every 10 seconds
        _Timer.TimerEvent += new EventHandler(_Timer_TimerEvent);
    } 

    void _Timer_TimerEvent(object sender, EventArgs e)
    {
        // Do something in the UI
        // Fore example: Set the opacity of the page
        Opacity = 0.5;
    }
}

De UITimer class ziet er zo uit :

using System.Windows;
using System;
using System.Windows.Media.Animation; 

public class UITimer
{
    static int TimerCount = 0; 

    private bool _Active = false;
    public bool Active
    {
        get
        {
            return _Active;
        }
        set
        {
            if (_Active != value)
            {
                _Active = value;
                if (_Active)
                {
                    timer.Duration = _Duration;
                    timer.Begin();
                }
                else
                    timer.Stop();
            }
        }
    } 

    private Duration _Duration;
    public Duration Duration
    {
        get { return _Duration; }
        set
        {
            _Duration = value;
            timer.Duration = _Duration;
        }
    } 

    public event EventHandler TimerEvent;
    Storyboard timer; 

    public UITimer(FrameworkElement rootElement)
    {
        timer = (Storyboard)XamlReader.Load(String.Format(“<Storyboard xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” x:Name=”UITimer_{0}” Duration=”00:00:00″ />”,UITimer.TimerCount));
        timer.Completed += new EventHandler(timer_Completed);
        rootElement.Resources.Add(timer);
        UITimer.TimerCount++;
    } 

    void timer_Completed(object sender, EventArgs e)
    {
        if (TimerEvent != null)
            TimerEvent(this, EventArgs.Empty);
    }
}

Source Code :  UITimer.zip

Light it up!

Robertjan Tuit



Silverlight Mopup Part 1 of Many

  • english
3 02 2008

Door tijdsdruk is het schrijven van nieuwe teksten even niet aan de orde. Maar ik lees wel elke dag 1000 rss feeds waarin ik vooral de laatste weken weer erg veel leuke nieuwe Silverlight dingen tegenkom.

Daarom vanaf vandaag onregelmatig: de “Silverlight Mopup”, met een lijst van links naar leuke en interessante sites of artikelen.

Volgende keer meer.

Robertjan Tuit



Mix08

  • english
1 02 2008

Het is weer even geleden dat ik de binnenkant van Windows Live Writer gezien heb. Ik ben ontzettend druk geweest met mijn inzending voor de Silverlight Challenge. Daar ben ik eigenlijk nzo druk mee bezig geweest, nog steeds eigenlijk, dat het bloggen er even niet van kwam. Ook het verslag van het Envision-Event laat dus nog even op zich wachten.

Waarom dan deze blog entry? Ik wilde met jullie delen dat ik me net officieel heb geregistreerd voor Mix08, de web development beurs in Las Vegas.

Ik had zo nog is gekeken naar de website, en besloten dat ik het dit jaar eigenlijk gewoon niet mag missen.

Met de release van Silverlight 2.0 (beta) en onderwerpen als IE8, ASP.NET MVC, IIS7, WPF 3.5, Dynamic Data Controls en .NET 3.5, voorzie ik dat ik in tegenstelling tot de meeste beurzen moet gaan kiezen tussen sessies.

En het is natuurlijk ook niet erg dat het in Las Vegas is, ben er alleen nog niet wanneer ik ga vliegen, wat dus ook inhoud dat ik de vlucht en het hotel nog moet boeken.

Wie gaat er nog meer, en als je gaat, wat zijn jouw plannen met vlucht data en hotel, iemand nog leuke tips?

Ik ga weer verder met mijn Silverlight 1.1 alpha project, en hoe langer ik ermee bezig ben hoe meer ik uitkijk naar de 2.0 (beta) release.

Hopelijk tot in vegas!

Robertjan Tuit