ascii art table
I took part in LD19, surprising myself that I actually had the time to do an entry: "Night of the Muglies". I'm particularly happy with the audio - remembering that it was on an extremely short deadline, I haven't done audio editing for a while, and most importantly I don't know how to make music =)
Updated my 2dgl basecode project to use visual studio 2010, and along the way also did some cleanup for it. The new version 2.1 can be found under code, as usual.
It's been rather crazy, the past month or so, for me. Most of my free time has gone to preparation of course material for the game programming course I did for Metropolia University of Applied Sciences. The course is over in the sense that the final lecture was this week, but it's not over in the sense that students still have time to build their projects. Everyone has to make a game to pass the course. Kinda like fight club.. if it's your first time, you have to make a game.
I'll probably write a postmortem about it eventually, as well as release all course-related materials, but I'll wait until the projects are sent in and rated. Which should be around Christmastime. Since the students retain copyright for their work, I don't know how many of them will be available for everyone, but at least I'm excited about many of the projects.
Apart from the course, I've made a bunch of new versionf of Atanua, like you can read in the previous post. I haven't had any time to play anything or.. basically anything. Now spending an evening playing Overlord feels like I'm slacking off. Crazy.
I've also visited a physiotherapist a few times regarding my back, and I've been doing some back-strenghtening exercises, and my back hasn't been aching, so it seems to be working.
Google has some kind of magic to figure out which mis-spelled words should get to which pages. Atanua, for example, can be found with, at least:
atamnua atamua atanau atanaua
atantua atanue atanuie atanuta
atanula atanwa atenua attanua
attnua atuana atunua atanua
Here's a selection of recent search terms:
_____________
/ /
/ /I
/____________/ I
I I
I I
Why?
Yes.
Sounds like a feature request. How about either mailing me about it, or posting on the forums?
Despite the relative verbosity of your question, I, unfortunately, have no idea what the heck are you talking about.
There's two of them in every byte.
It's a table. You look up stuff from it. The fact you use it in computer graphics doesn't differ from any other use.
I'd love to know. I have some ideas, but it would still be a fun read.
Trivially, I'm afraid. Please don't.
Get a life.
You'll only know after writing a few games, I guess.
What.
The most requested feature in Atanua since its original release has been boxing - making your own components using Atanua itself. I've always brushed this aside for performance reasons.
A couple weeks ago someone mailed me, asking if I still develop Atanua, and had a few requests. I did a couple small releases, and figured I might as well do a feasibility study of the boxing performance.
I found I could easily run about 16000 simulated chips in real time on my corei7, meaning that my performance fears were completely unfounded. So, I decided to implement boxing, finally.
Boxes in Atanua are a special case in everything, so they broke just about every action you can do in Atanua, including undo, cloning, and naturally chip creation. I've fixed tons of obscure bugs, and I think it's pretty stable now.
You can find a short tutorial on Atanua's boxing in this thread.
Since this was such a major change, I changed the version number to 1.1, and also dusted off my old powerbook in order to build a OSX version. I don't know if it'll work on bleeding edge macs, but at least I've tried.. I also set up a VirtualBox ubuntu to build the linux version.
The performance difference between my G4 powerbook and my desktop corei7 is staggering. Full rebuild of Atanua on a single-core VirtualBox linux takes about 19 seconds - on the powerbook, 2 minutes 22 seconds!
VirtualBox, by the way, has been updated fixing the windowed OpenGL bugs I saw earlier. So, now I have no reason whatsoever to boot up my old linux box anymore. I had to boot it once to get a copy of my build scripts - I didn't want to plug in keyboard or a screen, so I just booted it up, and refreshed my router's DHCP table until it showed up. Then I just used the SMB share to grab the file. Phew!
Apart from these things, I've been teaching game programming in the evenings at Metropolia. It's surprisingly heavy work.. teaching, I mean. After the first lecture I hated my own voice for a couple of days. It's become easier since. I'll release all the lecture materials after the course is done.
More of these (and explanation what they are) here.
Someone who is indecent in public every 2 seconds / every second / twice per second.
What?
Uh..
Homework?
Add black stripes? Do some very ugly scaling?
Depends what you're planning to do with said fish.
I don't remember anyone doing dual-screen games on DOS.. maybe some stats on the herc screen or something?
epic?
More homework?
Grab an ancient directx sdk, and hope it works. Better yet, skip directdraw and use OpenGL instead. It's likely to be around longer than any specific directx version.
By masking the higher bits?
They're toys based on a well-known and fun physics phenomenon.
Practise.
Count them?
What?
x2 - x1
With mad skillz? And some hardcore debugging tools, I presume.
sizeof(variable)
Talk to your friends. You have friends, don't you?
Here's a trick. Go for a walk. Several hours. No planned route. Just wander around. Don't try to think of anything specific. Things start popping in your mind after an hour or so.
Logic is either true or false. Whichever you consider negative is your problem.
yesr I thnq yyor coretc
I actually wrote a design doc for it some years ago. Requires crapton of base tech I haven't had time, inspiration or possibly skill to write.
Pen, paper, line rule, calculator.
Only with specially wired hardware - basically ram and rom being the same chip. How you populate the ram before letting the 8051 run is something I leave for you to think about.
..is currently a mess, as I left it in a middle of refactoring it towards multiplayer use.
We do? Really? Who's mine?
FLiCk, a 8-bit animation file format produced by autodesk animator, I think. Replaces FLIck files, adding better compression and removing some limitations.
Depends.
It was probably slashdotted at the time.
Some of you may have already noticed I released a DirectDraw hack - a partial reimplementation of ddraw.dll I wrote because I was having some trouble getting old wing commander games to run (windows versions, mind). Apparently it already, out of the box, works with some other games, but I've also released all related sources including my directdraw wrapper, which can be used to reverse engineer what the heck the games are doing.
I said some of you as the article made the front pages of both slashdot and reddit - we're at over 60k unique visitors and the article has been out scarcely two days. Its popularity came as a huge surprise to me and our poor server, which got hammered rather badly. Teaches me to coral cache things before posting on slashdot..
There's some rather nasty comments on slashdot and reddit, which I don't mind, but what I do mind is being misquoted, so for what it's worth, here's some clarifications.
I never, ever, EVER, said that win7 doesn't have directdraw. I said directdraw is deprecated, which is not the same thing. I also said that directdraw doesn't seem to work too well, which is somewhat true - the palette issues, at least. The fact it switches video modes is how it's supposed to work, but I like my way better, even if it's not exactly per spec.
I've received bunch of email telling me where to find upscaling filters. I never said I'm looking for upscale filters, I know what they are, I know where to find them. I'm just not interested.
I do not dislike the way the games looked originally. I added the filters because they came "for free". If you must know, I played wing commander 1 and 2 with the "halfnhalf" filter, and wc3 with bilinear and small videos.
I also never said it's a FULL reimplementation of directdraw. It does NOT change the way windows explorer works, or whatever. It's just a hack to pipe old games' output into whatever I found more convenient, which in this case meant OpenGL. Which also made the bilinear mode brainlessly easy to implement.
I did look at WINE (unlike some folk thought), but it's GPL, which I don't touch unless I really have to.
I never considered virtual machines. Using VMs to run realtime games sounds like even worse trouble than killing explorer..
Finally, these are windows games, so dosbox is, naturally, out.
From the stats, it looks like reddit is a bigger traffic driver than slashdot is, but I'm looking at the traffic that actually got through. It's more likely that slashdot drives tons of traffic in a very brief period of time, and reddit drives less traffic but on a longer time span. The Death Rally article that got on slashdot about a month ago drew about 23k visitors in a week, which was a lot, and hammered the server.. this time we're over 60k in 48 hours. So yes, the interest has been surprising.
Anyway, unless something surprising happens, I'm finished with the ddhack; feel free to hack it further.
More of these (and explanation what they are) here.
Increase resolution.
Good question. It's all about hierarch.. wait a minute, how did that search end up on this site?
Hindsight 20/20, swizzled source material might have been a good idea.
Two liters of coca-cola in a two desilitre cup. Spills a bit.
Thanks, I guess.
graphicsmemorypointer[memorylocationofpixel] = pixelcolor;
Yes.
What?
No. Second attempt fails. Luckily, you can edit the window class on the fly with SetWindowLong and negative offsets. Yes, it's a hack. Yes, it's documented in MSDN. No, I'm not making this up.
currentpixelcolor = areweinsidethecircle()
Whaat?
Learn "to graphics" then.
I have no idea what's going on here.
Parallelize.
I didn't realize they had programming in the pizza hut university..
Smells like school assignment..
..as does this.
...
Set to 1, shift left until zero.
Get experience.
Figure out how to do them by hand, devise algorithm step by step, and implement in C++. This applies to other things than karnaugh maps though.
My first thought was about how dirty my keyboards are getting again, but in seriousness the keyboards do include electronics which may contain hazardous materials for the environment, so.. yes.
Seriously, now.
I keep seeing this a lot. I have no idea what's behind it.
You tell me.
For the sense of accomplishment?
It's a joke.
My updated CV can be found on the "who" page.
Figured this might be a good time to dust off the BBD sources and release them. You can find the zip under "code" if you're curious.
In other news, the death rally porting article has had over 20000 visitors, thanks to having been on both slashdot and reddit front pages (as well as a bunch of smaller sites). I also received bunch of very interesting emails as a reaction to it, and made a couple new friends.
As to the wrapper I talked about earlier, it's taking shape, more or less. You can find download links to the work in progress on this thread on the Wing Commander CIC forums. If you're curious to take it for a spin, you can download wing commander 1 legally here; it was recently released to celebrate the 20th anniversary, or some such. That's the windows version of wc1, so my directdraw hack dll will work with it. For some definition of "work", naturally.
That's it for now. I'm going to bed.
So, like I mentioned, uh, yesterday it seems, I've been playing around with the "wing commander kilrathi saga", which is somewhat old.. in fact so old the wing commander 1 and 2 are constantly running in 256-color, 320x200 mode. They were originally DOS games, and the kilrathi saga box contains windows ports of these games.
The games use DirectDraw - the directdraw2 interface to be precise. When I run them, windows naturally switches to 256 color mode and blows up the resolution and all that. Irritating. Additionally there seems to be some palette issues, which can partially get fixed by switching on every single compatibility option Win7 offers.
So, how to fix this? One way that comes to my mind, especially with the experience from SolVBE is to write a new implementation of ddraw.dll that would handle things in a bit more modern way (as in, we don't care about performance as much and would rather have things run nicely)..
So my first step was to search the net to see if someone has already done this. If we don't count wine, which I don't, there's nothing exactly like it out there. There is, however, tons of ddraw wrappers for various reasons - mostly to fix obscure bugs in old games. These are ddraw.dll wrappers though, and not full reimplementations, meaning there's a fake ddraw.dll the game talks to, which forwards all calls to the real thing, except for some small tidbits which they tweak in order to fix issues.
In some cases these even go awry, as I found a couple discussions about "fixing a game" by deleting ddraw.dll from the game directory. But these kinds of wrappers seem rather common.
Anyhoo, I found the sources to one of these kinds of projects, released under a permissive license, and reworked the source code to work with wing commander 1. This meant to implement wrappers for directdraw, directdraw2, directdrawsurface and directdrawpalette interfaces.
I also tried to see if my new call-logging dll worked with wc3, and found that it used only the directdraw interface (not directdraw2), but used it in much wider way than wc1/wc2 used directdraw2. I tried to tweak things a bit but gave up; there's something going on with the pointers that I don't quite follow (ending in the app using a null pointer); probably some small mistake on my part, but regardless, I figured I can play with it later if needed.
I consider the wrapper/logger to be as far now as I'm taking it, and if I go further with this project, this is the point where I ditch the calls to the original dll and start rewriting stuff. So this is also the logical place to release the sources before I blow them up. As I based them on some source off the net, maybe someone will base their code on this version. Who knows?
The move towards more and more DLC is worrying to me, if only because of historical perspective.
Here's an example. The wing commander kilrathi saga. EA bought origin, and the box was released after that. So there's no reason why EA wouldn't keep hosting the DLC, now is there? It's not like they went out of business, or lost origin's data or something..
So what happens when you go to the well-advertised URL? Yes, you guessed right.
In other news, it's been over three months since my article about porting death rally to modern platforms was published, so I can post the text here for all of you who missed it in the print. You can still buy the digital copy of the magazine.
Also, here's a photoshop tutorial I did a while ago and forgot to mention.
It's been one hellishly hot summer here in Finland. I mean, over 30 degrees celsius for weeks on end, with scarcely any rain. (That's around 90 degrees Fahrenheit for you barbaric non-metric people).
One of the things I've been involved with recently is this book thing. You see, sometime in the early 90's I ran a BBS, and at one point my father wrote a book, chapter by chapter, in it. It was a story he had written originally as a kid, but this rewrite was, naturally, quite a bit deeper and richer.
I stumbled upon the file in one of my old hard drives, and figured it would be a nice surprise to turn it into a real, dead-wood, physical book. I spent a few days with my wife poring over the text, fixing most glaring typos and grammar errors, did layout and printed a single copy on lulu.com.
This single copy showed that we had to do much wider margins for the book to be readable (the binding takes surprisingly much space from the page). I gave the book to my father who was rather stunned, and we agreed to do print several of them to be given to friends and family.
Of course when my brother heard of it, he wanted in on the project (I had not mentioned it earlier to make sure the surprise wasn't spoiled), and I was more than delighted to receive his input and cover design (seen in the picture).
The book itself is a mystery thriller kind of thing, starting with a plane crash with a lone survivor suffering from amnesia and a drive to figure out who he was. I'm biased, of course, but it's a real page-turner. It's got the kind of "truth" in its tone that Brenda Ueland is calling for in "If You Want to Write". And it's written in finnish, of course.
In other news, I turned Atanua's licensing upside down. Considering that I'd received approximately zero licensees in the past two years, I figured I might try something different. Now schools can get a free license by asking for one - so I might actually find out who's using it - and other people get the chance of paying for it.
Nothing from me to Assembly this year, I'm afraid. I have a few ideas, but absolutely no time. There's just way too many things fighting for the little free time I have - and several of them are much more far-reaching than a rushed demo or game project at this point would be.
It's also soon three months since my article appeared on Game Developer, so I can re-publish it on this site soonish. The whole process with GDM was a very interesting one; I recommend trying it out, if you get a chance. One of the things that really surprised me (in a positive way) was the contract - being in the IP business, I'm used to seeing contracts where you have to give up 37.5% of your soul just to do something simple, this was straight-forward and quite fair. The editorial process was very interesting, if rather rushed near the deadline (but what isn't?), and the resulting text is much better than what I write "naturally".
Finally, I turned 0x23. Yay.
A fresh mammoth set of recent search terms for your enjoyment:
If you're using OpenGL, which includes line primitives (ugly ones, granted), why are you looking into bressenham?
We use PC case fans. They're cheap and simple to use. Just plug in 12 volts.
Beats analysing database access times, in my opinion. Although I guess that can be fun too.
Representing any map of a spherical object is tricky, heightmap or otherwise.
Take position 1. Take position 2. Calculate delta (difference) between the two. Increment position 1 by a fraction of this delta until you reach position 2. That's it.
I don't have any idea, really. I don't think you should. Instead, you should be drawing a bunch of pixels at once.
As far as I know, neither file formats are not in the wild. They are (supposedly) extended fli/flc files with 16 or 24bit color.
Do 8 pixels at once. It may get a bit tricky but it's doable.
Don't.
Do your own homework.
Use a small icon. =)
I took it from hero's quest 2, don't know the actual origin.
wat.
Sometimes. Rarely. On exotic (or legacy) platforms all the time. Also in some performance-critical places, as well as when doing size optimization.
And you didn't consider sending me a mail about it?
Doesn't sound like a much of a thesis to me.. more like a FPGA course project, and a simple one even then.
Buy the English version?
You don't. XP doesn't work that way. There's no access to the video BIOS the same way it was possible in DOS and win9x.
Bits get toggled. Arithmetic needs to understand values. That's how I'd see it.
...
Draw sprites instead, or something. Blit stuff. Draw textured rectangles.
Alpha textures? Of course you'll get sorting issues, but you can solve those by first rendering backfaces and then the front ones.
Marketing.
Practise.
Increase airflow.
There was a VESA call for that, but in practise I used the VGA retrace registers, seemed to work everywhere.
What's stopping you? Just pick pen and paper and off you go. Implementing your design is a different matter..
That's... quite specific.
Scroll different layers at different speeds. A simple multiplier of the primary layer is enough.
Add some interpolated noise to it.
Sadly, this depends on the platform.
Someone suggested I should add a syntax hilighter to this site. All I could find were overly complicated, bloated libraries. I took another swing at trying to find one, and found exactly what I wanted. So, now the site uses this syntax hilighter. I did make some slight modifications to it, as I only want the cpp syntax to be hilighted, and added a couple tiny bits. But nothing much.
The result is something like this:
// hello world
#include <stdio.h>
int main(int argc, char ** args)
{
printf("Hello world!");
return 0;
}
Only a slight html markup change, a couple lines in the header, and a 9kb .js file you'll only download once while visiting this site. The 1% that has javascript disabled will see the above the old way, without colors.
Another thing I've been looking at, html dev wise, is the google font directory. There's a couple of effect fonts in use on this site, and I've tried to produce a list of fun fonts for each, which means that different folks see this site in a slightly different way. Using the font directory would at least make things consistent (but would, naturally, increase the initial download size of this site). Might try it at some point.
Due to some requests, here's a particle system basics tutorial.
Have fun!
Further proof that toddlers are living an adventure game: voiceovers.
> POINT AT A THING
Dad says: "That's a tree."
> POINT AT A BLOCK
Dad says: "That's a green block."
> POINT AT THE BOY
Dad says: "Yes, that boy makes a lot of noise."
Ever since I watched a presentation by Coverity, I've wanted a static code analyser I could run on my hobby projects. Basically what the static code analysis does is that it compiles your code into some kind of intermediate code tree and then runs various checks on it. Coverity, for instance, goes through every single code path possible (if instructed to do so, naturally) and finds very obscure bugs.
Now, Coverity (and Klocwork, and Sentry and..) are commercial products, priced at "if you need to know, it's too expensive". Kind of makes sense, as that way they don't have to spend so much money on the support, and they have plenty of huge companies who are ready to pay the bill.
Personally, given the power of said static analysis tools, they should be available to everyone for the betterment of humankind. Grandeously put, but I'm serious: there's rather few things that have happened in the last decade or so that have similar impact on code quality. And they're keeping it to the rich kids. (Okay, coverity has scan.coverity.com for open source projects. Granted). I know the LLVM Clang project has (or will have) some kind of static code analysis in it, but like everything else LLVM related, it's not convenient on windows at this time. Clang will improve code quality in other ways as well, so I see it as The Future, but it's not here yet.
Finally, doing a relatively unrelated search today, I stumbled upon cppcheck, a very easy to use, powerful, open-source static c/c++ code analysis tool.
I hit Atanua with it, and it found an obscure memory leak which you're not too likely to ever hit, and even if you do, you won't know it happened. But it found it!
I'm still running a check against my whole codebase of all projects (which will take a while). I've had no false negatives so far. The cppcheck wiki lists an impressive number of bugs found in large open-source projects.
If you code in c or c++, be sure to check it out!
In other news, I'm ressurrecting this thing. Trying not to say too much about it, lest I kill it (again).
Finally got the CSS conversion done. That took a bit more effort than I expected. Some bits may still look a bit wonky where I didn't bother figuring out how to make stuff look the same as before, but it shouldn't matter.
I split my "major" source projects into their own project pages, and added some information.
While converting the pages, I found a whole tutorial I'd written at some point but never released - clicky here for some joy of springs!
I also noticed that I'd already written five new chapters for the GP tutorial, so "the second 90%, part 2" is about halfway done. I should really finish it, but time is always limited..
And anyway, I don't even know if people care about said tutorial anymore. At the least, nobody's offering me a copy of visual studio 2008 pro version. Bwaah!
(With vs 2010 around the corner, I'd think microsoft would have plenty of copies they don't know what to do with at this point..)
The CSS conversion is at around 80% now, including all of the tutorials. Along the way I noticed that I'm about halfway through writing block E of the gp tutorial. Meaning there's five unpublished chapters already. Oopsie. I should get on with it and finish the rest of the chapters.. but while we're at it, I should go through the whole tutorial and update things. Such as the SDL installation chapters, which are largely out of date.
I've been listening to the soundtrack of Wicked the musical (on spotify) for the past, um, two weeks or so, on a loop. It's just brilliant. On the other hand, I previously got hooked on Chess the musical (on spotify), it's not too surprising. And when I say hooked, I mean at one point I was able to recite the lyrics from memory.
So I guess I have a thing for musicals. Too bad I haven't actually seen too many of them. Why oh why don't the theatres make dvd releases of their performances?
I've bought several games on steam - on discount - which I've tried to play for a while and then figured they're not worth my time. Kind of similar effect as spotify had on music - when I don't like something on spotify on the first listen, I don't usually give it a second chance. Since I haven't paid (much) for something, I don't feel like I should invest too much time on it.
Anyway.
Couple games I've tried recently were dirt 2 and X3:terran conflict.
Dirt2 is pretty fun especially since it can be played with one hand. Meaning, I can play it while Niklas is sitting on my lap. He usually has patience to watch a couple races. The graphics are neat, and at easiest setting the game is pretty fun even for someone who doesn't generally play racing games.
As for X3:TC, I played through the "flight school" tutorial. Well, twice. I died the first time. The game seems to assume I've played a lot of space sims recently, but I was able to figure out what I should do eventually. Like for instance, after docking, the tutorial says I should undock, and it took a while for me to figure out how this happens. First the game tells you that pretty much everything happens through communication menu, and then undocking is a separate button on another side of the screen..
But that wasn't the thing that made me stop trying. While going through the illogical tutorial ("I dropped a crate nearby", said him, and the crate is 12 kilometers away in completely different direction) I found the "accelerated time" feature, which I promptly started using at every opportunity.
When the tutorial told me to talk to the space station to dock, I did, and the station told me to dock when the lights are green. So, there's a green light there somewhere, so I just approach the station, assuming same kind of docking system as with some of the sims I've played earlier. Instead, I collide with the station and die. Oh, thanks.
On the second attempt, I ignore the tutorials instructions and select the autopilot's docking feature, and then hit the accelerated time. Remember, the station is right there, I collided with it after all. The docking manoever took a couple minutes, on accelerated time.
At this point I had gone through the initial tutorial which taught me how to accelerate, decelerate, shoot things (also with missiles, although my ship didn't come with any, so I had to cheat through that part of the tutorial), and how to talk with objects. And an hour had passed. Mostly at 6x accelerated time.
Okay, sure, space is big and authenticity and blah blah, but the game so obviously wastes my time it's not even funny.
I guess that's enough ranting for now.
LD17 came and went, I didn't have time and/or inspiration to do anything. Sorry!
I've been updating the site to CSS slowly, current progress includes the top-level pages and all the story pages. Total progress is at 32.5%, so there's still some ways to go.
I've also found (finally, I guess) that CSS is not perfect, and still requires some ugly hacks to get what you want. Here's a puzzler for you css gurus: open one of the top-level pages, say, 'games' for an example. I've made these funky link block thingies as the top-level pages are basically just huge link lists; I'd like to center the text verically. How to do that?
The most "elegant" way I've found so far would be to give the style the attribute display:table-cell and vertical-align: middle, but that eliminates the min-height property, which means I'd have to add an invisible GIF to stretch the cell.. which is the kind of stuff we wanted to get rid of when we ditched the tables, right?
That vertical align thing kinda sounds to me like it should be simple and obvious to do, but it isn't.
So, I saw some clips of mythbusters on youtube, and figured that might be a fun show to watch. So, what are my options in obtaining some?
Play.com lists one european mythbusters release (apart form the two 'specials', which I'm not counting). Apparently this season 1 box is badly mastered, with no subtitles, and so on. Also, only one season is available. At least it would be relatively cheap.
Second option - some online video-on-demand service. Oops, don't work outside US. Or if they do, they still don't happen to work from here, or in the off chance they do, the offerings are slim.
Third option - get a TV, some damn satellite channel setup, and hope they play what you want. I'd rather not. For those who don't know, I haven't had a TV for a decade. I may write about that at some point - it's great!
Fourth option - let's check amazon.com. Plenty of "collections" and "seasons" available, more expensive though. Except that they're naturally on a different region, so actually using them here is iffy.
Since we're on the iffy region already, the fifth option would be to install some torrent client and grab the damn things off the net. This one seems to be the easiest and most convenient way. HELLO? CONTENT OWNERS? ARE YOU IDIOTS OR WHAT?!
So, not watching any mythbusters any time soon.
In the course of years, I've been a mentor for several people. In one occasion, I even travelled to another country to attend my "pupil's" wedding. Mentorships can be very rewarding for both the mentor and the pupil, as someone put it, "when one teaches, two learn". Several of the tutorials you can find on this site have started from such discussions.
Yesterday, Tonic asked if I've ever written down any ground rules about the mentorships, and since I haven't done so yet, I figured I might as well do so.
So.
I also expect people to be sensible. There's been a case where someone sent me an email with a bunch of questions, and then published the answer as an interview - not something I expected, or appreciated.
I was reading some pirate-themed children's book to Niklas the other night, and got the itch to play Sid Meier's Pirates! Live The Life (that's the whole name of the latest incarnation) again. So I take the disc from the shelf, install it - fingers crossed that it'll work in 64-bit windows 7.
Install goes fine, the game itself makes win7 to turn off aero - not that I care, since the game runs in full screen anyway - and it runs.
Or well, I skipped a part there - after install, I went and searched for the latest patches. The official site, which google finds (and to which I linked above) is horribly broken. But hey, it's been five years since the game has last seen any support, so should I be surprised?
The game was released in 2004, and the last patch (which I eventually found from firaxis' site) came out in 2005. Okay, I know, it's probably no longer selling like hot cakes, and as such supporting it actively (like fixing the win7 aero glitch thing) would be a waste of money. Or would it?
Pirates! is such a loved classic - it's been remade a bunch of times now - that slight updates to it would probably still make it sell more copies. Perhaps they're banking on graphics technology marching on slightly more and then doing a completely new Pirates! again (kinda like they're milking civilization)..
Some indies do support their games long after release. I find that very nice indeed. Those are often the titles which wouldn't actually need much support after the release.
Others don't, and in indie games that's worse than with the so-called AAA titles, as often indie releases are rushed out, with polish applied only to the first parts of the game, leaving the rest feeling empty, buggy, and possbly flawed. There's a couple indie studios I've supported in the past from whom I'm not going to buy another game due to them dropping support for their (in my opinion, unfinished) games so quickly.
For non-indie companies, the lack of support for long-lived games just feels wrong. There are a few companies that keep supporting their old, in some cases ancient, titles - valve and blizzard, for instance.
An alternative would be to release the loved title as open source. There's been a few cases like this as well, and I love the companies that do this - especially for titles that I've loved, like Star Control 2 - oh sorry, ur-quan masters. I'm not seeing more companies do this though, as there's little money in it for them. I'd still like to see more of it, if only to preserve the culture. Yes, I know, there's licensed technologies and all that, but you know, people who love these titles are ready to put the effort in to rebuild the pieces that are missing.
Oh well, I'm probably not the best person to talk about long-term support of things, especially as there's tons of things on this very site which could see some refreshing. ESCAPI, for instance, doesn't work on 64bit machines. Neither do any of my old webcams, so I'll need to buy a new one just to update ESCAPI - and somehow that doesn't feel like a priority right now.
In other news, the CSS conversion project is at 17.5% currently. All "older news" pages updated (with new titles added for the very old stuff), and the "who" page also got an update along with the css-ization.
Bunch of older news pages have now been turned into CSS.
This site transformation is much more work than any of the earlier ones, partially because it largely can't be automated, partially because it's such a paradigm shift (mostly validable html - how quiant!), and partly because the site has grown.
I'm counting 188 pages at the moment. In November 14th, 2007, when I did the last page redesign, I was at 156 pages. In that update, I changed from purely static html pages to locally compiled php pages. That change does make this one easier, but doesn't remove the need of manual work.
The css file still gets constant updates as I find new things I want to express.
Recent Search Terms in new format now. Still abuses <i>
, though, but I'll deal with that later.
Edit: Apparently Chrome doesn't like loooong pages with boxshadows, so I split the RST collection into several pages.
My article on the journey I went though when porting Death Rally to windows is in the April 2010 issue of Game Developer Magazine. Yay! The April issue isn't yet available on the site as of this writing, but it'll appear there eventually. Update: it's there now.
And no, this isn't april fools.
And I have a flu. Which will probably pass much quicker than I update this site. =)
Spent some time writing up a sphere mesh creation routine. The texture mapping was interesting enough to provoke me to do a small writeup about it. Enjoy!
Also, windows programming tutorial is now in the new layout. The conversion to css is a long process. I also started looking at the other older tutorials are realized that, since I was talking about directx, they're pretty much obsolete now. If I had been using OpenGL then, they would still be relevant.
On the other hand, OpenGL drivers really sucked back then.
Soo.. I finally ran through Mass Effect 2. This post may have some slight spoilers, although I'm going to talk about game mechanics, not plot as such.
Some folks have complained that the plot was weaker than in mass effect 1 - well, in ME1 you had the whole universe to explain while doing the story; in ME2 things just moved forward without all that backstory to cover. Hence, less.. stuff. Assuming you had played ME1 first.
When I read some of the hype on ME2, I got more and more worried. The hype was mostly about combat, combat, combat, huge team, and most worryingly "collecting all complaints on ME1 and fixing every one".
The last one is a disaster in the making, always. You can't make everyone happy. You'll just end up making everyone somewhat miserable.
People had complained about the long elevator ride loading times, so these were replaced with.. loading screens. Apparently people had complained about getting back from missions, so now missions end very abruptly when you do some key action. Each mission ends with a "mission end report" screen, and bang, you're back in your ship.
All of these changes make the whole game much less immersive and more.. game-y.
They also ditched the driving-on-planets mechanic (sadly), and replaced it with extremely tedious minigame where you manually scan planets' sufraces for materials and shoot them with probes. Then wait for the probes to hit. This is the kind of stuff you'd assign to a computer, not the commander of a spacecraft!
I'm actually half tempted in reproducing the minigame just to see if it's possible to make it, you know, fun, by doing a couple changes. I'm pretty sure it could: First, let me scan forward while the probe is in-flight. Heck, let me shoot a couple hundred probes if I want, with several in-flight at the same time. Second: how about some visual markings on my findings so far, so I don't have to keep guessing where I haven't scanned yet?
To balance things off a bit, they picked up another chapter off star control 2: you now fly your craft around with the mouse from one star and planet to the next. A little touch, but nice.
Other changes - inventory management, battle system - I agree with wholeheartedly. Side missions have also improved a lot; where in ME1 you have the same building to go through in several side missions, in ME2:s each is completely different environment, with much more varied stuff to do in them.
The contrast between side and story missions is staggering. In side missions there's little or no voice acting (just readable text), and rewards are pitiful. But I guess they'll have to be, or they would upset the balance.
There's tons of characters to talk with and get to know better. I don't know if this is a good thing or a bad thing. On one hand, there's limits to how well you get to know some characters, but on the other hand, many of the characters are really interesting. What irked me somewhat is that it seems every single female crew member is a potential romance target. (I played a male character in this case). This was slightly a problem in ME1 too, where all of a sudden the two romance possibilities pop by and ask which I want to be with. And I thought we could all be friends..
Anyway, I heartily recommend Mass Effect 2, especially if you enjoyed ME1. Be sure to import your saves from ME1, as there's a few metric craptons of stuff they pick up from there - not just your big choises but lots and lots of small ones too.
The IMGUI tutorial has been moved to the new layout.
One of the problems with this overhaul is that the site actually is a hodgepodge of various styles. Some are relatively easy to just force into some kind of uniform style - the stories for instance - while others require more thought. Like, what should the recent search terms listings look like?
I had to change the style of this page quite a lot while changing the tutorial, as I had done several mistakes. I doubt I've fixed all the mistakes yet. Or at least, I'll find better ways of doing things.
A couple things I tried and discarded - the background image (the brown sun pattern) was 'fixed' in the css at first, but I found that this makes scrolling extremely slow on netbooks, since it has to re-render the drop shadows all the time. I changed it back to scrolling and it's more tolerable. Doing it with the png hack would perform better, but.. this is just so much cleaner!
Another thing was syntax hilighter. Since I was converting pages with some c code in them, I thought using this would be neat. I discarded it since I think it was doing too much; I just wanted colored words, not a whole lot of.. stuff.
Speaking of baby steps (and to demonstrate what code blocks look like), watching a 1-year old toddler kind of reminds me of an adventure game..
> GET ALL
You can't carry that much.
> LOOK
You see assortment of wooden blocks of different sizes and shapes.
> GET WHITE CUBE
Taken.
> USE WHITE CUBE WITH FLOOR
That has no noticeable effect.
> USE WHITE CUBE WITH TEDDY BEAR
That has no noticeable effect.
> USE WHITE CUBE WITH DAD'S FOOT
That has no noticeable effect.
> USE WHITE CUBE WITH GLASS DOOR
That makes a nice sound! Oops, you've been picked up by dad.
So, I figured it might be time for another site overhaul. It's been about three years since the last. This one will take a while to finish though, as there's about 183 pages of bad markup to go through.
I've known for a long time that my site's HTML isn't quite up to date, but moving to CSS has been slowed down by two things.
First, I didn't know how to build a site with CSS, which was remedied by ordering "CSS: The Missing Manual" (ISBN-13: 978-0596802448). I heartily recommend the book. It's been written from exactly the point of view I needed, with word of caution here and there about the compatibility issues, and how to work around them. Which doesn't say that the page you're currently looking at is perfect. There's bound to be some things I've messed up.
Second reason for delaying is Internet Explorer 6, but it's pretty dead by now, with only about 3% of this site's visitors using said browser. The new pages will still be usable with ie6, but I won't stress making them pretty.
As far as prettiness goes, the drop shadow effects used in the layout are no longer fancy png trickery, but use the possibly-in-the-css3-draft box-shadow instead. This means a few things. First, the pages are lighter. Second, the shadow effect only works on pretty recent browser versions, but won't break the site for older ones. Third, the css doesn't pass validation due to this.
And yes, there's an ie workaround for the shadows. IE shadows are slightly different, since they use ie's rather ugly filter shadows instead of the box shadows of all the other major browsers (firefox, chrome, opera, safari).
Based on browsershots, the only browser for which the pages don't work at all is some old version of opera, which doesn't show the top navigation. The others either give the intended outlook, don't render shadows, or (if old enough), show a blown-up page where the top navigation isn't horizontal - ugly, but still usable.
The textmode browsers, links and lynx, naturally work too.
I'm not sure which order I'll be updating these pages in, and how much I'll revise the content while I'm at it. As of this writing this is the only page which uses this layout. Even the rest of the 2010 news, which I archived (link below), use the old layout for now. There's plenty of small issues to fix and things to learn. It may be a bumpy ride, so hold on to your hats!
Here's the first bunch of Recent Search Terms, or stuff people have written in google searches ended up on this site, of 2010. It's been several months, so this is a biggie.
o_O
Uh.. all of them?
This is a bit tricky. Basically you need a histogram of the image you want to adjust contrast of, and then scale it. You may wish to apply some curve to the scaling to fix possible gamma issues. If correcting video feed, apply plenty of low pass filtering to avoid irritating artifacts.
Do something outrageous, and make sure you get a lot of publicity from it. Whatever it is, you're bound to get fans. Even serial killers have fans, for some odd reason.
Sounds like either broken hardware, or you're pointing the camera directly at a light source.
Sad but true.
Yes.
Yes.
What does the categorical imperative have to do with graphics?
Do your own homework.
In all the images I could find of said character with google image search, it seems to have its mouth shut, so that's a good question.
That's one tiny screen you're trying to create. Try it without the fullscreen flag, and it just might work. No guarantees though; windows, at least, has some limitations on how small window you can create, at least if you want the window to be decorated.
Now, this is one great business idea. Shovelware MMOs built to order!
Uh, using google is easier than picking up the manual?
Try white. Maybe with a slight tint of blue. The difficulty of portraying snow "correctly" comes from the fact that each of your eyes sees snow differently. Maybe with stereo 3d rendering, one day..
if (!old_and_busted()) new_hotness();
That sort of depends. On things.
If you need to ask, you can't afford it.
If even the top dog is having financial problems..
Do your own homework.
Screwdriver works pretty well. Depends on the keyboard.
Start by being obscenely rich and famous.
Drop a bunch of music files on a disk with minimal graphical interface. Seems to work for most people.
Uh, you just did?
facepalm
Let's see. Can you freeze remote objects by the power of your mind alone?
Do your own homework.
Sucks to be you, eh?
Do your own homework.
Depends on the pixel you're trying to put. A b/w screen doesn't really care about the tint of the black or white you're plotting.
Sometimes.
No.
What?
Do your own homework.
Do your own homework.
Did I? Not really.
Someone please tell me what the heck are these talking about?
Apply plenty of ventilation.
It's kinda defined that way.
Apart from these there were an obscene amount of atanua searches, suggesting it's being used a lot. The stats suggest atanua gets over 100 downloads a day on average. Still, nobody seems to be interested in actually licensing it. Oh well.
Did some research and a writeup on rendering tons of cubes in OpenGL.
The way this site currently works is, I like to keep the web pages as static html files, but I also like to have some scripting possible for the repetitive stuff, like for instance the header and footer html code on every single page of this site. Thus I have a local PHP installation and makefiles to bake the html files, which I then upload to the site using scp.
Make has this functionality of running several build commands at the same time, using the flag -j. Without the flag, only one task is run at a time. If some number is given after -j, that's the task count. If not, make will spam the system with as many threads as it can.
So I figured I'd optimize the whole-site-rebuild using this functionality. The whole-site rebuild isn't needed often, mostly only when I change the global layout, so it doesn't need to be super-fast. Still, the multiple cores are there, so why not use them?
The new system is a intel i7 with four cores, hyperthreaded to look like eight. The conventional value for the -j flag, that I could find when googling, is "number of cores + 1". So should that be 5 or 9 in this case? Let's look at the data.
Tasks | Seconds |
---|---|
1 | 109.256 |
2 | 57.247 |
3 | 42.092 |
4 | 32.957 |
5 | 27.520 |
6 | 26.518 |
7 | 25.304 |
8 | 24.024 |
9 | 22.918 |
10 | 22.410 |
11 | 21.708 |
12 | 21.183 |
13 | 19.769 |
14 | 19.691 |
15 | 19.375 |
16 | 18.278 |
17 | 18.121 |
18 | 17.947 |
19 | 17.759 |
20 | 17.498 |
21 | 16.744 |
22 | 16.893 |
23 | 16.931 |
24 | 17.093 |
25 | 16.383 |
26 | 17.247 |
27 | 17.164 |
28 | 16.995 |
29 | 16.820 |
30 | 17.404 |
inf | 18.553 |
The data shows that the speed keeps increasing way after 5 or 9 concurrent tasks, and levels out at about 21. After 21 tasks, we're starting to get noise - 25 tasks is again faster, no idea why. It's also fun to note that the "infinite tasks" case takes a couple seconds more than the fastest case.
Running 21 tasks at a time does take 100% of cpu time though; at 5, task manager peaks at about 67% of cpu power. And it's way better than when running just one task at a time. So, I guess it depends on what you're doing at the same time.. but if you want the task to be finished as soon as possible, the optimal value is closer to number of cores * 2 than number of cores + 1.
Most of the processing time probably goes to spawning copies of php.exe. If I ran php as a service, things would probably be much faster - but they don't really need to be.
Greetings from the candyland of windows 7.
So far it's been mostly positive experience. I've managed to find the bits I've needed to with rather minimal googling, all sorts of new dialogs have been refreshingly helpful - I especially like the way windows now asks when overwriting several files whether to overwrite or rename, and so on.
I've mostly got the system configured, and so far I've had two apps that don't work. I feared my somewhat-dated adobe photoshop cs2 wouldn't work, but it does - and I can tell it to use 100% of the memory it sees, which is kind of fun. (Which is about 2.7 gigs, it being a 32bit application). Spotify works, ultraedit works, etc. And since you're seeing this, php and cygwin work as well.
First of the nonfunctional apps is visual studio .net03. Yes, it's old. Still, apparently microsoft decided to kill it at about vista timeframe. There may be some technical reason for this - I don't know - but it seems a bit artificial. The program installs, and you get a dialog just before the install is finished that the program is not supported. It runs (again, warning on every launch, although you can disable the warning), compiles, but will not run or debug.
So, I uninstalled it, and pondered on my options. I could downgrade to the express editions, or I could pay 170 euros for update to ultimate to get the "XP Mode" for which there's not even any guarantee would solve the issue. I don't know, for instance, whether 3d acceleration works under virtual PC now. Probably doesn't.
Anyway, I installed virtual PC and set up XP in it just in case I need to try something in virtual-XP at some point. Didn't install visual studio in it or anything yet though. I know there are some hacks out there which would let me turn this virtual-XP into full-blown XP mode without upgrading to ultimate, but I'd rather not go down that route.
So, yes, I did grab the express edition. We'll see what kinds of distribution problems crop up this time. Sigh.
The second app that hasn't worked - maybe because of the 64bit windows, I don't know - is saints row 2 on steam. It didn't quite run on my old system, so I figured I'd finally have enough horsepower to run it now. Started, crashed. Started again, ran fine, tweaked some graphics options, quit, restarted, crashed. Restarted, crashed. Figured I'd try some of these compatibility options, which resulted in two things. One: Steam now has the saints row 2 icon, and I have no idea how to remove it. Second: steam now says the game is currently available, and I should try later. Sigh.
Edit: Found that changing the compatibility environment clashes with steam's copy protection, hence the "not available" thingy. Using the compatibility options to disable fancy UI goodies while running the game fixed the problem, so saints row 2 runs for me now.
My preordered copy of mass effect 2 still hasn't arrived. I got the preorder goodies code through email on Jan 29th, so the disc itself has been in the mail for at least two weeks now. Maybe it comes tomorrow? Sigh.
In the meantime, just to try things out, I installed both mass effect 1 and dragon age: origins, cranked all detail options to max, and enjoyed smooth framerates.
Oops, long time since the last update. A bunch of things have happened, but nothing really interesting.
Played through Dragon Age: Origins. The DLC thingy is somewhat worrisome in my opinion. The version I got included all the DLC and all the preorder goodies, so I got the "full experience" so to say.. the DLC that included the golem was pretty much mandatory for the game in my opinion, but the other stuff, especially the preorder goodies, were pretty much just fluff.
Anyway, before I got the game solved, another DLC came out, so I got to experience the "hook" they added. Very, very irritating. If I had played it from the beginning without any DLC, I don't think I would have enjoyed the game nearly as much. Not because of the lacking functionality, but because of the nagging.
What next? Popups in-game?
And don't get me started on the used game business or what kind of slippery slope the whole DLC thing is.Buy a game for 60e and be prepared to pay another 60e to get the "whole game"? Why not just give the first part for free, online, and have a possibility of buying the whole thing on a disc in retail stores. You know, like shareware worked.
The whole DLC thing started - as far as I can recall - with some need for speed game. You could download more cars for free. Then they even ran a poll on whether people liked this system, and lots of people said they did. Okay, so they thought they get more stuff for free, while I thought it would have been nice that the whole game came on the CD.
I installed said need for speed a few years later, and of course the downloads had disappeared by then.
I didn't mean to start ranting but there you go.
I just hope mass effect 2 doesn't have the same kind of system. It probably does. I can already imagine it.. Captain! We received a distress signal! Pay five euros to answer it! Immersion? What immersion?
So yes, I haven't played mass effect 2 yet. You see, I decided topreorder it, so it naturally hasn't arrived yet in the mail. The net is full of spoilers already. It's irritating. Anyway, I'd like to wait for my new PC to play it on.
My good old PC has started to act strangely - doesn't boot every time - so I decided to bite the bullet and ordered new PCs from a store. The machines should have arrived by now, but I hear they have trouble finding the video card I picked.
Sigh.
Anyway, I feel like kid waiting for Christmas, as the new PCs should be, at least on paper, about four times as powerful as the old ones. I can't remember when I had a similar jump in PC speeds.
Speaking of the new system, it'll be 64bit windows 7. I've received some bug reports lately regarding directshow stuff - ESCAPI and textmedia - and the common factor seems to be 64bit windows. We'll see if I can fix the issues. Or when I find the time.