  
Welcome to Ventspace! Most posts here are delayed copies of posts from the real Ventspace.
 SlimTune and Services |
Posted - 2/8/2010 4:04:08 PM | This is a short one, so I've provided full text today. As always, Ventspace is the source.
I've now added service and ASP.NET profiling support to SlimTune. Services seem to work, although I've tested it pretty minimally. ASP.NET should work but I'm really not set up to test it properly. I might attempt a VM based test later, because I'm not really sure what sort of status IIS is on my main machine and I don't really want to find out. Still, ASP.NET is little more than a special case of the service profiling.
Unfortunately, it turns out that admin level privileges are required in order to control (and therefore profile) services. I've decided not to automatically request privilege escalation in SlimTune. Instead, it simply blocks you from selecting service or ASP.NET profiling unless you're running with administrator privileges (and pops up a message box explaining this). You'll have to right click -> Run as Administrator in order to select those options, unless you've turned off UAC outright. Kind of annoying, but I figured it was the best compromise.
Incidentally, the code to support this is mostly cloned out of CLRProfiler, with some work to integrate it into SlimTune smoothly. I don't even understand why half of it is there. You know why? It's because there's no other documentation about how to do it. This problem is somewhat endemic across all the .NET profiling bits, unfortunately. It may also affect the debugger documentation, but I'm not sure.
SlimTune is essentially patched together using a combination of a helpful CodeProject sample, the official documentation, blog posts, MSDN forum questions, and experimentation. I'm hopefully that by publishing a reasonably full featured open source profiler, I'm also creating a good practical reference on how to handle the guts of .NET. I've considered blogging more about the internals as well, but that remains to be seen.
[Update] I would like to mention, though, that this is vastly more documentation than is available for Mono.
| |
 SQLite Support in SlimTune |
Posted - 2/7/2010 1:57:33 PM | I've mentioned before that most of SlimTune's core functionality is pluggable. This actually includes the underlying data storage system. The app works through a fairly simple interface, and even SQL is only used by the visualizers and not the core program. To date, the engine in use was Microsoft's SQL Server Compact Edition (SQLCE). With the next release, I'm introducing support for SQLite as well.
Let's recap. Every other profiler I'm aware of works in more or less the same way. While the application is running, data is written to a file. Once the run is complete, the frontend steps in to parse the data and visualize it one way or another. SlimTune on the other hand allows (encourages, in fact) live visualization while the application is running. It also supports very different visualizations that slice the data in entirely different ways. The enabling technology for these features is the use of an embedded database. I'm not sure why no one else has taken this approach, but my theory at the time was that it was a simple matter of performance. Databases have to be manipulated with SQL, have to store everything in tables, etc. I suspected that updating a database so often was a problem. My goal was to write a blindingly fast database backend that would be capable of handling large amounts of data efficiently.
Read the rest of the post at Ventspace.
| |
 SlimTune: UI Improvements |
Posted - 2/1/2010 2:04:11 PM | I've been doing some work on SlimTune quietly, and now it's to the point that I have to decide what the next phase of things should be. There are essentially three major groups of work to tackle: UI improvements, memory profiling, and instrumentation. I'll spend this post explaining what I'm looking at with the UI.
One of the ideas I had with SlimTune was to make the front-end pluggable, so that you or I could develop various views of the data that are neatly customized to focused goals, or provide cool new features. That has worked out fairly well, with the caveat that no one except me is writing visualizers. (That's fine, the database format isn't that stable yet.) However, there turned out to be a number of problems with how the views are actually managed.
Read the rest of the post on Ventspace.
| |
| Saturday, January 23, 2010 |
 Advisory: You Should Probably Use FpuPreserve |
Posted - 1/23/2010 10:40:45 AM | Late copy of a post from Ventspace. Full text today.
One of the create flags for D3D 9 devices is FpuPreserve. It tells the Direct3D runtime that you don't want it to mess with the FPU flags, which it does to improve performance. And you should probably be using it.
FPU computations are a really hideously messy area, one that makes my head spin when you get into the details. One of the cool things .NET does is to take away most of the complexity and make very simple, straightforward guarantees about how floating point code must behave. Operations are done at specifically defined precision, in a certain way, and the runtime must enforce these requirements during code generation. (Which creates some weird x86 code.)
When DirectX goes in and messes with FPU state, it apparently throws off what .NET expects, leading to weird bugs of various sorts. So unless you've got some problem with FPU performance that can be solved by switching to the faster FPU states (hint: you don't), it's probably a good idea to simply set FpuPreserve all the time.
[EDIT] I forgot to mention as an addendum that as part of the SlimDX 2.0 transition, it's very likely this flag will become the default.
| |
| Thursday, January 21, 2010 |
 Secondary Effects of iTunes Game Pricing |
