[Todos] [x] Add Lander enemy [x] Add scoring [x] basic scoring system [x] bonus score animations (for clarity as to where the score comes from) [x] time bonus for Action/Build phase [x] scoring factors for enemy types [x] Add waves / levels [x] logic added [x] construct waves/levels [x] do introduction text for each level [x] Create graphics / integrate / animate Map [x] Cannon Ball [x] Boat [x] Bouncer [x] Flyer [-] Lander Boat (alt color for Boat) [x] Lander Man [x] Cannon [x] Castle Wall [x] Tower [x] some sort of background graphics for land Panels [x] panel increase ball speed [x] panel increase ball size [x] panel trash piece [x] panel rotate [x] beautification Radio [x] happy/sad/skip icons [x] Create sounds / integrate [x] Add high-level game items (diffculty selection, help, etc.) [x] basic menu [x] add difficulties/level select [x] add help [x] add About/Contact [x] high scores [x] score server submission [x] in-game score submission [.] score server top scores (daily, all-time) [x] in-game score display [x] add radio [x] in-game player [x] track server page (template done) [x] converted from spreadsheet [.] add radio_rate.php to record ratings (doesn't actaully record) [x] add URL/file checker (to ensure everything is okay) [.] replace non-working radio with blank panel [.] balancing -walls per build phase -size/speed increase for cannons -enemy speeds -enemy waves/levels [ ] cleanup / refactor [x] remove old text use, replace with ui.StaticText [ ] (Low) standardize file naming (hard, must do better M4 import for this) [.] use M4 to cleanup at least import statements (added for template support) [x] timing model outside of action palette, so that animations and timers work everywhere [x] certain objects only active in Action mode (to assist in debugging with mode switches) [.] resolve TODOs [x] Rule changes [x] when bonus expires on Build, then countdown until a wall is erased [x] when bonus expires on Action then countdown until enemy introduced (Flyer?) [x] cannons can only be built once per fort during build phase [ ] deployment [x] setup local/live environment flags [x] setup debug/nodbug build modes (in make) [x] create complete deployment package [ ] fix wiki_save script to exclude fortress scores [ ] add script to dump mysql score tables [.] suggested improvements (desired changes) [-] cross-hairs or targetting for cannon --seems clear enough now with arcing and land in water/land [x] rising/sinking cannon balls [x] cannon hitting water/land, wave/dirt [x] label on player name entry box [. ] further todos [x] remove this dispatching sprite movement nonsense, just do directly, no need to decouple now... [x] make skip button a stop button in Radio player (people willing to stop are unlikely to buy music, plus the dislike button already skips) [x] add a radio not available view... when errors occurs (but flash doesn't always produce an error?) [ ] check version for updates (for poeple who saved, or places where an upload is needed) [Rule Options] ( ) number of cannons to build, based on towers in: -last build phase (USED) (towers can't be destroyed, doesn't give immediate benefit to small forts) -current build phase (seems okay) -remaining end of action (way too hard) ( ) unprotected towers lose their walls? / don't count towards cannon bonus? -seems kind of hard (gameplay wise) [Going Further] -indication that no frogs can be placed, indication of options on left side -game statistics, number of shots, misses, etc. -bonus items --falling/floating items --bonus powers -enhanced animations (not so static, requires an editor/system) -special bonus modes -improved radio, animation FFT, progress bar, scrolling songname... -complete layout manager [Open Issues] [ ] (Defect) Assertion in MapBackground.hx:358, unreachable clause, really, it *is* unreachable [.] (Defect) Lander walked off the screen!!! --partial fix, but it is stupid, shouldn't be noticed except by terrible players that take forever... [ ] (Performance) (Low) tracing code should be moved into perl to speed up loading of levels (though it doesn't take long now) [ ] (Defect) (Low) Resizing with active objects outside of screen causes incorrect resize (a white border will appear in the space) [-] (Defect) Game over text is not always placed correctly (same defect) --Low since you usually don't resize while playing (though if I have title animations this may be important) --I'm assuming assigning a clipRect would be enough --perhaps the full-screen layout manager is required...? --made a two-line message to avoid clipping problem usually --oversize text is rarely seen, it shouldn't happen, correct fix is full layout manager, but I don't want that now [.] (Defect) (Low) the initial start dialog has text which is clipped, to solve this a complete text size management system will be needed, though this isn't trivial since we can never really know what size of text is desired by the user --since I only have 1 or 2 dialogs that need this now I'm going for the quick fix, which is just to have hard-coded sizes, but using a font manager of sorts... --good enough for now, no full autosizing, thus no handling of borders, etc. right now [ ] (Improvement) (Low) Layering of graphics, may not display optimally (flying objects always on top, top-left down ordering, etc...) --Low since they don't often overlap... [ ] (Defect) (Low) land-mass on the borders rounds and shows water, this is due to the cosmetic curving effect, but the corners should be preserver to ensure they are always there) --this is actually not so easy, since the curving algorithm needs to not curve at these points, probably better done in preprocessing, if done at all --Low since nobody will really know this is a defect, they can just assume it is an island... [.] (Performance) (Very Low) on build phase there is a still a slight pause when building a wall, given the timings of the calculations it is likely coming from the BuildPalette now. The delay is entirely within reason however (even estimated at 4 times as long on a slower computer) --I've reduced the delay significantly and i'm not sure how to get it faster anymore, plus it isn't exactly clear what takes so long --Very Low since it is basically resolved / plus, I don't know what more I could do... [Abandoned] [-] (Defect) (Low) Text in panels is clipped on small sizes and certain dimensions. --this is really a flash error, see the StaticText class for the reasons. --generally this works okay now though (with workarounds) [-] (Defect) On success the game over text is too far right for some reason --I dont' get this anymore, though on resize it's position doesn't change. [-] (Defect) (Low) alignemnt of build elements in grid seems too far to the left (walls in particular) --it seems to be minimal now and checking the code perhaps it is just an illusion? [Resolve] [?] (Defect) not all the clicks seem to be registering, particularily bad under windows --I think this relates to using Click rathe than Mousedown, in test under XP at home this worked fine after making this change (perhaps moving while clicking doesn't registe clicks) [x] (Performance) that random slowdown occurs again, when there are lots of player bullets and many enemies, I'm not sure this has anything to do with memory anymore, perhaps one of the locator functions? --good enough though not to stop release --I think I solved this with the fixing of the Event handling in MapBackground (too many old MapBackground's still listening for events) [x] (Performance) (Low) Collider should reuse bitmaps, I seem to be getting slowdowns when many comparisons are made (I'm guessing it is a GC thing... though I'm not certain) --hmm, I'm not sure if this is really the problem, and without a certain intelligence in reusing the correctly sized bitmaps this may slow it down... [x] (Defect) Cannon ball shadow is over the cannon ball itself, noticable by larger balls [x] (Performance) random slowdowns during game, perhaps the event dispatching and the stepLiveObjects which creates many arrays all the time may be the source of the problem --perhaps ditch the Flash event mechanism and built a quick one for the game --not likely the flash events... perhaps all those point creations --not severe enough to delay the release --though the next biggest issue, likely for complaints --[x] Collision detection bitmap reuse (one likely source) --[-] MatPoint temporaries and allocations in calculations (the next likely source) ---after some checks in Collision this is unlikely a big concern, the GC of these objects is likely *very* good --modifying font size selection in static text eliminates that perceived delay when enemies are killed and the popup score appears [x] (Defect) (Low) Flash crashes when "Restart" is pressed in some cases (usually during a quick completion, possibly related to text clipping issue as well?) --related top text masking issue it appears (removing the masks and this doesn't happen) --Low since this is truly a Flash player defect (perhaps there is a workaround by cleaning up the mask when the object is removed, but since I don't really need it in Fortress, this is low) --clipping problem appears to have caused this [x] (Defect) purchases may have no entries, button should be disabled... and the radio script should always ensure that an entry is there (even for catalog items) --go to default url if no purchase items [x] (Defect) AS3 compiled version radio doesn't want to load data...? --seems to be okay, it was a removeChild problem I believe --nope, album art still not shown! (Security Problem) --also fixed haxe XML problem [x] (Defect) dialogs right/bottom margins seem to be off (items extend too far) --collapse margin issue in LinearLayout [x] (Defect) in debug player the ui.Modal is creating conversion errors --no lazy evaluation in Haxe/Flash, fixed the if statement doing cast [x] (Defect) shore distance has a problem in the lower-right corner (it appears to increase again, clearly seen in title segment) --fixed it, though another defect appeared which seems to be a PERL oddity --other defect worked around [x] (Game) Level 3, upper-left tower has starting cannons in impossible location (leftsize) [x] (Defect) In AS3 compilation the timer countdowns in the panels don't appear to be working, nor are they being updated at all (no score, no bonus, no danger time) --Refer to GameDriver TimeEvent notes [x] (Performance) when the Boats have no more walls they end up searching the whole grid each time, which is rather slow... either maintain non-wall status or keep a list of walls (though the latter would not be used by anything else and is harder to maintain) --limit search, also improves boat attack logic [x] (Performance) during attacks there are occasional pauses, I suspect something when walls are destroyed (though I timed it and the redraw is very short, though close to our timeout interval) --this seems okay now, I moved water to the permanent drawing... --caching backgrounds as bitmaps seems to help a *lot* --mapBack object cached though causes major problems (clearly) [x] (Defect) Cannon balls not always hitting walls which are targeted -- need to improve collision detection (similar to live objects). -- balls can thus also hit multiple objects, but enemies do perfect targeting so with a small ball they won't hit more than one target [x] (Defect) Cannon balls disappear before they actually touch their target location. This needs to be changed so that for a single iteration the call stays by the target. -- looks a lot better now (though a finishing animation would clean up the hanging feel) [x] (Defect) click targeting seems not to position ball in middle, but rather upper left -- This is actually a graphic problem, the cannon ball test is not UL aligned, I have to watch this in the export profiles [x] Figure this out in profiles... -- apparently I exported with page bounding box, not selected object, created a correct Corel profile [x] (Defect) cannon balls are hitting too many live Objects (coming from flyer they hit the tower and the cannons on both sides) ...the hitTestObject is using the bounding boxes, which is silly since you have very little control over them (and also appears defective since in this case they are *not* overlapping) ...will need to create our own collision detection ...ObjectCollider built on the flash bitmap functions [x] (Defect) BoatObject sometimes wanders onto land, and possibly off the screen (hard-code into the movement logic not to do so) -- the new movement logic seems to take care of this though -- [ ] (Improvement) they wander to the edge of the 0 square putting them too much on the land, this could be improved by producing an interpolated shore-cost, though this isn't striclty necessary (since these place objects on the land the effect isn't that bad anyways) [x] (Defect) the menu doesn't consume mouse commands that it should, this means that when a popup is called, the click still activiates a shot in the MapBackground. This needs to be done in a generic manner, since other elements have no idea about a popup --menu up/down/click, key up/down consumed while popup is active [x] (Defect) it appears you can't build walls on the upper parts of Towers (since they intersect I guess). This is part of the hitTarget checking and whether to use the display object, or a shadow object for intersections. A shadow object will be needed to fix this -- it will also enable other graphical effects like shadows and side animations (which would otherwise also increase the hit area of a LiveObject) --It must have been for some other reason, since this works as originally planned, the map objects have a size independent of their visual --happened again, I'm not sure what it is though... suspect modmap... --disabling scoring object makes it go away, but that does't have doesOccupy set anyways... --removing mod check on wall confirms something is wrong with the modmap... (modmap showing a 2, meaning it thinks there is a wall there!?!) --damn, the reference-assign problem. I must remember to COPY points, in this case the score was modifying the location of the tower... perhaps a complete code review... [x] (Defect) Select tower (upper-left, map 1), Go to Build Mode, delete all walls, place cannon, in Action mode when all walls are gone the boats attack a space just above the tower, not the tower itself... perhaps it has to do with the scoring numbers...? --just as above [x] (Defect) sometimes during build a little cannon appears in the left palette (outside of the intended box) --set visible=false like walls [x] (Defect) fortresses appear not to need walls along the edge of the screen... likely since I'm using the shoredist now and that doesn't actually consider the edges as water... [x] (Performance) CalcAll in MapData takes a long time, though 3x faster in AS3 compilation. This causes noticable delays during build mode (during action this is simply not done). Perhaps some more iterative solution may be necessary (the delay is short enough that in the background it wouldn't be noticed) --Cost map could be done by seed filling near new walls, though without being extremely clever this would result in more seedfills rather than less --time for cost and mod map seems split in half (50% each for time, strange) --calcCostMap improved 25% in Haxe, much more in AS3 (reduced number of Open starting points) --calcModMap greatly improved (land in Fort based on costMap, not borders, which was unnecessary) --now I think the moving of walls is causing a slow-down (iterator is consuming a lot of time in draw, likely also in calcCost, this iterator should probably be inlined!) (Nope, the MapBackground has been greatly improved in speed) --okay, using direct iteration (x,y rather than xOrderIter) and a few minor improvements. Any remaining improvement must come from the seed filling, but that has been heavily optimized already (it would simply need Flash tricks at this point) [x] (Defect) tower/panels, some sizing issue (seems squished) and black lines need to be thinner/less detail (for tower). Perhaps this is coming from the export? --loading source SWFs directly it doesn't appear to be a problem with the SWF file --hmm, all clipart seems to have this odd sizing issue... it is not fully stretching the source image... --tower graphic fixed --Corel export is broken, the bounding box includes more than it should, though the size is correct, this makes using width/height incorrect, the original size can be taken from swfmill (size/20) and then the scaleX and scaleY can be set instead (or perhaps a clipping box should be created?) --fix, modify all bounds to be the same as size, in a few tests this seems fine (better fix maybe to find what Corel is adding/subtracting and just modify that, though this might be harder) --fixbounds.xsl and make to reset all boundaries