BrownBot Logo BrownBot Head

Character Redesigns–Da Chimp

6:45 am Filed under: Uncategorized

Chimp

I’m really happy with how the Chimp turned out.

Character Redesigns–Helmut

6:36 am Filed under: Uncategorized

I’ve been chipping away at a few character redesigns over the past few months, the old designs were a bit all over the place having been plucked from various sources over the years.

With these new designs I’m going for a early 60s cartoon style, which I’m also applying to the rest of the game to bring everything together. It’s been quite a challenge seeing I’ve only ever really drawn in a 80-90 super hero comic style, I have to keep telling myself to simplify things.

Helmut

60s Helmut, I’ve taken him back to Darth Vader’s original source material the Nazi officers.

Render a WPF Control On Reporting Services Report

12:15 am Filed under: C#,Work,WPF

I struck an issue this week where I need to display some ranged data in nice concise and easy to understand way on screen and on a report.  I tried graphing the data in Excel and a bar graph almost works but some of the data works back from 100% which won’t graph properly.

So today I set out to see if it was possible to render out a WPF control to an in memory byte[] on an extended “View” version of our Contract business object and bind an image to that property. After a lot of mucking about I finally got this.

 WPF control on reporting services report

Yep that’s a WPF button on an RS Report bound to an in memory object rendered on screen in the Winforms report viewer control.

Codewise it’s not that tricky really, if you follow the class below you can see how I render out the byte[] for the property in the constructor. We’re using VS2010 so you need to have your objects Serializable to use them in reporting services.

[Serializable]
    public class GrainPurchaseContractReportView : GrainPurchaseContract
    {
        public GrainPurchaseContractReportView(GrainPurchaseContract src)
        {
            // copy base class feilds here
            GenerateTestStandardGraph();
        }

        public GrainPurchaseContractReportView(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            _bmp = (Byte[])info.GetValue("StandardsGraph", typeof(Byte[]));
        }

        private Byte[] _bmp;

        public Byte[] StandardsGraph
        {
            get { return _bmp; }
        }

        private void GenerateTestStandardGraph()
        {
            BitmapEncoder encoder = new BmpBitmapEncoder(); 
            Button btn = new Button() 
            { 
                Content = "WPF",
                Height=40,
                Width=200
            };
            double dpi = 96;

            RenderTargetBitmap rtb = new RenderTargetBitmap(
                (Int32)(btn.Width * dpi / 96),
                (Int32)(btn.Height * dpi / 96),
                dpi,
                dpi,
                PixelFormats.Default);

            // Get the size of canvas
            Size size = new Size(btn.Width, btn.Height);

            // force control to Update
            btn.Measure(size);
            btn.Arrange(new Rect(size));

            rtb.Render(btn);

            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Frames.Add(BitmapFrame.Create(rtb));
                encoder.Save(ms);
                _bmp = new byte[ms.Length];

                ms.Seek(0, SeekOrigin.Begin);
                ms.Read(_bmp, 0, _bmp.Length);
            }

        }

        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("StandardsGraph", StandardsGraph, StandardsGraph.GetType());
            base.GetObjectData(info, context);
        }
    }

The last part is to place an image on the report and use the “Database” source type and point it to your property.

WPF control on reporting services report image properties

Of course rendering a button on the report is not that handy, next I’ve got to build a user control that will render the actual data from our object.

Dirchie Kart 2 Official Beta Testing Begins

1:36 am Filed under: Dirchie Kart,XBLIG,XNA

DKart2Beta

Tonight I’m going to give a quick presentation of Dirchie Kart and invite the local community guys to join in a more official beta test.

Anyone is welcome to join, just go check out the PC version page on this site for the download details.

All you need to do is play the game and if you have a comment or suggestion on something simply click the speech bubble icon in the top right have corner to bring up the feedback submission interface, simply fill in the details and click send.

All submissions are collated at BrownBot.com (hidden from general view), if you include your email address and have a direct comment I’ll do my best to answer you directly.

Thanks for taking the time,I hope you have fun!

New Dirchie Kart Heads Up Display

3:22 am Filed under: Dirchie Kart,XBLIG,XNA

Here’s a sample screen-shot of this weekends work. I’ve been putting the extra performance I gained at the start of the week into moving most of the HUD sprites into 3D objects surrounding the player’s kart.

DirchieKartStreamlinesUI

After the last round of demoing I did at the local game dev community session I realised my game is so intense that most people didn’t see any of the old HUD or on screen hint messages.