Posted - 1/21/2010 10:08:10 AM | Every so often, someone complains about the overall price depression on the iTunes App Store to rock bottom. It's a theme that recurs fairly often, and I'm generally a little dubious about the people who are upset about it. It seems mostly to be a product of an actual free market -- you may think your game is worth five dollars, but if someone is producing similar quality for one, well tough shit. Remember, consoles games are basically price fixed and that has a substantial effect on the PC market as well. Now iTunes is a more nuanced discussion than that, exacerbated by the ranking system by which apps rise above the crowd in the store. I'm dubious of the complaints, but I don't mean to suggest they're without merit. Instead, I want to highlight some of the secondary effects I've noticed.
Read the rest of the post on Ventspace.
| |
| Wednesday, January 13, 2010 |
 Action = Reaction Labs LLC |
Posted - 1/13/2010 4:04:58 PM | This is from Ventspace, but today I've decided to give you the full text, on time.
I'd like to introduce you all to our new company, Action = Reaction Labs LLC. Our goal is to bring a pair of new technologies to the games market, starting with the iPhone, that I think could really change things. I know that's a pretty ballsy statement, but stay tuned over the course of the next year at least, and a lot of interesting things should be happening. We're still working on a corporate site but I'll let you all know when that's ready.
AR Labs has two completely separate pieces of technology, both of which are hopefully going to make a big difference to gamers. Both technologies are shown off in a very early prototype form in our first iPhone game, Aves. There will be a second game later this year that will showcase far more advanced versions of both.
The first is our Ghost Dynamic Binaural Audio system. It's been known for a very long time that traditional 3D sound techniques are fairly flat and ineffective. There is something known as binaural recording which produces a much, much more realistic and convincing soundstage for listeners using headphones. Check out Jeff's Five Favorite Things for a demonstration. Until now, binaural audio has been restricted to statically positioned recordings, not suitable for games where things move dynamically. We've overcome this limitation, and can to produce sound that is dynamically positioned in true 3D, just like in Jeff's video. Best of all, the Ghost SDK is currently under development, and should be available to all iPod/iPhone developers within a few short months!
The second technology is the BioReplicants physical animation system. We're not the first to do physically based animation, by any stretch. Unlike a certain well known company however, our system is true middleware and will drop into existing games without requiring engineers on site to tune. Not only that, but our characters are truly capable of walking, running, jumping, flying, flipping, and so much more without an animator ever getting involved. They're also truly interactive -- shove one and it will readjust as necessary to restore its balance and desired animation in a convincing way. This isn't just some clever ragdoll based trick, and it's not just to watch "a different tackle every time". That's no better than pre-rendered cutscenes. You'll see what I mean over the coming months as we start to demo the current generation of our technology.
There's my sales pitch. This is quite literally MY company -- I am CTO and part owner. I'm hoping to talk a lot more about what we've got in the pipeline. Tech details are of course going to be scarce, but please don't hesitate to ask and I'll provide what information I can. I'm especially interested in speaking to iPod/iPhone developers, since that's going to be our first focus with the Ghost SDK. Nearly everybody playing those games is using headphones, making it the perfect platform for what we've got. And candidly, I'm planning to make it must-have technology for any serious iPod game.
| |
 Screw Degrees! Right? |
Posted - 1/11/2010 1:44:47 AM | A few months ago, I pushed for GameDev.Net to add a new forum, Breaking into the Games Industry. Overall, this has been a great place and some excellent discussion has happened there. I've noticed one particular trend though, and I wanted to discuss it a little bit. Basically, there's a surprisingly large number of people who are either dubious of a degree (computer science or otherwise), or actively believe it's not needed. This particularly eloquent fellow may have summed it up best:
Quote:| sure stay in school for your deplomas, in my apionon unless you wanting to work for others its a complete wast of valuable time. |
I'd like to provide some commentary, as someone who actually got a game industry job without a degree, and who just finished his degree.
As usual, the rest of the post is available on Ventspace. This way, I get to actually track statistics!
| |
| Saturday, January 9, 2010 |
 Douchebag Defined |
Posted - 1/9/2010 12:37:46 AM | Recently, a developer (hereafter referred to as “Moron”) posted a tirade about how much better OpenGL is than DirectX. This moron of course got himself linked by another group of morons known as “Slashdot”, and probably some adjunct groups of particularly stupid (but not quite moronic) people such as “Digg”. You’ll note that I am unlikely to be honored by either community. I’m also not going to link this post, because there’s no point generating the trackback or sending any more traffic.
By the way, I wrote about this subject many years back, and very little has changed since.
Now, the problem with Moron is multi-faceted.
The rest of this post is available on Ventspace. Note that strong language is contained, otherwise I would actually repost the whole thing here.
| |
| Wednesday, December 30, 2009 |
 Do cinematic video games need judder? |
Posted - 12/30/2009 4:23:46 PM | Just a thought. I’ve been learning a lot about television technology lately, and one of the tricky things about it is the difference between video and film. It’s generally well known that movies and film are at 24 fps, supposedly because that’s the frame rate at which we can’t distinguish it from real motion. (That’s bullshit by the way, and has nearly nothing to do with why film is at 24 fps.) Video, on the other hand, is run at 25/50 fps (PAL interlaced or progressive) or 30/60 fps (NTSC interlaced or progressive). This means that video has a very distinctly different look from film, and film never ends up looking quite right on normal televisions. The introduction of 120hz LCD TVs on the market is partly intended to combat this problem, and show film sources at their true frame rate.
Continue reading at Ventspace...
| |
| Saturday, December 26, 2009 |
 Ventspace has everything |
