Home

(today in twitter)

  • Dec. 17th, 2009 at 12:05 AM

Dec. 16th, 2009

  • 11:14 PM
- went through searching for all time-sensitive instances of width/2 and height/2 and replaced them with the precalculated halfwidth and halfheight variables, likewise with x+width/2 and y+height/2 with the precalculated cx and cy. this won't make too much difference, but might make a tiny difference, particularly for map objects when there are hundreds of them on screen at once and each is doing those extra calculations that they don't need to.
- made the unicorn's (seena's) trail vary based on delta time rather than absolute frame rate
- optimized the phoenix draw routines a bit
- optimization in the triangle intersection formula (used for determining if you can break bushes and crystals and rocks with the weapon)
- noticed a bug that, when you press escape after previously pressing and cancelling escape, for a single frame it shows the full text, before scrolling the text in again
- tried and failed to use surfaces for drawing textboxes -- the mechanics don't quite work out, there's no simple way to accurately add one letter at a time to a surface and have them all placed correctly without recoding a bunch of stuff; i may do this later but right now it's a bad idea
- similarly tried and failed to use surfaces to display round rectangles (one of the slower drawing primitives), it doesn't quite work scaling-wise out because the roundness of the corner varies so much depending on the height and width of the round rectangle. it could work if i have a unique surface for every different size of the round rectangle, but
- made textboxes grow larger rather than appear instance, it's nice to have things morph in or transition in rather than suddenly appear, it makes things feel more polished. i want to do a lot more of that kind of thing eventually.
- changed a few instances of 'fps' in the code to the timer dll's more accurate measure of fps (updated every step rather than every second)
- went through all particle creations and adjusted it to the fps (so that at slower frame rates fewer particles are created to ease the slowdown a bit). eventually i also want to change their speed and lifetime/duration based on delta time.

(today in twitter)

  • Dec. 16th, 2009 at 12:06 AM

Dec. 15th, 2009

  • 10:08 PM