My solution is to move all those elements down around your kart so you don’t have to move your eyes away to see the HUD information, in the screen shot you should see:

  • trail of coins you’ve collected (if you’re playing it with the shop enabled).
  • You currently armed weapons floating just behind the kart, the circle reticule indicates the item that will be fired (you still cycle and shoot them with the right stick).
  • Position indicators above the heads of all the players.
  • The speech bubble for control hints and messages (“Yikes, pigs!!!” is telling you the pigs are after you because you’ve just picked up the truffle, that’s the weird blob floating above the players head).

I’ve still got to decide what to do with the heart health indicators, I think I’m almost at the limit of cluttering the screen. Also need to fix up the font on the lap time in the bottom right corner, but that won’t be too hard.

The shop is now completely broken, so that’s the next thing I’ve got to work on, otherwise I’m pretty chuffed with where all this is going!

60 FPS Nirvana…. finally

5:16 am Filed under: Dirchie Kart,XBLIG,XNA

Finally overcame my performance bottle necks this afternoon, I always suspected I wasn’t pushing the Xbox’s GPU that hard with my poly count or texture usage, today I got 4 player split screen running at a solid 60 frames per second. I even did some stress testing an added 10 times the polys (32,000 faces) to the level decoration on the Egypt map and it still ran a 60 FPS.

I adding 3 avatar players dropped 5 FPS, so I think that must be about the limit, still even half that amount is more extra polys than I’ll ever have time to model up in the foreseeable future.

Poos-4

The solution proved to be a combination of GPU batch count and CPU load, which as I found out is directly related. Using the Slimtune profiler I identified a few interesting high frequency calls that quickly yielded considerable decreases in CPU load.

Interestingly setting the pitch variable in an XACT cue was quite an expensive operation every frame so I cut them back to every 10 frames for the engine sounds on the karts.

Another expensive call turned out to be nulling values in the large collision detection arrays, which I didn’t think would cost anything, maybe it was the loops themselves but leaving the references alone (and potentially some garbage in memory) and just resetting the counter was a lot faster.

Cutting down the batch count was mostly done by implementing mesh instancing, which worked really well in my game seeing there’s a reasonably high count the same objects.

A fair bit of work in the end but this extra performance will definitely give me plenty of breathing room to finish it off properly.

New Dirchie Kart Menu System

10:16 pm Filed under: Dirchie Kart,XBLIG,XNA

This week I knocked up some new menu graphics for Dirchie Kart – World Tour, I’ve been focusing on creating a consistent visual style from start the finish and the old menu was obviously not doing it.

NewDirchieKartMenu

Since early this morning I’ve been hammering out the code to get it all working in game, above is a show of the new multiplayer options screen, heaps better than the old one I’m sure you’ll agree.

I still need to come up with a good concept for displaying you general progress through the game modes on the main screen but I’m stoked with how this is looking so far.

The Mad Frenchman

8:48 pm Filed under: Dirchie Kart,XBLIG,XNA

I introduce to you the Mad Frenchman, the observant ones amongst you may notice a striking similarity to the Mad Moorys from the first Dirchie Kart game!

Mad Frenchman

You’ll find these stripy shirted freaks lurking around the base of the Eifel tower.

More World Tour Screen Shots

12:52 am Filed under: Dirchie Kart,XBLIG,XNA

I’ve been working on the Botswana track today, it’s really different to the Paris track I was working on last weekend as you can see in the shots below.

DirchieKartWorldTourParis1DirchieKartWorldTourParis2
Gay Paris

DirchieKartWorldTourBotswana1DirchieKartWorldTourBotswana2
Botswana

Botswana is going to get some rogue elephants as well (like the truffle hunting pigs), I think that’ll finish it off nicely.

Indie Games Summer Uprising

5:08 am Filed under: Dirchie Kart,XBLIG,XNA

UprisingTitle

I’ve been pushing pretty hard the past week getting enough promo material together for Dirchie Kart – World Tour to be part of the “Indie Games Summer Uprising”.

It’s a great promotion organised by a few community guys to group together some of the top Xbox Live Indie Games about to be released into one big promotion, hopefully with some backing from Microsoft to get some dashboard loving like the previous Winter Uprising.

I’ve only really thrown my game’s hat into the ring at this stage, voting hasn’t actually started just yet. With only 10 entries chosen out of 70 odd the competition is tough.

Hopefully you can pick my Dirchie Avatar out on the second page here, and here’s a direct link to Dirchie Kart – World Tour’s page on the site.

Wish me luck.

« Previous PageNext Page »

Powered by WordPress