2d to sphere mapping
I was writing a small demo recently. I usually write demos so that I have audio system integrated from the get go, but this time I wrote basically the whole thing to SDL_GetTicks() before dropping the music in and doing sync.
Anyhoo, what I did notice is that the framerate started to suck immediately as I put the music in. Decoding an ogg shouldn't be that heavy, so I suspected the timings I got from the audio engine - and yes, I was right. (There's been discussion about this on pouet related to fmod earlier).
So anyhoo, I added a simple blur to the gettick and everything immediately looked prettier. I did a few graphs about this to see if different kinds of blurring would help, but the initial I tried (newtick = (oldtick + audiotick) / 2) gave the best results.
Okay, I'm pretty sure there's more precise solutions to this as well..
Why not just use SDL_GetTicks()? Why not indeed. First, historically different audio systems have run at different speeds (GUS vs SB being a notorious one - in 'gateways' we found them to get off sync by several seconds), and audio clock may be slightly off from the system clock. You won't notice it in short runs, but if your syncs off by one second after a three minute play time, it starts to get really irritating.
Things seem to be better these days, as I only got around 30ms difference between SDL_GetTicks() and the audio tick from about 3 minutes of play, so this may be a non-issue.. at least on windows. Still, I feel more confident syncing effects to audio clock instead of a clock that might or might not run at the same speed as the audio..
So yeah, basically all my demos suffer from this bug.
Wow, this has a risk of turning into a real weekly book review thing...
I've been considering getting into unity for a while, but I've been too lazy to do it in the usual self-learning method of trial and error. Okay, sure, there are online tutorials but nothing which inspired me. So I thought maybe a book would do it.
So I picked up this book. I'm a fan of learning by doing, and all I really needed to get into Unity is some hands-on practise to get my bearings as to where to find what. The book walks you through writing a bunch of games, starting small and building up from there. It painstakingly explains everything that's going on, meaning that more experienced developers can browse through the book quickly, but people new to the world of code aren't left behind.
A lot of the book is dedicated to whetting the readers' appetite on what's possible with unity, without going too deep into it (simply because it would be impossible to cover everything in one book). There's also a lot of humour, which may be irritating if all you want is hard facts, despite which I did find myself chuckling at some of the jokes.
I would have liked a bit more attention to the content pipeline (using blender and photoshop, for instance), but I understand that would have expanded the scope of the book too much.
As a tutorial book, it's a very good springboard into the wonderful world of game development. And it did serve my purposes well, too.
Oh, and bonus points for mentioning SFXR.
In other news, someone digged up an old invitation demo I made for an Israeli demo party in 1997. Here's the vid cap:
There's also the credit part after that, with no transition whatsoever. I was too lazy to stitch these together (as dosbox captured them as separate videos). The greets part is less exciting, but you can watch it here.
I've found myself being rather busy lately. I don't know exactly what; just tons of little things. The fact that there's tons of indie game bundles and steam sales doesn't exactly help matters.
Anyway, I got a request from PACKT to review an OpenGL book they've published. It looked like a fun thing to do, so I said okay.
First off, this book ("OpenGL 4.0 Shading Language Cookbook") is perfect for people who already know their way around OpenGL, but may not be too deep into shaders yet, and/or have some legacy bits in their engines.
The book does walk you through setting up a shader based application, and explains what kinds of support libraries you're going to need (always managing to pick the "other" lib than the ones I've used - they like glew more than glee, for instance - but the libs they picked still work as advertised, so I'm not saying they're bad choises. Oddly, there's no mention of SDL or SFML though), but knowing how OpenGL generally works as well as how the math generally works is taken for granted.
On the positive side you won't have to browse through hundred pages of basic matrix and vector math, or compilation basics, which I feel is a good thing.
After the basics (sample chapter here) the book gets to the fun stuff, explaining lighting, texture use, screen space trickery (like bloom and deferred shading), geometry shaders and tesselation, practical shadows (i.e, shadow mapping and PCT filters, but doesn't waste pages on anything "more advanced"), noise and some particle tricks.
All in all I think it's a rather good resource for anyone who wants to upgrade their OpenGL knowledge to more "modern OpenGL", dropping all legacy stuff, but it doesn't mean you don't still have to get your hands on the orange book.
So anyway, if this feels like your thing, you can get it here. And no, I don't get any royalties. =)
Time flies.
I no longer work for Qualcomm; our son started at a day care, and some other things changed as well, so I figured I might as well go with a startup for a change. This doesn't mean I'd think Qualcomm is not a good place to work at. It's not perfect, but what is?
I've mostly been playing tons of different games lately.. lots of indie stuff has been available cheaply through various bundles and/or steam. I also got an iphone from work, so I've been playing around with that.. maybe I should try my hand at writing some apps, but that would mean dishing a yearly fee to Apple just for the opportunity, and I'm not sure if I want to do that. We'll see.
One thing I have done recently is.. well. Niklas likes to play with his mom's computer (which is in the living room), and I got fed up with him managing to do weird things even in the windows 7 locked screen, so I wrote something a bit more interesting for him to play with..
You can download the win32 binaries here if you want. Do note that to quit the application, you need to press control-alt-del; the application will detect it lost focus and terminate. The same will probably work for any autorun events (like inserted disks or usb devices) and such, so it's not absolutely bullet-proof, but should reduce accidental quits by a toddler a bit.
And yes, all the texts are in Finnish. Deal with it. =)
A huge time sink in that project was finding public domain images; if I would have wanted to burn $10 on the images it would have been much quicker process. What actually happened was, I wrote that application for just personal use, but then some friends saw it and wanted a copy. For private use I don't really care where the images came from, but for public release it's a different ballgame..
Oh right! I did something to this site at one point, forgot to update the front page.
I wrote a simple particle system for X-Forge a decade ago. This is basically a total rewrite from scratch, using OpenGL and AntTweakBar. Info, binaries and sources on this page. On the iphone..
First 24 hours stats: 7 apps downloaded, 20+ appleid passwords entered, 10+ WLAN passwords entered, 22 photos taken, 25 songs listened on spotify, 1 hard reset of the phone needed, 1 sportstracker trip with dogs taken, sent 1 SMS, made 0 calls, had 0 useful autocorrects. Oh, it's a phone too?
So, literally one day after I got the phone, ios5 came out, so I installed it. The capability of sending (and receiving) SMSes got broken. After going through tons of support pages, trying out various listed workarounds, calling my service provider to double check that nothing's broken on their side (or if they have any idea what it was about), I narrowed things down to a broken SMS database on the phone. So all I'd need is to reset it. I didn't care about the old SMSes as I had sent like two of them before the ios update. I did care about all the other data on the phone, though, so full reset was out of the question.
So I just browsed to the phone's data store and deleted the file. Except this is a 'walled garden' device, so I can't. Could have jailbroken the device, but I don't want to.
Long story short, in the end I used a phone backup file hacking program to replace the sms database with a zero byte file, restored the backup, and... SMSes work again.
Miscellaneous stuff..
Got over 2500 reputation on gamedev.stackexchange.com. Yay.
Over 50 schools use Atanua. That's quite a bit. Too bad not too many people have actually paid for it.
Also tried doing an experimental OpenMP build of Atanua; basically, using four threads on corei7 sped simulation up by around 100%, which is less than I expected, but in line with what I read afterwards.. on the other hand, using OpenMP for things it works well with is extremely easy, just add a compiler flag and a couple of pragmas and you're go. In visual studio you need the pro version for this to work, though.
Finally, it's November, and I haven't started on my NaNoWriMo project yet, so I probably won't bother. Again. Still have lots of ideas, but.. in the end it's not the stress I need right now.
Looking for some simple non-ttf vector fonts, I stumbled upon the Hershey fonts, and wrote a converter for them to a (more) vertex buffer friendly format. So if you want to use them, you don't have to go through all that. Just grab what you want. Cheers!
Fairly little going on related to this site. I have a small game project going on related to d3, but haven't really put any effort on it for a while. LD21 came and went, and I was supposed to enter, but was sick. Lots of personal changes going on, including the fact that Niklas is starting in daycare.. Computing wise I've mostly been playing random games, but nothing really worth talking about.
Folk from eeweb.com mailed me, and it seems to be a pretty nifty site related to electronics, with an active qa forum and such. Be sure to check it out if that's your kind of thing.
Been thinking of maybe starting to write some Fathammer related memories. We'll see how that goes. Acrodea doesn't seem to sell X-Forge anymore, so I suppose that's the end of that story.
Since I haven't done it for a while, here's the pick of the recent search terms from the past few months..
I wish google analytics would let me to grab all of the keywords in one TSV instead of having to download six 500 line TSVs..
If you have problems figuring out why this is difficult, just try to wrap a piece of paper around a ball.
Homework!
As far as I know, there is a ansi c interface too, but nobody in their right minds would use it.
Form questions in a way that they contain variables, with each variable unique on a per-student basis. That's a start.
My first reaction was 'no', then after some thought, 'yes', so I'll go with 'definitely maybe'.
Homework!
Take n * n pixels. Match it against all glyphs available. Pick the one with least error. That's the basic idea.
Shift and mask.
As far as I know, I don't refer to these places in India anywhere on this site, so how did you get here?
Right. Or well, left.
You don't.
I actually got the same text as an email from someone, and I'm still wondering why he's talking to me.
Maybe this was a MMORPG project? =)
Windows dos box doesn't support vertical retrace.
I've spent some time lately on writing some dialog tree middleware. It's more or less "done" now, and can be used free of charge; you can find information on it here, along with downloads (engine sources and actual tool to create dialog trees). There's still a lot to do, such as examples and further documentation, but my testing hasn't found any drastic problems with it.
I'd love to hear from people using it, or comments in general in any case.
I recently played "Mafia II" through. It's a GTA-like game with a very strong story; I enjoyed it a lot.
Assembly 2011 came and went, and there were some seminars this year too. I haven't gone through all of them, but at least this talk on how forcing limitations on design make better games is worth watching. In the same vein, the author of braid did this talk a few months ago which basically undelines what I've tried to preach people, and that you shouldn't optimize for size or speed, but for faster development, which means simpler data structures, more readable code, etc.
So, a bunch of Ludum Dare regulars started doing a video conversation thing on youtube called indie conversation, where they post short videos, asking each others questions and.. stuff. Pondering on what it means to be indie, how to cope with things, and such. Very inspiring stuff.
It naturally got me thinking, as well. During the past few years I've gathered all sorts of tools I might need, for instance, making games - I have a wacom pad, midi keyboard, compilers, photoshop, a reference library of actual books, mac, windows and linux boxes, using diverse graphics hardware for testing purposes.. and I know how to use all of the above. And I know where my strenghts and weaknesses are.
So why haven't I made a bunch of games and put them for sale? I guess I'm afraid.
I could never be a full-time indie because I'm too much of a control freak. I like things being stable, more or less. We recently moved to our own house and it was super scary. Lots of new uncertainties, can't just call the landlord and say the toilet doesn't work, that sort of stuff. I can't imagine the stress running my own business would be. It might be easier if I was just supporting myself, but I don't know.
So my "indie career" is waiting for a lottery win of some sort. Not that I'd probably quit my job even if I did get a couple million suddenly; I'd probably just take lots more risks with my career, having a safety net in place. Maybe I'd even go back to making games.
I'm dreaming of making those kinds of Magnum Opus games folks have mentioned in the video series, and like many do, never actually start on them. Once you have enough experience, you start to realize just how much work such a project would be, and see that it's not realistic. So you end up doing smaller projects, which is fun too - smaller projects also move faster. Once you're past the magic 10kLOC in your source base, things tend to move much slower..
Another thing that's holding me back with many of my game projects is that when I start to think about them, I hit the requirement of lots of custom tools. I've been looking into various UI libraries for tool building, but they all more or less suck. The best at a glance so far was, surprisingly enough, C# and .NET, but for some reason I didn't end up using it. All windows toolkits either require some custom build system and/or are just plain painful to work with, and even though you always end up needing some custom widget, the libraries are not designed to make that easy..
Here's the pick of the recent search terms from the past few months..
72-64=8, so we're taking n64+n8, or (n<<6)+(n<<3). It's not that hard.
Yes.
I used to feel that visual studio got worse after 6.0, but it's gotten better since. Additionally, 6.0 has serious issues with multi-core machines, and the compiler is so bad at standards compared to the later ones that I really can't recommend it. And since the express editions are there for anyone to use, why use 6.0 anymore?
This one gets the coveted 'most specific google search' prize.
You don't. Well, unless you're writing a kernel-mode driver, at least.
Very.
Depends on the fan. Many have a switch where you can pick low/med/hi. Alternatively you can reduce the voltage.
Through the graphics options?
I use google analytics.
Use a higher display resolution.
Divide, divide, divide.
There's so many things wrong with this question, I don't know where to start.
I first didn't mean to quote this obvious schoolwork question, but there were like eight different variations of it..
DrPetter, are you listening?
I haven't received any requests in ages.
Wrong keyboard layout maybe?
Mask it.
I'm fairly confident it was 80x25 text mode.
I dunno, drink it?
SQL.
Haven't updated in a while, mostly because not a lot has been going on, related to this site at least. I made a new version of Atanua, fixing all reported bugs since the last version and also rewrote the clock system so if needed, user can change the simulation clock higher from the default of 1kHz. Useful if you want to play audio, or have complex programs in your microcontroller.
Been playing a lot of games. Yes, the steam sales late last year has damaged my productivity. Such is life, I guess.
I tweaked the css of this site a bit, as you may have noticed, and also changed the background picture as many people have complained that it was irritating to scroll. I hope this one's better for you.
Some bits of interest that I'd like to point people at, although I'm pretty sure these are old news to most people frequenting this site.
Finally, I also post on Twitter sometimes, if you want more frequent updates than I put on this site.
Recently, I've been playing "Dead Space". When I first started it, I almost gave up on it after a couple of minutes due to the horrible camera and control scheme, but forced myself to play until I find a place to save. After finding it, I realized I had passed a few save points already.
Anyway, the game is, for those who don't know, a space horror shooter, and it owes so much to system shock I wouldn't be surprised if Shodan showed up all of a sudden... I was going to bash it a lot but I've been playing for six hours by now, and I'm likely to finish the game, just to see where the story goes.
And yes, I do cheat. I play on easy, the game doesn't actually need cheating, but having infinite ammo lets me finish it sooner.
As to the random hacks..
I thought about writing a hack dll for Grim Fandango to make it possible to play it with hardware acceleration on modern computers, as I'd heard it was broken. After going through the effort of getting my copy of Grim back from a game designer friend of mine, I installed it, plugged in the patches that were available, and ran it, the 3d acceleration worked. So, I don't have much of an incentive to hack it.
Next, our doorbell is busted. It's probably original, from 1966, and the wiring goes through the stone wall. There's nothing wrong with the wiring, so I figured I'd just buy a new doorbell and hook it in. Unfortunately, all the doorbells in our local hardware store are of the radio wave remote button type, so I figured I might as well build one myself, using a microcontroller.
As a doorbell, saving batteries is a critical feature, so I designed it so that the mcu is in power down state most of the time, and is woken up by an interrupt caused by level change triggered by the button press. This went more or less fine (except that figuring out that interrupt took me a couple hours of debugging), but I learned an interesting fact:
Doorbells can crash.
When the button is kept pressed when the mcu goes to power down state, pressing the button again doesn't cause the expected level change (as the level was already set), and thus the microcontroller can't escape the power down state. Oops. This was pretty easy to fix though.
I'm a bit stumped on how to boost the volume from the TTL levels though; the doorbell is quite quiet at the moment..
Another thing I managed to hack together was a modified version of GLTrace which mucks the modelview matrix of any opengl 1.x application according to head tracking provided by faceapi. It works, kind of; I could make the camera pan around when I moved my head, but I haven't tweaked it far enough to be releasable. But anyway, I could move the camera in quake 2 demo enough to make the graphics break a bit. At the same time the game became rather unplayable, but that's hardly surprising =) I also had to kill q2d with task manager; I don't know if that's a side effect from my hack dll or a feature of q2d itself.. Anyway, the problem - what made it unplayable - is that while I made the camera pan, I should make it rotate as well. Don't know if I have the energy to keep playing with it. We'll see. So far, the project only took a couple of hours.
The applicability of said hack is also rather limited these days, as opengl 2.x+ doesn't use modelview matrix like opengl 1.x did.. making a similar hack that also works for opengl 2.x+ is possible, but would require a different hack for every single application.
Oh, and I locked the forums due to legislation change in Finland that would make me resposible for users' postings. So, if I was away for a couple of weeks and someone posted some hate speech towards certain religions, someone could sue me instead of the poster. Fun, eh? On the other hand, the forums have been quite silent for ages, so no great loss. I left them online for people to read in case someone googling finds an answer to some question of theirs.
Noticed by total accident that the Assembly folk have posted the video of my Asm09 seminar on how to make studying more fun by applying a bit of the demoscene mentality into it. It's here on Vimeo, so you can see me run through the presentation in about 15 minutes. I was horribly nervous =)
On the process of getting rid of oil.. remote heat isn't available in our location, but its setup costs are around 6-8keur. Air-water heat pump setup cost is around 12-15keur, which is tad bit more than we could afford at this time. All I've heard of ground heat so far is "over 10k" - the company I queried about this did not answer.
So.. the move was early this month, and we've more or less settled in. Still lots of things to do, lots of money to burn before things are closer to what we'd call comfortable.
We decided to go with a house of our own this time, and moving to Karjaa made that possible; for the price we paid for this house we couldn't have gotten anything sensible in the Helsinki area. Still, this is an hour's train trip away from the Helsinki city center, so it's not as if we'd moved to the moon or anything. Just to the countryside.
Picking the moving company was interesting; we discarded the cheapest offer as unrealistic. The one we did pick was more expensive, used more men and bigger car, but still ended up having fun with some of our heavy furniture.
I took a week off for the move, and we almost ran out of time, partially since both myself and my wife went through a stomach flu during the process. It wasn't fun.
While we were packing, we had these guys tear down wallpapers and paint the place, and they did a great job in a tight schedule and within budget. I definitely recommend them, should you need such services.
ISPs messed things up on both sites, but that's normal, right? I got billed from my old ISP after the connection was disconnected, and the new place wasn't connected even though I had ordered it well in advance, and naturally the new net isn't as fast as advertised.. I'm on a two year contract with them though, so I'll review my options after that.
Differences between this and the last place we lived in, after these couple weeks.. people seem much friendlier, for starters. One of our dogs panicked after the move and ran away, and after spontaneous help from a bunch of local people we got her back safe and sound.
Other changes.. the water is super-soft. Like taking a shower in evian. Feels downright wrong somehow =).
The house is old, built in 1966, but in a great shape. Still, if I'd have a couple hundred thousand, I could burn it in improvements. The electricity system is more or less original, which is mostly just inconvenience of not having enough sockets for everything. Some fixed appliances (like the dishwasher) are so old we need to buy new ones ASAP. The fireplace needs some improvements, which we've already ordered.
And the heating, oh dear. It's oil, which we really have to get rid of. I've figured that there's three real choises at the moment, but I don't know the cost of them; ground heating (sucking heat from the ground to some level and heating with other methods, probably electricity, on top of that), air-water-heating pump (sucking heat from the outside air and turning that into heat indoors, works up to around -15'c; in practise it's kind of more energy effective version of electric heating) and finally remote heat (they pump heated liquid, probably coolant from some form of power generation, through houses to keep them warm).
I'll need to see what the initial and running costs of each of the methods is, and which we can afford. I do know oil heating is way too expensive in the long run.
Pretty much the only thing I do miss from the old place was a well-stocked hypermarket. The stores here are okay, I guess, but finding specific things takes effort. There's a huge hardware store here, but it feels like it still has less hardware stuff than the hypermarket had.
Apart from all that, I've played some games. The steam sales really hurt my productivity, as I bought something in the order of 40 games - at the cost of around 2 full-priced games. So far I've played through GTA IV and its expansions, and some other stuff.
GTA IV took itself way too seriously; the biker expansion was meh, but the ballad of gay tony was pure gold. Better than the rest by a wide margin. The stories interconnect, so it's worth it to drag yourself through GTA IV before playing gay tony.
Preparing to move to Karjaa, so nothing much going on related to this site at the moment.. You could consider funding this project by Viridian. 9 days left!
Anyway, here's some recent search terms for your amusement:
That's colleciton of various misspellings of Atanua that still have found their way here.
Amazing!
o /
<X\/
/ >
Table lookups may cause data cache trashing. FPU ops generally don't.
Requirement: money. Amount: more than you have.
Blue smoke.
Step at a time.
Depends on your experience.
From the command line.
In a round manner.
Sharks! Sharks with friggin lasers!
Either figure out how to generate polygonal alphabet or use a bitmap font and use it as a texture.
Follow the instructions in the email.
Forget it and do something productive instead.
Depends on how many platform dependencies there are. Doing d3d9->opengl conversion may be quite a lot of work, for instance.
Step 1: edge finding filter. Step 2: interpolate.
You have the sources, go fix it.
Aaand here's a homework-o-rama!
As promised, here are the course slides to the game programming course I held last fall.
Still sick. Starting to get real tired of this flu.
My DirectDraw Hack, written to make the old Wing Commander games playable under modern windows, won the 'runner up fan project of the year' prize at Wing Commander CIC web site. Yay!
In other news, still a bit sick - this is one of the longest flus I've ever had.
I've had lots of positive feedback on the game programming course I held, and I'm seriously considering doing it again next year. I still haven't posted the material here.. sorry about that. I think I'll do an edit pass over the material (and add little touches like copyright information) before doing so.
Oh dear. I spent the new year's sick; still am, but getting better.
Watched "sorcerers' apprentice" recently. Lots of potential, ruined by bad casting of the main character (the apprentice, I mean). Cage's brilliant performance almost manages to save the film.
Got the school projects graded, still haven't had the opportunity to go through the material and publish it.
Site-wise, I found someone to take over the ddraw hack project - the public svn is here under google code.
Finally, here's some recent search terms for your amusement:
No, sorry.
I'm fairly certain writing the program would have taken less effort than doing the google search.
Render, estimate error, send error forward in time, repeat.
Please don't.
Step one: perform all possible shift operations at once. Step two: pick only the output that was desired.
Given enough triangles, you can at least do a pretty good approximation.
Easiest? Use a spherical texture map.
My confidence in telephone banking systems suddenly fell significantly.
Turns out, quite a few. My dictionary lists 54 of them (ignoring genetives and plurals) under 'A' only, from "ab
Practise.
I'm pretty sure if you draw a circle horizontally, you end up with a line.
Look at calendar. Is it 2011? Yes? Then direct draw isn't supported. Sorry.
Using a shift register.
First, take a subject. Then, research it. Find an idea, and check if nobody has done it before.
Quite trippy, in my opinion.
xor, if I recall correctly.
Well, there's the lame ones, the cool-looking ones, and the ones that actually work, which nobody probably has never seen.
The lcd has two controllers, you're probably only talking to one of them.
The what?
Awesome!
Lazy developer gave up development.
Perhaps she's mathematically gifted?
Seriously, what's with all the homework searches?
Don't mix graphical user interfaca and operating system. Do one or the other first.