http://sol.gfxile.net/ - Jun 19, 2013 10:36:48 AM - Sep 30, 2010 2:17:27 AM
Lots of Stuff Going On
May 3rd, 2013 #
You've heard the story before, in one form or other.
User downloads software. Finds bugs in it. Mails the author. Author says, "you've got the sources, fix it".
That's where the story usually ends. In this case, however, he did. Presenting, GalaXQL 2.1, by david_costanzo. If some mac developer would like to compile a new osx binary of it, that'd be swell - it shouldn't be a huge task, but with Apple, you never know.
I played through Divinity 2. It was a strange experience in that I felt bad about playing it.. like reading a very bad book but not being able to put it down.
I can't even point at what was so bad about it. Of course there were some obvious things, like having a character who can do billion points of damage with one spectacular hit after another, as well as having godlike lock picking skill, and still not being able to unlock wooden chests unless a specific key is found..
You can polymorph in the game, and the non-human form is supposed to be more powerful than the human form. Turns out, once you level enough, the human form is nearly immortal while the other form, even when skills are maxed out and the best equipment is used, pretty weak.
So naturally the game's last mission is in this other form, and it's an escort mission. Pretty much the ONLY escort mission in the whole game. The game auto-saves every now and then, but apparently if you let your escortee to get more than 10% damage before the last 30 seconds or so, you're screwed, since the last bit causes around 80% damage.
I ended up hitting the game with cheat engine until the escortee was invulnerable. Horribly frustrating.
When I got near the end of the game, I decided that I seriously would need to pick up some programming project again and do some coding. Conveniently, Ludum Dare #26 rolled along, so I made a game which is a training program for the keypad. My cps as reported by it is around 4.0; feel free to beat my score..
The game was written in C/C++ and SDL and HTML-ized using Emscripten and you can also read my tutorial about using Emscripten in Windows. Yes, the tutorial is a bit unfinished, but then again, so's Emscripten. I've found that way more people have played my game in this LD (regardless of the record turnout again) than before, just because it's easier to play in a browser than standalone executable..
Another thing I picked up after way too long pause was Atanua. The version that'll be public in a few days unless I managed to break something will primarily include bug fixes and dramatic speedup of loading boxed designs (one design sped up from over 2 minutes to under one second).
Speaking of Atanua, one nutcase did go and made a game with it in Ludum Dare. 5865 chips, 9492 wires. Insanity.
I churned through 75 project Euler problems. Maybe I can stop now. After the first 50 or so the puzzles become more about math than programming, really. Getting to 50 also pretty much requires you to install a bignum library.
If for some reason you haven't checked out Strip Search, the penny arcade / loadingreadyrun web reality show for web comic artists, well.. maybe you should check it out.
I also have one "getting old games to run better on new hardware" project going, but it's too early to talk about it yet.. And no, I haven't made any progress on Spelurky since the last blog post. It's as if posting about projects on this blog causes them to stall.. =)
Speaking of projects.. long ago, when I was still working on CFL3 (yes yes, CFL5 is another project on the shelf..) which is a "virtual file system" of sorts, like DOOM WAD files of someone still remembers those, I designed the system in layers so that you can run data through a filter before it goes to the compressor. One of the filters was delta encoding, and that actually does help compress various forms of data (like raw wave audio). Back then I pondered about another kind of filter, basically bit transpose.
So you take 32 32bit words as a 32x32 bit matrix and rotate the bits by 90 degrees. This should, in theory, generate plenty of 0x00 and 0xff bytes for pretty much any kind of data, which, again, should compress better.
I finally got around to testing it after a discussion on Pouet, and ran test against the Canterbury corpus, combined with the Lena image as 32bit TGA, PNG and PSD, some floating point vector data, x86 executable and a MP3 file. As a result, pretty much everything compressed way worse than without the transform (including the various ASCII files in the corpus). The only file that compressed clearly better (the uncompressed 32bit TGA) didn't do so by much, and the best transform for it wasn't 32bit, but 8.
The first issue of Skrolli, a Finnish computer mag by hobbyists for hobbyists was published, and sold out. I'm still considering writing an article for it, but that takes quite bit of research, so we'll see..
Possibly modified around: May 03 2013
Spelurky
April 4th, 2013 #
Lots of things have happened, but I haven't bothered to write an update..
Primarily, I suppose, I've been working on a roguelike:
More on this and lots of other things when I find the inspiration to write about it.. =)
It's been a while, so here's recent search terms:
8051 is a?
Number. It's not a prime, since 83*97=8051.
another way to say interpolate
You could try sticking your tongue to the roof of your mouth and get something like "intelpoleit".
applications of immediate mode addressing
Depending on the architecture, there may be some known addresses; for instance, in DOS you could get the current time tick by reading from a certain address. Other known addresses might be ram-mapped I/O ports, for instance. And when programming for microcontrollers, just about everything is a known address.
Varies from school to school. Sometimes even within the school.
black and white curves
Curves drawn with just black and white, or curves depicting black and white?
cheat for atanua
Press Alt.
free typing both name and cast a love spell on internet
I don't even.
how directdraw works
I'd hazard a guess that it performs some simple calculations itself, but mostly delegates work to graphics drivers through some well-defined interface.
print a diamond of starks in dev c++
I don't know what a 'stark' is. And I probably don't want to.
rifle case that connects to my backpack
..
what's immediate mode
Opposed to deferred or retained mode, immediate mode performs actions more or less immediately. Compare drawing a triangle now to adding a triangle to a list to be processed later.
why do we have to obey all the design rules
For the users to have a coherent experience across applications, without having to learn to use every single one all over again.
why smooth step have sine
Because sine is smooooooooooooooooth.
why we use interpolation
It's an optimization.
Anyway.
bachelor thesis layout
Possibly modified around: April 04 2013
Litterae Finis
January 17th, 2013 #
It's reassuring to know that, apparently, I'm the best in the world in something, even if it's practically inapplicable to anything useful.
In other words, Litterae Finis, the demo I made with !Cube's music, won Text Mode Demo Competition 15.
There's a capture on youtube, as you can assume these days..
..although, again, you can download the binaries and watch it "for reals", if you want to. Here's the Pouet thread.
Like with the tAAt new year's demo, I've wrote a breakdown of the demo too. Warning: contains spoilers.
Oh boy. This is the worst flu I've ever had - or a chain of different flu-like symptoms, in any case. No flu can last for four weeks, can they?
I've been pondering on the OpenGL tutorials, and it's a tricky thing. The problem lies with the fact that OpenGL 3+ is very front-heavy; you need to know tons of stuff before you get to the good bits.
It's also a question of balance. On one end you have code with tons of OpenGL calls, and on the other end you say, here's an engine, just use it. I think I will have to write some kind of toolkit to jump over a lot of the complexity and to get the reader faster to the good bits, and then we can go back and see what the toolkit contains.
Still, it's a lot of work before I can even get started with the writing. There's a lot of cool stuff I'd love to write about, but you've got to start with the basics, and when it comes to OpenGL 3+, that's quite a lot.
Of course, I could just skip the basics, write a toolkit and hop directly to the good bits.
Tempting.
ps. I finally got around to writing in-page links to these news. The link is in the "#" after the date. Not quite a permalink, but close.
#
Anyway.
Possibly modified around: January 17 2013
Site design & Copyright © 2013Possibly modified around: January 08 2013
Twenty Thirteen
January 3rd, 2013
Year rolled over, with no end of the world to speak of, although last year had plenty of .. history in it. Things are bound to get more interesting this year, for better or worse.
As I'm writing this, I'm suffering from the annual new year's flu (4th year in a row). This has been the worst flu I can remember, with the whole family (and everybody we've been in contact with during Christmas) being horribly ill for over a week.
Anyway.
Let's start with a shocking reveal that I've been behind the tAAt new year demos for a while, including the latest one which you can watch on YouTube:
..although you can download the binaries and watch it the old school way too, if you want to. Check the Pouet thread for download links etc.
And as a bonus, I've written a breakdown of the demo too.
Which, in a roundabout way, brings us to (one of) the reason(s) of writing this blog post at this time.
Last year, I wrote that I don't, in general, do new year's resolutions, but I'd give them a go. I tried to do a little bit of the following every day:
As results go, the physical exercise was a dismal failure, if you don't count the 1-2 walkies with dogs each day, bicycling, carrying groceries with a backpack (no car here), managing a 3-year old boy, moving snow, taking said 3-year old to daycare on a bicycle (or a sledge, or carrying in some cases), making firewood and so on - you know, the normal every day stuff. I probably should try to do better this year.
The primary problem with this is to find a time slot for it. Maybe I will find one. I'd like to get back to the shape where I could do a hundred push-ups (which I managed due to the Ludum Dare dare some years back).
When it comes to music, I haven't really been able to play around every day, but I tried to find time, and I'm definitely better at it than I was a year ago. I also spent over 600 Eur on music-related things, including Native Instruments Komplete (for which I should have waited for a couple of weeks so I would have been able to use one of their frequent discounts), as well as Reaper and Renoise, both of which have their uses.
I probably should get my hands on some kind of dedicated audio interface, as using windows' audio has quite a bit of latency, and while using ASIO4All solves that, it also means that I can't get sound from other applications, which may be rather critical. For a lot of playing, the latency doesn't actually matter THAT much, but for drums it's a killer.
I also learned that there's a lot of stuff to learn when it comes to music.
I don't have all that much to show for, but you can check some oggs under the audio tab of this website. I'll probably post new ones there sometime.
The third point, some form of writing, is trickier to judge, as writing is large part of what I do every day; but I can't honestly say I've succeeded in it. I should be able to do some kind of creative writing project. Maybe a new tutorial series? (the Argon-Selenium OpenGL tutorials maybe - my project name for a modern counterpart of the Neon-Helium tutorials). Google plus and twitter have also taken their toll of my writing budget, as it's so much easier to just hammer something away on a social network and get over it. Instant gratification and all that.
Looking back, I have plenty of unfinished projects; the speech synth, an audio library, evolution shooter, etc. Apparently I didn't even manage to do a single Ludum Dare entry last year either.
One thing I did do, however, is a TMDC entry. I've heard that the quality of the entries was very high this year, so I'm hoping I don't finish last =)
And now, since this has been long overdue, :
"all of the following interpolation techniques are based on weighted averages, except one. which one?"
It never quite ceases to amaze me how many people seem to be delegating their homework questions...
"write a program that displays a checker-board in which each white and black cell is a jbuttonwith a background black or white,"
...to Google. How these ended up on my site is another mystery.
"im,jikuyyu ui"
So's this.
alesis q49 + virtualbox
Never tried. I suppose it should work like any other USB device though?
answers to galaxql 2.0
Yeah yeah. At this point I fear it would probably be a re-designed GalaXQL 3.0 as during the project I figured out how I should have made it in the first place, and it was far too late to change at that point. Since there's no incentive for me to actually make GalaXQL 3.0, though, don't hold your breath. (Feel free to give me incentives though).
arb_instanced_arrays tutorial
Damn you, minecraft.
atanua for mac
Since Apple stopped supporting me, I stopped supporting Apple. So it's kinda mutual.
Less snarkily, I have no financial incentive to support Atanua on macs, and Apple keeps breaking builds.
bachelor thesis layout
Varies from institution to institution.
can dev c++ game have save feature
Yes.
can using artwork instead of words be more beneficial?
In what way?
can we do division by using char data type in c using bitwise operation
Yes-ish? Everything's a bitwise operation eventually..
could i use galaxql as the basis for a game
I suppose.
dangerous spells
All of 'em.
debugging the millenium falcon pythagorean theorem
The what?
diablo 3 resolution 320x200 hack
Wha..?
difference between plotpixel and putpixel in computer graphics
Wh..?
drawing a cube from a shader
You mean a geometry shader?
easy way to do interpolation
Simplify range to 0..1.
explain the (when one teaches two learn)
If you don't get it, you've never truly taught anyone.
how i design a logical circuit for traffic lights using gates on atunua
This was a fun find; seems like someone's giving some real schoolwork based on Atanua =)
how to convert an image to a specific color palette
Depends on what you mean.. tone mapping or mapping to a specific N-color palette?
how to convert to text mode in photoshop
Photoshop has no text mode.
how to read files from a different folder in sdl tutorial
fopen("different_folder/file.dat","rb");
how to render lots of cubes
Damn you, minecraft.
i wanna make my own working game board
Working how?
if i don't own an ios device and i want to program unity ios
With difficulty.
in my cv which is correct national service done or finished
Who cares, as long as the point gets through.
include d3d.h what does it do?
Includes, or tries to include, the file called "d3d.h".
israel you are in my chair sitting
What?
most common magic effect in games
I'd guess healing. Or if you mean visuals, probably fade to white. Or particles. Dunno.
pitfalls of immediate mode gui
They make easy things very easy, but they make hard things very, very difficult.
sdl tutorial finland guy
I actually laughed out loud.
terra nova sfc source port
One can only hope.
vbo cubes lot of
Damn you, minecraft.
what are the things i need to get sol
What's this, spice girls?
what does regeneration do in typomagia
The monsters heal while walking. Normally there's no healing.
what is analytics.sol file doing on my pc
No idea, sorry.
what is text mode screen better?
Hardly anything-
what is width and height
...
what things do you need to make your own game
Time, imagination, possibly some skills, but skills can be learned if you have time, and imagination.
where is segment vesa
I kinda recall it may be remappable, but usually the video memory segment, A000, is used.
Possibly modified around: January 03 2013
Dropping Snow
December 20th, 2012
I live in a house with a rather flat roof. This being Finland, that means said roof accumulates snow. Now, it probably could handle all the snow in the winter, but you really don't want to bet on it, so eventually there's enough of that white stuff there that you just have to go and drop it.
Dropping snow from the roof is not fun. It's physical. It's cold. It's wet. The safety harness isn't the most comfortable thing to wear. The life line always tends to be just a little too tight for what you attempt to do.
It's dangerous, and not in a thrill-seeking way. The roof is very, very slippery, meaning that, obviously, it's easy to slip, but also that it strains a lot of your muscles you don't usually use. You slip and fall on the roof, and you get bruised. You fall off the roof, and it's probably worse - haven't tried that one yet.
But.. there's something into it.
After working for a while, you develop techniques. You learn to chop chunks of snow without breaking them. You learn how to push them down the roof; push hard enough and you can do it far away from the edge.
Push just right, and the block of snow slows down, teeters on the edge, and falls over.
Or maybe it stops right there, on the edge. So you chop up another block of snow and try to push both of them over. Sometimes you succeed, sometimes not. So you chip another block of snow and give it a push. And another. And another. Suddenly you have a literal cubic meter of snow there, and regardless of how slippery the roof is, you know you can't get it to move.
So you chop up another block of snow.
Now, instead of just giving it a shove, you keep pushing it. It hits the other blocks of snow, and the whole mass starts to move, slowly, but move it does. You keep applying pressure, moving towards the edge. You know that if you stop, the whole thing will stop, and you won't be able to make it move again.
Which means having to chop it into pieces again, near the edge, and drop it down, piece by piece. Which is time-consuming, irritating, and it breaks your stride.
So you keep applying pressure. Eventually, the mass starts to drop over the edge, and you can feel the load getting lighter. It's an almost orgasmic feeling.
It's no wonder people fall off roofs.
Possibly modified around: December 20 2012
Where Have All Speech Synths Gone?
August 21st, 2012
When I was a kid, we had a Bondwell CP/M machine that sported a speech synth that was 1:1 with the one used by U96 in their hit "Das Boot". We also had a Datel Vox Box for our zx spectrum 48k. Later I remember reading an ad on a trade magazine about a single chip speech synth solution so you could make your coffee maker speak.
This was, like, 25 years ago.
You'd think things would have progressed since.
Couple years ago I did a study on what's going on with speech synths, even did a presentation about it at school. Long story short(er), very little has happened.
Speech synthesis can be split into two discrete problems: the synthesis itself (which I'm interested in) and text to speech. Everybody seems to be concentrating on the text to speech part: plenty of publications, books on speech synth are 90% on TTS and mention some random things about the synthesis part.
This isn't because the synthesis is a solved problem. I suspect the situation is (still) such that nobody knows how to do it properly and is embarassed to state what they think is right as fact.
There's three main schools of synthesis: articulative, formant and concatenative.
Articulative tries to model how humans produce sound, which is (not surprisingly) very difficult, but interesting in a research point of view.
Formant synthesis kinda tries to reproduce how humans generate voice, but skips all that virtual anatomy and instead modulates signals. I may be way off base here, but I'd guess you reach formant synthesis by staring at FFT transforms of people speaking and picking out the strongest signals. Maybe.
Concatenative synthesis glues together shorter or longer pieces of digitized speech. This can range from "Train is arriving to the platform ..THREE" to extremely short clips like diphones (maybe -> m|ay|b|e).
The most advanced speech synths basically combine formant and concatenative synthesis.
So what's happened during the last 25 years? Most advances have been in storage: while the databases were tiny (definitely less than 64k - probably less than 4k) back then, we're talking about gigabytes today. Result is that some "speech synths" sound perfectly like a human until you reach a word that's not in the database..
So anyway, I would have expected there to be tons of source code for simple speech synths around, but this is not the case. Most speech synths are proprietary, and can be very, very expensive.
On the open source side we have mainly Festival, and its little brother flite. Festival is a rather heavy, research engine; I haven't checked if flite is easy to integrate (at least it has a sane license). Then there's espeak, under GPL, the MBROLA project which forbids use of their databases outside its own tools. There's a list of some others here, I haven't gone through all of them. One fun project is this 1k javascript speech synth, too bad its output is completely impossible to understand.. =)
Basically all operating systems provide some kind of speech synth, but it's kinda sad that there's no small, understandable, free speech synth source code out there. Kinda like the one I had on that CP/M machine. Too much to ask for?
Possibly modified around: August 21 2012
Gear
July 27th, 2012
I've accumulated all sorts of development gear over the years, generally speaking to cover all sorts of game development related tasks. I don't claim to be expert on everything, but I want to learn bits about everything, if for no other reason, then to be able to communicate better.
It also means I'm better prepared for solo game development contests, but hey, that's a side effect. Not that I've even entered in any in ages.
Anyhow, I figured some people might be interested in my choises. I'll cover both hardware and software. I have a policy of not using any pirated software, so everything I've either bought, begged or gotten as a present.
Computer
A intel i7 PC with a nvidia graphics card and two monitors, running 64bit win7. Wife's computer is similar, only with an amd graphics card so I can test stuff if needed.
The exact makes and models don't really matter - you could come and swap my cpu and graphics card and I'd probably never even notice.
Microsoft Natural Keyboard Pro (which is sadly no longer manufactured, but I have three of them).
Some logitech mouse
Some logitech speaker system, although I prefer using headphones
Some logitech webcam
Putty, spotify, firefox, skype, dropbox, openoffice (esp. calc)..
virtualbox to run linux in a vm with hw opengl
Code
Visual studio 2010, no additional plugins.
UltraEdit (lightweight plain text editor)
Very sleepy (profiler)
cppcheck (static code analysis)
For a hobby, I usually code in c/c++ and typical libraries include OpenGL, SDL, cml.
Graphics
Adobe Photoshop. I've written some plugins for it.
A6 Wacom tablet which I rarely dig up, mostly doing graphics with the mouse.
Canoscan LIDE flatbed scanner
Some canon powershot digital camera
For 3d, I've used blender, but it's been so long since I last used it, I probably wouldn't know how to use it.
Audio
Audacity (sample editor)
Renoise, Reaper (tracker, sequencer - music making programs)
NI Komplete8 (virtual instrument collection)
SFXR (sound effect generator)
Alesis Q49 USB midi keyboard
Sennheiser HD25SP headphones
Possibly modified around: July 25 2012
Evolution Shooter
July 2nd, 2012
First off: if you any way can, give Viridian a hand. Like a job. Or a contract. Something.
So. Evolution shooter. Some time ago I realized I'd spent all my free time by running through game after game on steam. I still have a bunch I haven't played, curse you steam sales, but I felt I had to start doing something.
I gave the codecademy thing a whirl, figuring it would be something resembling of productive behavior. What I found was repetition, sweatwork, broken correctness tests - it totally feels like school. I think it may be good for people who have never programmed, but for the rest of us, it's rather tedious. Still, I know more about javascript now than I did before trying that out.
Then I figured I might as well see if one idea of mine works. And it does. Announcing (and hoping announcing it doesn't kill the project, like it usually does for me), the evolution shooter:
In evolution shooter, the enemies evolve based on genetic algorithm. Basically, best N enemies are selected from each wave (based on some criteria), and these are used to generate the next wave (by copying each M times and then running a mutation pass over all of them).
There's some constraints to make sure the game doesn't break, but apart from that the enemies are free to evolve towards being easier to hit or harder to hit, and yes, they tend to become tiny, strong, fast bastards. Of course you can try to fight that by keeping the weaklings alive as long as possible.. but that becomes a bit hard when there's enough firepower =)
Several people have mentioned that they love the powerup shop, and I've told them, like I'll tell you here, feel free to steal the idea. It was one of those "obvious" things that streamline the gameplay. I don't even claim that it's an original idea.
In any case it's still quite a bit work in progress, but that prototype already shows the idea works. And I find it rather funny that the player's ship evolves through intelligent design..
Finally, here's some Recent Search Terms.
best development environment for ludum dare
Whatever you're most comfortable with.
death rally remedy opensource
Unlikely.
heightmap sphere generate from code
Damn it, you're right, I never ended up doing that. Gotta try it at some point.
how to create a tunnel effect on a wall
The first thing that came to mind was some kind of cartoony thing where you paint a black hole in a wall and someone believes it's a tunnel and hits the wall.. no idea what the searcher was looking for, though.
i want a model so that i can draw my own stuff in it
Eww.
is there a way to see if someone is using hacks in a game
Depends. Sometimes, no. Sometimes, if the hack is not subtle enough. You can do statistics, spy on certain users somehow, run parallel simulations, etc. But if the hack is subtle and purely client-side, it may be impossible.
puppy ascii
Found this with a google search:
__ (___()'`; /, /` jgs \\"--\\ Joan Starksandwich illinois sunsets
What.
so you want to make an android mmorpg
What's next, so you want to make mmorpg with pants on your head?
what game company is looking for mmorpg ideas
None.
which way is length width and height
You're kidding, right?
why does sol update recent search terms so rarely
This is obviously gaming the sytem, but I'll bite. First, lots of searches tend to repeat (and I hate answering those mmorpg queries, but it's hard to resist..). Second, there aren't too many interesting searches to answer. It seems like the totally weird searches no longer happen, which may mean that search engines are improving. Third, I'm lazy.
write a c program that simulates a guessing game. each turn you choose among nine possible guesses
...aaand here's your schoolwork question of the month.
Possibly modified around: July 02 2012