Posted - 12/26/2009 1:33:37 PM | I've been making plenty of posts over on Ventspace. Go read em.
| |
| Tuesday, November 24, 2009 |
 Checklist to Lead an Online Game Project |
Posted - 11/24/2009 7:29:18 PM | Remember, the real home of this journal is Ventspace.
So, it's come to the junction where you've decided that you'd like to form and head up a project. It's time to recruit a proper team and build something real. Should be no problem, right? Your idea is bloody brilliant, and you're certain that people will be clamoring over each other to join when they hear your idea and see your logo.
Allow me to provide you with a reality check.
Nobody wants to join your project. Some people might very much like to see your project completed, but nobody really wants to join all that badly. We all have our own ideas and pet goals, so why on earth would anyone care about yours? But your idea is so much better, you might think. Nobody cares. If you want to start a project, you need to convince people that you have a lot to offer them, enough that they should work on your dream instead of their own.
So how do you convince people? Step one, have a real skill. Ideas are not a skill. Game design is a skill, but it's usually not strong enough to stand on its own. (And I'm talking real design here, which means a hundred page game design that sounds fun on PAGE ONE.) Art and programming, those can do the trick as long as you're good at it. And because you're good at it, you will have no problem coming to the table with an existing demo. Or a serious, substantial portfolio that you'd be comfortable sending to a potential employer.
Let me reiterate. You need one of these three things:- A real game design document which sounds fun from the first page.
- A working demo of a something that at least behaves like a game.
- A real portfolio of artwork, preferably artwork for this game.
If you don't have at least one of those three, go home. You're not properly equipped yet.
Okay, let's say you've gotten your act together and one of these three is actually in your possession. The next big step in getting a team together is starting the other two. The more you do, the better.- I don't know how to design a game!
- I don't know how to code!
- I can't do artwork!
Once again, go home. In fact, stop and ask yourself this question: Can I do this project entirely by myself? If the answer is no, don't start a team. It's okay if you'd do an awful job, or if it would take you years upon years to finish. But if you don't have the skills right now to actually complete this project on your own, you've got absolutely no business running a team. A team lead has to be aware of all the issues that the team is going to run into, on all fronts, and be able to assist and participate in the decision making process. Note: I'm not suggesting micromanagement, but you should be able to understand at least generally what your people are doing at any given point in time and what problems they're facing. Otherwise you're not a lead, you're just another passenger.
By the way, it should be obvious at this point that recruiting a team comes several months into development. Project first, team second. That's how successful online projects work.
Lastly, you need to be willing to lead. That probably sounds stupid and obvious, but it's a critical point and people don't consider what it entails. Leadership does not mean "I'm the forum admin and also have the best ideas." It means being a manager and a boss. And make sure you understand what that really means.
Deadlines, milestones, and deliverables needs to be set and adjusted realistically. And this is especially for the teenagers -- if you've never been on a software project, you don't know anything about milestones. Sorry, but professional experience (not necessarily as a manager) is basically a prerequisite.
Be ready to fire people. In the real world, people's livelihoods are on the line; there's incentive to do a good job and there's incentive not to fire people callously. Without the money involved, neither side is really bound by those rules. Now life happens, and nobody will really be able to dedicate their entire lives to side projects. But if somebody is consistently flaking out on you, you better have the spine to end their involvement and go find someone else.
Promotions and demotions can happen. If someone is way better or worse than expected, don't be afraid to change the hierarchy. Some tact is called for when you're telling someone they suck and have to follow another team member, but that's part of running a project. And if they're not willing to accept those decisions, see the previous point.
Last but oft-forgotten and maybe the most important -- you are the lead, you are the manager, and in some sense you are a dictator. But communication between you and your team needs to be two way. Software projects tend to mutate and evolve drastically over their lifetime, and that's not a top down progression. If you trust your people, you'll give feedback and suggestions an honest chance, and be ready to pick their ideas over your own. And if you don't trust them to provide that kind of support to the project, you're not fit to be leading it.
If any of this makes you uncomfortable, it's time to reconsider whether or not you're really ready to lead a team. And remember that a lot of professional developers don't want the hassle and will turn down a lead position. There's no shame in helping to produce someone else's project. Just remember this checklist when you're picking a team to join. It could save you from joining a dead-end group, after all.
| |
|
| S | M | T | W | T | F | S | | | 2 | 3 | 4 | 5 | 6 | | | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | | | | | | |
OPTIONS
Track this Journal
ARCHIVES
February, 2010
January, 2010
December, 2009
November, 2009
October, 2009
September, 2009
August, 2009
July, 2009
June, 2009
October, 2008
June, 2008
May, 2008
April, 2008
March, 2008
February, 2008
January, 2008
December, 2007
November, 2007
October, 2007
September, 2007
August, 2007
July, 2007
June, 2007
May, 2007
February, 2007
|