- fixed a bug in the 'nomusic' variable (which measured how long to delay the return of the music for after a special music sound effect like the friending effect or the upgrading effect
- fixed a bug where sometimes it'd ask you to upgrade before you have any functions at all (if you friend enough creatures through debug keys), causing you to get stuck in the upgrade screen forever; now it'll only ask you to upgrade if you have either venus or neotheo on the party (right now either will do, but later neotheo will be required)
- found a bug in the radar (the color of creatures on it isn't consistent), will need to fix later
- fixed a bug where it'd ask you to upgrade during the venusjoins script if you had accumulated enough friends by then; now it'll never ask you to upgrade when a textbox is running
- fixed a bug in the checking for upgrades (it seemed to only run after you loaded your game or friended a creature, now it checks more often)
- fixed a bug in the sight function's radar (it would only update when the player was moving)
- did a further optimization of the object activation/deactivation script; it only updates when the view is moving
- found a bug where the rakari getting stuck on the player no longer slowed the player down; fixed it
- for some reason the 'light' wasn't drawing and i noticed i had commented out the light-drawing script for some unknown reason; i returned it to normal
- fixed a bug in the distance at which you can acquire a creature sound (the distance was too small by about half and it was using the creature's top left corner instead of its center)
- began testing the game at 20fps (capped).
- at 20fps noticed that the zig engine gets larger (size should depend on relative speed, not absolute speed), and fixed it
- at 20fps noticed that the player didn't accelerate as fast, even though the max speed was fine, and fixed that
- at 20fps noticed that the distance that the player's engine part drags behind the player depends on absolute speed, not relative speed, and tried to fix it but my fix didn't really fix it much (not sure why)
- same thing with ghosting effect for the player's equipped function
- noticed pegai shakes weirdly at low fps, not sure why that'd happen...
- noticed scylla's tail length changes with absolute rather than relative speed, and i know why it happens but this may be very difficult to fix (would involve a complete re-write and a new method) so i'll leave it as it is for now

in any case i think it's time i updated the playtesting version, and i want to see if the optimizations i made so far matter for slower playtester computers, so we'll call this v0.5. will now zip and upload and email out newer version.

Dec. 14th, 2009

  • 11:30 PM
- figured out how to adapt the sinusoidal time rotation functions to delta time and did so (creation of a new global which is incremented by time rather than by number of steps)
- optimization where i precalculate whether movement should be paused (based on its various conditions, so that all those conditions aren't checked by each object each step, just the global condition which is checked once per step against all those conditions -- whether a textbox is showing, or the escape menu, or the upgrade menu, or the map, and so on)
- made the game pause during map display (it previously did not)
- made the timing variables pause during some of the pause conditions, but not other ones that rely on it
- adjusted creature healing rate to delta time
- changed the saved games timing variable (which measures total time of play) to be depending on actual time rather than game steps. unfortunately this makes old saved games incompatible with respect to time, and after one load, they'll revert the counter and start from 0 hours 0 minutes 0 seconds again
- changed another timing variable (steps since the room began) to take delta_time into account; this variable is used for a couple things (like fading in of the last room's image, and how you can't hurt enemies in the first second of a half after entering a room); this caused a bug in fading the last room's image, because i didn't take into account load times, but fixed it
- made an optimization in how object speeds are adjusted to delta_time
- made the delay between the ship's functions vary by delta time
- changed a bunch of miscellaneous things vary by delta_time (by doing a global search for += 1 and -= 1 and seeing if it makes sense to multiply that by the length of the frame factor, and doing that when it did)
- made text speed scrolling vary by delta time; had a bug at first but managed to fix it; i think it had to do with (not variablename) resolving to false if it's negative rather than exactly 0, switching it to variablename <= 0 fixed it
- a few optimizations in the title screen background wave script
- optimized a few more loops with the var keyword
- realized i could actually preserve time in saved games (without wiping out old games' save time) and did that
- adjusted friending gain/loss rates to delta time by searching for friending += and friending -= in all scripts

now that i changed the game to change speed of gameplay according to delta time i need to go through the game to see what feels wrong / doesn't work and see what i missed etc. etc.

(today in twitter)

  • Dec. 14th, 2009 at 12:02 AM

  • 21:54 sister's ferret was trying to chew through the plastic to reach indomie mi goreng noodles, managed to chew a hole in one package

Dec. 13th, 2009

  • 11:11 PM
- worked some more on the grass surfaces (made 16 variations, combinations of 4 variations by size and 4 variations by density). spent a lot of time perfecting the variables so that they focus near the center and so that the different densities are visibly different. probably too much perfectionism for that one feature. wish there were more decorative elements to make more of these with, but will need to wait for orchard.
- made the 'undo' feature of the level editor optional; because i've been editing the game off a usb stick recently (so i can work on it on both laptop and desktop) the access time is less than a hard drive, and since it's less, the undo feature makes working in the level editor slower than usual, so i turned it off temporarily.
- found a weird 'division by zero' bug, which troubled me for a while, but after an hour or two of debugging realized that it was related to the grass surfaces feature and fixed it.
- because the script variables (using the keyword var) cause loops to run about 25% faster (no idea why, but it's a well known thing about game maker) i went through all the for() loops that are run every step and made them use var for their counter when they didn't already use it. this will probably not matter very much but it's a simple optimization.
- another small optimization: precalculated a few values used in the draw event of map objects
- added constants for every key character and numeral and used those to replace those ord('M') things with KEY_M. this will be slightly (very slightly) faster, and most of the time not really matter. but it was an easy optimization to do.
- started working on adjusting the speed of the game according to delta time, so that when the game is going very slow (or very fast, if the frames are unlimited) everything still goes at the same speed. so far, did the player's speed, but not the creatures, map objects, or other variables. however, due to the vast and extraordinary amount of time-dependent variables, i suspect fully adapting the game to delta time will take a long time.
- set a minimum frame rate (10fps) below which the game really will slow down, just because if i don't set a minimum the player will appear to 'jump' over things if the game has a hiccup or if the window focus is lost and then returned to the game, but pretty much any computer should be able to run the game faster than 10fps (and those that can't wouldn't enjoy the game at that rate anyway, even without gameplay slowdown).
- adjusted the speed of all objects to delta time. this may still be buggy, haven't thoroughly tested it at all, but preliminarily it works. there are still a few bugs like running past lilypads no longer pushing them in your direction if the frame rate is too high, those can be fixed on a case by case basis as i come across them.
- changed the game to automatically set the 'target' frames per second to the refresh rate (frame rate in the case of lcd's) of the monitor (typically 75 or 60, more rarely 85, 100, and others).
- fixed a cosmetic bug with the depth of the function ghostings/motion blur objects
- fixed a bug with diving through tunnels (it detected it from too far away)
- adjusted some but not all of the 'rotation' globals to delta time. the ones i could not change have to do with the way they are coded (taking the sine, cosine, etc. of the total number of frames since the game started divided by a certain number), and i can't think of an easy way to adapt that to time. it might be possible, but i'll skip it for now since it isn't a crucial thing.

at least these things still need to be adapted to the frame rate, and are currently dependent on the number of frames rather than real time: the delay between firings of the player's functions, the global 'timing' variables which are used for a lot of things, the delay between the actions of the creatures, the room effect fade-in, projectile speeds, path speeds (for argus projectiles or for larba movement, etc.), scrolling text speed, certain creature animations (such as how fast wings are flapped), the change in volumes of the atmospheric effects and music due to standing still, lilypad pushes, particles for water sparkles, particles for player wake, other particles in general, and probably dozens of other things.

Dec. 12th, 2009

  • 11:05 PM


- optimized some uses of the string() function each step, such as in the debug message to show the fps, by adapting ID's old string_int() function to SD (it was a function which does the same thing game maker's string() does, but only for integers, and faster, sometimes). went from 500-600 microseconds to 290-380 microseconds for the debug fps display. most of the time string() is only used in debug mode or in edit mode, but there are still a few places it's used in the game itself, like map coordinates display, save slot info display, upgrade function display, and so on. whenever those didn't require decimal precision (and that was usually), i replaced string() with my string_int() function, which should be slightly faster. if anyone wants the function too, see lj-cut.
- started a test game maker file to establish the problems with variables. it seems individual objects can have 10k-30k variables before they crash the game (with no warning about amount, and it varies randomly). it seems gm does in fact slow down the more variables you use, and what matters is individual variable names, arrays count as one 'variable' in that regard (although all array elements and all individual variables take up 1kb of ram each -- 1kb!). i didn't learn as much as i had hoped with this test file, but that's likely cause i had no clear goals with it. the most important thing i came away with is that the problem is not as bad as i had thought, but there are still many things i didn't test, such as whether when you delete an object the memory it used up with its variables/arrays is returned, and how whether strings being stored instead of doubles work any different...
- searched through my game to look at variable/array usage, and realized i use several huge arrays 40x40 (1600 elements) for map data storage: testcircle, worldmap1, worldmap2, worldmap3, worldmap4, cached, and cached-num -- which together add up to about 10000 array elements, which probably adds about 10mb of ram usage. it'd be fully possible to join at least some of these together somehow, since most of them are used in a boolean way (usually just storing things like whether a room has been visited, how many friended creatures are in it, whether all of the creatures in it are friended, whether a room exists, and so on and so forth), which would save 10mb of ram and possibly some speed. but seeing as it may not make much of a difference relative to other optimizations i'll put it on the wishlist for now.
- started working on grass surfaces -- because grass objects were very small and just for decoration (no interaction) drawing them on a surface and then using that surface as one object is an optimization trick. see picture. previously that would have to be made with a ton of individual blade of grass objects, which would slow the game terribly. now that's just three different surface objects, which is a lot faster. in the future i still want to work on varying their sizes and densities and such to make them more interesting than completely random distribution within a square.

string_int )

Dec. 12th, 2009

  • 3:02 AM
today i was asked by two different people to help them with game maker problems, and both times i learned something that would help me. and both were related to views. funny how coincidences work.

first: someone who found me through the gmc's 'mentoring' program (i offer to mentor people in gml and game creation) was asking about how to change the viewport in a room without weird rescaling problems. there's actually no way to do that in GM because you can't change certain aspects of a view that's in use without it scaling horribly wrong. i had a similar problem when changing resolution in SD, so i told him to try separate rooms, one for each viewport. we also had the idea to try changing the current room, and just re-entering it, as a simpler alternative. and that simpler method worked (provided the room was set as persistent). so i now know that i don't actually need 20 different rooms for 20 resolution possibilities in SD, but could reduce that to a single room that changed its own parameters and then re-entered itself. i may make that change later just to save the nearly-negligible load time the 20 extra rooms is using up.

second: someone else (evajolli) was asking about a strange phenomenon where when you change the view, the gui doesn't catch up with the view fast enough, and lags one step behind. this doesn't occur when the view follows an object, only when you are manually controlling the movement of a view in relation to an object. i suggested that we determine if it's a frame off, and try saving the x and y position of the view in the last frame, and then drawing to that position rather than the current position. she suggested using xprevious and yprevious instead of storing them (which i didn't think of) and she confirmed that it works. although i don't use GUI's in SD, i use a GUI for the level editor, and that always lagged a frame behind when the camera moved, so now i know how to fix that.

Dec. 11th, 2009

  • 11:11 PM
- tiny optimization to map objects which i'm sure won't matter at all (pre-calculated two values which were calculated every step by a division by 2).
- another optimization to float collisions
- found an interesting gm example which tests the speed of every function in the game and builds a chart of their speeds. ran it and read through the chart. didn't tell me too much i didn't know, except for a few interesting tidbits of info (under the lj-cut)
- discovered a bug: you can now push the pretty purple flowers! but only slightly, so it takes ages to move them anywhere. still, something i need to fix.
- fixed that bug

slept a lot today, so not much work on the game. it was also another very cold day. optimizations are going well though, here is an example of an empty room before and after my optimizations of the mouse cursor and player step and other factors:

(12:44:11 AM) RinkuHero: before: http://pics.livejournal.com/rinku/pic/0011w0gt
(12:44:15 AM) RinkuHero: after: http://pics.livejournal.com/rinku/pic/0011tdsd

note though that such optimizations are still almost negligible in large rooms full of objects, which are still fairly slow. even with the optimizations i sometimes get below 60fps, i'll try to achieve a steady 60fps+ in all rooms on both this computer and my desktop, then implement delta time speed changes.

interesting game maker optimization trivia )

Dec. 10th, 2009

  • 9:39 PM
- continued testing things for the chart (included under the lj-cut)
- optimized player step in a number of ways. some ways: first checks if there is a joystick plugged in before testing for joystick input, and checks for the joystick's existence at game startup rather than every step, and checks if any key on the keyboard was pressed before checking for each individual key (for keyboard movement). music volume changes due to movement now happen only ever 12 steps rather than every step, same with checking for upgrades and first-encounters with creatures. i also unwound a few loops. and i simplified the collisions in a few ways, which makes them much faster (still relatively slow, but faster).
- optimized the object activations code by relating it to player speed (if the player/camera isn't moving, there is no need to check for objects to activate or deactivate due to being outside of the view, and if the player is moving slowly, the game checks for activations/deactivations more slowly than usual)
- optimized the timer scripts a little by removing unused time variables. there is still room for minor optimizations in it though.
- changed all draw_circle_color to draw_circle_color2 (surface optimization for circles and spheres)
- minor optimization to the main object's keyboard input checks (check for anykey first, then check for specific keys) which saved only about 20 microseconds. compared to the average of 16000-32000 (60fps-30fps) microseconds the game takes per frame, that's not much, but i'll take it -- it's like, if you're trying to save up $32000, even $20 matters.
- slight improvement to another function in the main step event which got another 10 microseconds: moved a keyboard check into the keyboard check area (which checks for any key first)
- optimized the engine effect some more with loop unwinding (for the drawing a star function). it's nice that even in this day and age interpreted languages like gml make an ancient optimization trick useful.
- slightly improved mouse drawing speed in arrow mode with a loop unwind
- improved the speed of the 'ghostlines' effect (used in the venusjoins room (0,0)) by making the curves simpler and fewer
- made the effect surfaces not draw unless effects are in effect
- small optimization to blend mode setting routine (first checks if any effects are in effect before checking for each individual effect that affects the blend mode)
- some pre-calculation and other minor optimizations to reflections, but since reflections are by nature hard to measure (varies by exact position so much) i couldn't really test how much those changes improved them
- adjusted reflection heights a bit
- got annoyed that 'ghostlines' were still too slow for that room, and removed them (at least temporarily)

optimizations taking longer than i expected, but shouldn't take too much longer

chart (more complete) )

Dec. 10th, 2009

  • 6:54 PM
http://pc-mmo.nowgamer.com/reviews/pc-mmo/2475/immortal-defence

another review of ID (only got 6.2/10, but a review is a review)

it's actually an old review (written in 07) but this is the first time i saw it, so it's new to me

(today in twitter)

  • Dec. 10th, 2009 at 12:02 AM

Dec. 9th, 2009

  • 8:21 PM
- optimizations to water particles (the ones which trail the player, and the latent onces which produce shines on the water -- now they vary by current fps, and have a slightly shorter lifetime)
- small optimization to drawing the engine (pre-calculation of a value inside a loop)
- made functions to easily check the average execution time in microsecondsd of any given part of the code over a period of 60 steps
- started making a chart of the most time-intensive parts of the code, in microseconds. the chart, so far, is after the lj-cut / in the extended part of the entry
- installed the power supply (and a new videocard to replace my terrible 8500gt) in my desktop, tested it to make sure it's working, no grinding sound anymore, yay!
- tested SD on the desktop: interestingly i get a max 600 fps with most everything turned off both on my desktop and my this laptop, but in normal rooms (such as 0,0) my desktop gets a higher max frame rate than my laptop (90fps vs 50fps).
- created yet more toggles, such as for text
- tested more things for the chart

optimization chart so far (incomplete) )

(today in twitter)

  • Dec. 9th, 2009 at 12:03 AM

Dec. 8th, 2009

  • 11:17 PM
- finished toggles for graphical elements.
- did a few minor optimizations (such as not dividing 1/60 every step to increment the seconds count, but instead pre-calculating that and adding that value every step).
- added the ability to calculate and show the average fps from over the last 900 frames (15 seconds at normal frame rate), reseted every 10 seconds (rather than just the current fps).
- discovered a pointless bottleneck related to holding down ctrl (it caused the game to check for the existence of save files every step, part of the ctrl+number to save/load to slot system) and did a simple fix which reduced the slowdown from holding ctrl down (not that players would do that often)
- discovered something very interesting: disabling the player's cursor (by pressing right click to make it disappear, or by moving around with the arrows or wasd keys to make it disappear) increased the fps rate significantly, from a max of 150 to 300 fps; same thing with the player's sparkly engine (the two pentagrams thing, but nowhere near as bad as the mouse cursor is), so those seem to be bottlenecks. another large bottleneck is the screen-wide effect surfaces. currently in the process of detecting speed bottlenecks, then will order them by impact and address one by one. definitely the mouse cursor first, though.
- made a few scripts aimed at replacing the primitive circle-drawing scripts with alternatives that use surfaces
- simplified mouse cursor, and now it only reduces the fps from 293 to 277 instead of from about 300 to about 150. doesn't look as pretty, but better than slow.
- tested the toggles and made new toggles, i think i'm getting a good idea about what parts of drawing slow the game the most now, and have some ideas for optimizations. preliminarily, sd could stand to gain the most speed by optimizing or removing:

1. mouse cursor (now optimized/simplified)
2. player/creature trails (now turned off by default since they weren't that neat-looking anyway, although i'll keep them for the seena/unicorn)
3. player wake effects (there are two of these, i'll need to test each separately and see what i can do)
4. player engine effect (shapes/glow) (optimized it today a bit, although they can still be optimized some more with some loop unwinding)
5. screen surfaces for effects
6. activations/deactivations
7. collisions (in general, need to separate by type)

there are other things which slow the game down significantly but can't really be optimized, such as drawing map objects, and the existence of objects at all (just having them slows the game down due to the way game maker works). so i don't expect incredible gains from these optimizations -- even turning all 7 of the things mentioned above off totally only raises fps from 50 to 60 in an area that's full of objects. but it's still worth trying.

- changed time measurement from average fps to average milliseconds since last step, using a timer dll. this is more important info actually, because the "distance" between 400 and 500 fps is different than the distance between 50 and 150 fps (it looks like just 100fps, but the difference is 25% longer vs 300% longer), whereas if you measure in milliseconds you just get the time since last step

i'm finding optimizations fun. it's actually been one of my favorite parts of game dev since alphasix -- just trying to rearrange code to get a number to improve has a strange draw to it. looking forward to the next day of work on it. will try to get a new version to playtesters by the end of tomorrow in order to have them test the new speed optimizations.

in other news, today i got the new power supply today, but going to wait until tomorrow (light out) to replace the old one with it.

(today in twitter)

  • Dec. 8th, 2009 at 12:01 AM

Dec. 7th, 2009

  • 11:38 PM
- two new areas (technically areas i had already made, just not finalized)
- started to made some optimization test toggles; coded all of the toggles and made about half of them do their function (the other half will finish tomorrow); after it's done i'll be able to turn on or off any effect/type of object drawing/particle system/etc on and off individually to test which is the slowest and which ones reduce the fps the most, and will be able to focus on the problems

Dec. 6th, 2009

  • 6:03 PM
- plugged up window with towels and tape in order to reduce cold (yeah this counts as working on SD)
- tried using compressed air on grinding power supply fan; no go. ordered new power supply.
- moved SD files from computer to my usb key (it's a usb drive in the shape of a key and it's on my keychain).
- installed game maker 7 on windows xp partion on the macbook
- registered gm7 so that it's "pro". i was happy this worked without much trouble, as i've had problems with registering my copy on new computers before (they limit installs).
- noticed i had forgotten the gm color extensions, and reinstalled one of them; the other is no longer online anywhere. but this is not a big problem because the only problems it'll cause is some special colors (for the gui or special effects) will always show up as black instead of their intended color, and i can fix those on a case by case basis.
- ran SD on this macbook to make sure it works. it actually works quite well except that, since it's a laptop, i have no access to several hotkeys that i need to work on the game (number pad, end key, etc.) and will need to code laptop alternatives for those keys. but the speed of the game seems fine, so this macbook's cpu (core 2 duo 2.13 ghz) videocard (nvidia 9400) seem more than capable of running SD. the sound does sound more tinny on this laptop's speakers, but i can always use headphones.
- installed gentium font on this computer (since otherwise SD wouldn't work right and would use arial as its font instead)
- made it so that shift + a number key works he same as a numpad key
- made it so that shift + blackspace adds the invisible walls (alternative to the end key)
- used sharpkeys to change the capslock key into a prt scrn key (much more useful to me since i take screenshots often, and this macbook has no prt scrn key)
- installed irfanview (good image viewing program with some basic editing, i use it a ton) and used it to get the prt scrn'd image into png format for upload here, just like i used to do on the desktop

here's a pic of xp on macbook in gm editing sd )

Dec. 6th, 2009

  • 9:30 AM
(general update of unimportant life stuff)

one of the windows in my room doesn't lock on one side, leading to a draft in the winter. i tried to fix that again today but the best i can do is tape a towel over the part the draft comes from in order to reduce it. here's a pic:



due to the cold, i am often less productive in the winter than in the other seasons; cold makes typing and even just moving around and doing stuff require more energy, so my body has a tendency to just stay under the covers all the time.

in other bad news, the power supply for my desktop is making an annoying grinding noise, which disappears when i bang on the computer but returns a few minutes later, requiring another bang; as these guys describe here:

http://www.astahost.com/info.php/Pc-Making-Strange-Noise_t13163.html

as they say, it's likely caused by a build-up of dust in the power supply. i tried using liquid air to clean it from the outside but that didn't do anything. i've three alternatives:

one is to take apart the power supply and clean the fan internally, which can be risky since it's internally sensitive.

another is to use a vacuum cleaner on it from the outside to get a stronger pull of air than the canned air provides. someone recommends that in that thread.

a third is just to buy a new power supply and replace my current one with the new one. this is what i'm leaning towards now. especially because any good videocard requires more power than my current power supply provides, and because i've changed a power supply before (once) and it's not that difficult of an operation (although it's more elaborate than changing a videocard or something).

the noise isn't impossible to work with, but it's annoying enough that i'm considering moving SD's development to the laptop to work on the game in xp mode (i set up a dual boot thing so this mac can run xp as well as the mac os) until i can get the noise issue resolved. currently i only use the desktop when i have to, because of that noise, and turn the computer off at any other time due to the annoyingness of having to constantly hear or or bang on the computer every few minutes.

Tags:

Dec. 6th, 2009

  • 4:39 AM


alex chiu still going strong!! he's not only a genius for curing death, but also for his marketing

(perhaps i should advertise ID on his site somehow -- people who buy magnetic rings to bring immortality might like a game about immortality too, right...?)

"trust me! they work. trust me! they work" - alex chiu, in this video

Tags:

(today in twitter)

  • Dec. 6th, 2009 at 12:03 AM

Dec. 5th, 2009

  • 7:26 PM
- discovered a bug in the editor which sometimes added extra copies of objects over themselves, so i wrote a script to fix that issue when i notice it. i tried doing something which would prevent the bug from coming up too, but not sure if that fixed it or not (seems to have though)
- noticed that charybdis' movement wasn't working well, and tried to fix it (didn't yet)

(today in twitter)

  • Dec. 5th, 2009 at 12:03 AM
  • 06:25 and of course, when i've been awake for 40 hours and went to sleep, i only slept for 3 hours, and didn't feel tired at all when i woke
  • 16:48 this apple 'magic mouse' is the most fun thing to scroll with, i find myself just scrolling up and down pages repeatedly cause it's so fun
  • 20:43 yet another sd screenshot: pics.livejournal.com/rinku/pic/0011pgr1 (i should post these things here too instead of just my lj)

Dec. 4th, 2009

  • 7:28 PM
determined a few interesting things, thanks to a few gmc people and some game maker tests. the main thing is that not only is there a limit to the total number of variables you can use in a game maker game, but that this limit varies by computer -- it's usually somewhere in the thousands, sometimes several thousand, sometimes thirty thousand. gradually the game will slow to a crawl and use up more and more cpu as total variables used gets into the thousands, and finally crash. i suspect that is where the data corruption problems are coming from. so the solution is simply to use less variables, and to use more temporary/script variables rather than object variables. most of this can be saved for later, for the 'optimization' stage of SD.

paradoxically, this result is pleasing to me, because i now know why my games sometimes slow for no reason: simply declaring a lot of variables can slow a game down. someone reported 3% cpu usage with an empty room, and 100% cpu usage with an empty room and a few thousand variables declared. and it can add a lot of ram usage -- far more than makes sense for variables; 31000 variables added 67mb of ram. it's quite bad. but, on the plus side, this means that i can increase the speed of SD by finding ways to reduce the variables i use and to declare the local ones as local (i've been neglecting to do that). many thanks to hach-que for helping me with these tests.

anyway, actual SD work:

- changed the flower freeing script so that if it fails to free the flower in 150 increments of its loop, the next time it goes through that loop it checks a greater distance; did a few other optimizations to that loop as well
- changed a few things in the float scripts for optimization purposes (for instance, checking if it a flower is near the edge of the screen and stopping it from wandering off forever is now done only every 8 steps rather than every step, for a different 1/8th of all the flowers in the room, which should speed it up some)
- did a similar optimization related to the player's freeme script
- also did an optimization related to the radius of floats and decofloats
- started making new areas again, made two new areas (one pictured), though still adjustments need to be made

Dec. 4th, 2009

  • 8:09 AM


img taken on macbook built-in camera

Tags:

(today in twitter)

  • Dec. 4th, 2009 at 12:03 AM

  • 18:06 been up for like 36 hours for no reason

Dec. 3rd, 2009

  • 6:48 PM
- went through the gml scripts subforum on the gmc forums some more, found some more interesting scripts and bookmarked them for later integration w/ SD
- fixed an extra invisible wall in night watch which i forgot to remove
- starmaker mentioned that diving tunnels weren't working, so i checked it and sure enough they were broke. however, the problem is simultaneously easy to fix and serious in theory, see my report here: http://gmc.yoyogames.com/index.php?showtopic=455880
- managed to fix the problem by changing the variable from local to global, or by changing the variable name (either works, weird)

sleepy

(today in twitter)

  • Dec. 3rd, 2009 at 12:02 AM
  • 02:49 new playthrough by @ortoslon of a military satire game called we want YOU: www.youtube.com/watch?v=0BC1KiJCNSg
  • 10:47 was just interviewed over google wave (sorry i was late w/ the answers @spelk) -- speaking of wave, i've 10 invitations, anyone want one?
  • 17:06 the interview with me is up: blog.theclawproject.net/?p=203
  • 19:42 i can now type 70-77 wpm on this macbook, which is approaching my normal typing speed and at least is good enough to be usable

Dec. 2nd, 2009

  • 9:23 PM
- improved my typing speed on the macbook from 40wpm to 70-77wpm (this is in a sense work on SD because being comfortable typing on the macbook is important for porting games to it), although of course i would not count this as actual work on the game if it were the only thing i did today
- read through starmaker's new playtesting report
- fixed the bug where i had incorrectly disabled the sight function instead of the fade function

will re-upload that version and re-link playtesters to it tomorrow, after i try out some new algorithms for flower-wall freeing

(today in twitter)

  • Dec. 2nd, 2009 at 12:03 AM

  • 15:33 just uploaded / emailed out v0.48 of saturated dreamers to its playtesters

Dec. 1st, 2009

  • 3:07 PM
- as mentioned in regards to starcraft, created a way to 'squash' the shadows of things which stand (or leap)
- gave it to pegai (since its shadow wasn't working anyway)
- fixed a few shadow-related draw problems (things which should not be drawn with a shadow)
- filled in the gaps for all the remaining areas
- expanded the editor's capacity to clear particular objects from the screen (previously it had only the ability to clear the entire room at once rather than particular objects or types of objects), which should be useful when creating areas
- added a hotkey in the editor to load a room (previously that hotkey was missing even though everything else was hotkeyed)
- slightly changed reflection heights for float objects
- fixed a bug in the fade transparency level
- started going through the game for one final test of it before uploading the playtesting version
- came across another string comparison bug, and finally figured out that somehow gm was adding an extra ' ' at the end of some strings for no apparent reason. a line of code in a few places to remove any spaces in filenames that show up randomly fixed that problem. but it's still bizarre.
- came across a bug in the name entry screen where clicking on delete or end would not work when the name had the maximum number of characters (16, with #'s counting as two characters), and fixed it.
- slightly edited catob's intro text to hopefully make it clearer that you should not run into the catob. i don't want to give away too much info there though.
- changed the radius of the floating objects again, slightly (small objects seemed to have a much larder radius than the should perceptually have)
- made friending the watostridi a bit harder
- changed the friending effect pattern for when a creature is friended to be less rectangular and more gaussian
- changed the collisons of the non-touchable floating objects (e.g. lilypads) so that they stop when they are inside of something
- capitalized gurgle in its first-encounter script
- removed the gurgle's shadow
- removed the larb's shadow
- fixed a positioning which annoyingly made the player stuck between the pretty purple flower and a rock beside it; hopefully not many such positions exist in the game world
- removed adding the 'fade' function from the player's inventory after mercedes finds venus since that isn't really necessary just yet for the player to have, and cause so many functions can be overwhelming and only getting 9 at once would be better than 10 at once, and cause it makes getting through the maps too easy
- due to the above, i discovered a bug in the new circular function gui where sometimes the wrong functions are shown (it draws functions you don't have and doesn't draw ones you do have), and fixed it
- tested the function upgrading system; it seems to work good (although of course you get upgrades very frequently, like every few creatures friended, cause there aren't very many creatures to friend yet)

v0.48 is now done, will now zip and upload for playtesters / igf judges now and write a summary of changes for people

EDIT: done

*

trivia:
- lines of code for v0.48: 17892
- lines of code for v0.45 (one month ago, initial playtesting version): 14849

(this is possibly the most code added in a single month since i began the game)

(today in twitter)

  • Dec. 1st, 2009 at 12:03 AM

  • 09:24 laptop keyboards take more getting used to than trackpads (vs mice); i'm used to typing 100wpm but now can barely manage 40

Nov. 30th, 2009

  • 2:07 PM


- filled in some more of the gaps using invisible walls; more than half of them are now done
- made the pretty purple flower larger in its collisions with the player than in its collisions with walls (made necessary by the flowers freeing themselves from walls automatically thing)
- found a bug where the special ending scripts after some special scripts (like when venus joins) aren't triggering. it's quite baffling since i changed nothing at all, it's just that switch statements used to work with strings and now suddenly didn't (and just went to the 'default'), and more strangely only seem to work with some strings. it's a crazy bug (pictured). anyway, changing the filename from 'venusjoins' to 'venusjoin' fixed the problem, but i'd still like to know what caused it.
- found a bug where when you go to the first intro room the script didn't begin immediately, not sure what caused this either, but managed to fix it by making sure the invisible objects which hold textboxes can never be made not visible (despite their name being obj_invis) -- game maker's invisibility, i mean; at least i think it's fixed
- found a bug where after saving a room, the 'room saved' message doesn't appear sometimes. fixed it.

again, posting it early in case i fall asleep and don't work on the game again today

oh, and my new avatar/icon is in anti-support of game maker's actual new icon. not that icons matter at all, but i really liked this design (out of the various alternative icons people made). it doesn't really feel like 'game maker' without the red circle & hammer

(today in twitter)

  • Nov. 30th, 2009 at 12:02 AM

  • 08:51 played backgammon with @ortoslon today, over skype; he's russian so he pronounces 'backgammon' weird (like: b'gamon) :D

Nov. 29th, 2009

  • 11:42 PM
- added invisible walls to fill the gaps in more rooms (it's not hard, just tedious, cause it feels like i'm redoing rooms i already did, but it's necessary)
- went through the gmc dll and extensions forums to see if there was anything interesting since last i read through those forums; found a few things which might be good to experiment with (mouse gestures, check if the game is in focus, check if the game is already running, resolution change dll's which don't mess up the icons, a few anti-aliased primitives functions, and others)
- tried out the GM in mac beta to get used to it; it works okay for some games but is still pretty buggy, and color-coding code doesn't seem to work for me (it all appears as black), and i got a bug when i tried to look at the 'constants' page for someone's game maker example, and another bug when i tried to run an effects example (the text didn't appear and was written as solid chunks of color). still, at least it works and games are runnable. i haven't yet tried loading any of my own games into it to test them on mac yet though.
- made it so you can't use the ctrl/alt save/load hotkey system in edit mode (it interferes with other uses of ctrl and alt in edit mode)
- made it so that if in edit mode you try to save over a room other than the room you are currently in it asks you for confirmation (to avoid accidentally destroying other rooms by a misclick)

while watching a starcraft video today i noticed the shadows of flying units done nearly identically to the shadows in SD, haha: http://www.mobygames.com/images/shots/original/1021043095-00.gif -- although they place their shadows slightly lower than mine, but it's interesting to see something so similar. it also has shadows of non-flying units though, which i haven't done yet. it seems that for non-flying units it gives it a really small shadow height, and squashes the image vertically, so that it ends just a few pixels below the object above it; i may try that.

Nov. 28th, 2009

  • 4:34 PM


- worked more on float collisions, separated decorative float collisions from the collisions of floating objects that the player can bonk into, and did an optimization which is hard to explain but related to how often it checks for collisions after just having a collision -- it's working okay now, i like how collisions between floats "feel" now, on balance
- added an 'antitree' variable (for those objects that allow the player to move under them to an extent) for collisions; currently the only objects which use this are the large cliff wall objects
- updated border drawing in editing mode to show those borders
- updated border drawing in editing mode to be semi-solid (more useful information that way), pictured
- installed my previous computer's windows xp w/ boot camp on the macbook (figure might as well have both xp and the mac os on that macbook, so i can test my games in xp, vista, and mac). the trackpad is really burning my fingers though! i need a mouse for it soonly

posting this early (it's only 4:30pm here) due to going to sleep soon (was sleeping for a few hours, earlier, but haven't had a night's sleep yet), if i work on the game again today (likely) i'll edit this entry and add the additional items

Nov. 27th, 2009

  • 11:09 PM
- just continued working on various aspects of float collisions -- a lot of things are slowing it down or not working well, so i'm trying out a lot of variations (varying how many times it's checked per second, the length it goes before the loop runs out, the increment of how much further to check in each loop, and so on) -- still not done with it though

Nov. 27th, 2009

  • 6:54 PM
copied from evajolli's blog at http://evelynjolli.blogspot.com/2009/11/how-to-make-better-game.html

"
the gold
what makes your game fun, is it gold? maybe... you wish your games were made out of gold... but they're not. so i'll list some things that i find fun in games i play. i suggest you list some too, in the comments, or have your own list for personal use...

-shooting things
-shooting things that break
-shooting things that bleed
-shooting things that... explode!
-powerful guns!
-stealth kills...!
-fast vehicles!
-flying vehicles!
-fast flying vehicles!
-building things!
-building things then destroying them!
-building things then destroying them then building more things!
-level/map creation/editing
-eating things! yum...
-finding cool things! (example of cool: audio logs, example of not cool: keys)
-gaining money or points or score or rank... or things!
-unlocking things! (achievements, special features, characters...

those things are pretty generic... but why don't your games have them??? what a fucking genius you are, start making games you like!
"

i don't like the list but i like the idea (make a list of a lot of things you like to do, then make a game where you can do those things). so here's my list of things i find fun:

- talking to people i like
- drinking tea
- making friends
- exercising
- making games
- selling games
- playing games
- buying stuff
- meditating
- fantasizing
- making food, eating the food that i made
- researching things

so the best game for me would be a game where you can do all those things. the ones that come closest would be koei's simulation games, like romance of the three kingdoms, nobunaga's ambition, genghis khan 2, etc. -- those have at least 90% of the stuff above in some way or another. alpha centauri and civilization also come close.

Tags:

(today in twitter)

  • Nov. 27th, 2009 at 12:03 AM

  • 22:34 just got back from thanksgiving w/ family, was great

Nov. 26th, 2009

  • 10:43 PM
- as far as i can tell i pretty much fixed the surfaces error -- or at least, i played the game, got to a part where surfaces are used, and let the screensaver interrupt the game in both windowed and fullscreen modes, and the problem didn't come up during those tests; so until it happens again i'll consider it fixed
- small optimization in map object invisibility when off the screen
- began working on getting floating objects to free themselves when they get stuck

today i had thanksgiving w/ family, and a 1.5 hour drive each way, so less work was done than usual. i met my cousin andre again for the first time in like 9 years, and met my cousin nicole for the first time ever. andre and nicole are half-siblings but didn't actually meet until adulthood due to having different fathers and being raised apart because their mother (my aunt) died; they met by chance because andre noticed nicole's nametag had the same last name he had.

(today in twitter)

  • Nov. 26th, 2009 at 12:03 AM

Nov. 25th, 2009

  • 11:42 PM
- the sound that you recorded is now saved in the save file
- the function the ship was currently using is also now saved in the save file
- changed peeka's movement pattern so that it doesn't bounce off of walls but instead can leave the room (but will come back, usually, especially when it's very far from it)
- changed the blur effect a bit (now uses varying colors)
- adjusted the bottom 'cut-off' parts of harlock's title screen image to be less cut-off-looking
- began working on the numerous code changes that will be involved in fixing the surface bug (where screensavers destroy the surface and crash the game), will finish these changes tomorrow likely

(today in twitter)

  • Nov. 25th, 2009 at 12:03 AM

Nov. 24th, 2009

  • 11:53 PM
- attempted to make the chain/line function work better when moving floating objects; got it somewhat better but still not great (it still shakes the object that's being pulled a little)
- also altered its appearance minimally
- removed shadow for alpha repo (forgot about it)
- added autosave after you friend a creature (to avoid friending a creature, quitting, and then being annoyed to find it didn't save your friending of that creature)
- think i fixed a bug i didn't know i have regarding inaccurate friend totals being displayed in the save slot select screen which occured when you friended a creature, autosaved by moving one room away, then quit before going to any rooms after the last autosave
- added in saving of friended meter and health meter of the creatures to the room save file; previously only friended state was saved (except for larva, where its friending meter depending on total creatures friended), but not the actual partially friended amount, and not its health; this works but unfortunately will make old save files incompatible with the game -- not all of the save file, but now every friended creature in v0.45 will revert to unfriended in v0.475 (the next version of the game) -- this may be annoying to some playtesters, but i can always give them the debug key to friend a creature instantly to offset that
- added in a thing where if you are killed by a creature's health meter, they all return to full after you load from saved game (to avoid getting in situations where you are saved near an almost dead creature, and have an infinite loop of dying)
- got the macbook in the mail and tried it out; haven't yet connected it to the internet or tried game maker for mac's release candidate on it yet though. weirdly, even though i ordered a $750 refurbished macbook with 2gb of ram and 120gb hard drive, they actually sent me (at no extra cost) one with 4gb of ram and a 500gb hard drive (!?). yay for me, their mistake?

Nov. 24th, 2009

  • 3:36 AM
ID sales for this month have been pitiful so far: 5 sales on the site, 1 on d2d, 2 on reflexive. i probably need to do some more marketing somehow. perhaps send review copies to sites/reviewers which have not yet reviewed the game? there's a ton of those, and new reviews always give a tiny spike of sales. will try that.

also, haha:

Nov. 24th, 2009

  • 3:06 AM
been reading "the china study" -- i was quite disappointed by it, but at the same time intrigued. i didn't care as much about the subject as i did about the epistemology of it: how people's conclusions come before everything, and how universal this is, even among people specifically trained in methods to avoid it (scientists).

there really is no such thing as a rational person, just people who can be rational some of the time but aren't rational most of the time, and people who can't even be rational some of the time.

i agree with this review from amazon:

Read more... )

Nov. 23rd, 2009

  • 11:33 PM
- re-organized the to-do list / wish list for the game a bit
- changed the creature shadow heights for some of the creatures and removed the shadows for some of the other creatures
- when attempting to test the above, i kept getting that annoying 'error defining external function' fmod error (an error that happened infrequently, often when you ran a sound program at the same time as the game, but often required restarting the computer in order to fix), so i re-integrated the newest version of icuurd's dll with the game, and even though it was giving me 'error defining external function' a few minutes before that, it then worked. to test it, i started winamp and then ran the game, which frequently causes the bug, but it still worked. i hope that bug is gone, although no mention was made in the update logs that iccurd has fixed that bug, so i can only assume the bug is still latent. i also re-read the thread related to that bug, and i'll have to ask starmaker if she's on vista, because the theory there was that it's vista related, and starmaker is the only one other than myself to have encountered this 'error defining external function' bug with SD.
- adjusted the exit_game function to properly stop all sounds and both the music and ambient sound loop before exiting the game, in the hopes that this will help with the above-mentioned bug

EDIT: iccurd replied to my latest post in that thread, saying she compiled the dll using a different method (codeblocks) so this newer version of the dll may (or may not) have fixed the bug, and asked me to report if it still happens with this new version

Nov. 22nd, 2009

  • 11:29 PM


- changed the 'press a button to add invisible walls for each side' to a single button that added invisible walls to all sides because that's the way i used it anyway, and made it impossible to press it twice in the same room (to avoid placing more invisible walls over those which already exist)
- began working on creature shadows, added a shadowless attribute for those creatures who don't have shadows (usually ones that are directly on the water, or underwater)
- altered podoboo's splash effect a bit
- did a small optimization in the creature draw step (moved sprite index determining function from the draw step to the normal step)
- fixed a bug in the creature shadows for podoboo
- filled in a few areas w/ invisible walls (about three more)
- fixed a bug in the creatures shadows related shadow scaling and origin points, which involved going into like 50 scripts and adding another factor to each one's rotated sprite drawing function call (origin of rotation needed to take into account the scaling of the image)
- tested the shadows with all the creatures, fixed a bug in the shadows of scylla. shadow test pictured.
- sent half of gilbert's payment for an opening movie that he's filming for SD (to be used in the intro or ending or something)

not totally done with shadows though as i want to give different creatures different shadow heights, and remove the shadows from all the creatures which it'd make more sense to be floating on the water rather than flying above it

also i can't believe it's almost been a month since the igf deadline already! i feel like i've done very little on the game since then (mostly polishing and bug fixing issues)