.plan Archive 2000
![[Home]](../images/bhome1.gif)
![[Products & Services]](../images/bprdsrv1.gif)
![[Contents]](../images/btoc1.gif)
![[What's New]](../images/bnews1.gif)

21/DEC/2k - 01/JAN/2k+1
20/DEC/2k
- I think I've figured out how to hook up something I read out of a file with a menu
command in the app. The commands register themselves with the command/menu system. They're
IDed by a STRID. That way, I can read the string version from a file and convert it to a
STRID. I can't think of why that should be any worse than a monolithic table of function
pointers.
Ooo, Michael spotted some code on flipCode.com that looks even better
Nope, turns out it's almost exactly the same as what I had in mind
19/DEC/2k
18/DEC/2k
- Tracking down bug in Credits screen in German
Turns out it was in all languages
Unnamed prop lists are really messy to work with
The original code was written before we put the language blocks in there. It assumed
all of the prop lists were at the root level. There were some parens missing. When I put
in the outer parens even the original file failed. It took awhile to figure out the
incantation to access the prop list we needed.
15/DEC/2k
- Feature creep even in research :-)
- Look at instantiating and destroying RefereeAIs during the run
- Look at taking advantage of the overlay controller as more than just a place to hold the
collection of overlays
- Look at setting up an interface to more easily add objects to be serviced both during
event frames and during draw frames.
- I'd like to build menus from a propfile. The question is, how do I hook up a menu choice
to a function at runtime? Need some sort of table of functions known by unique IDs.
- It looks like a Fox-like table is what I want. But I don't want it to become monolithic.
14/DEC/2k
- Might as well start looking at simple testing changes
13/DEC/2k
- Probably could have come in, but with so little to do decided it wasn't worth the risk
12/DEC/2k
- Picked up car
- Going over Michael's flight test doc
Came up with some simple additions to the sim that would help testing
Also brainstormed some more elaborate changes that would be nice to have before starting
work on v2.0
- Left early due to impending ice storm
11/DEC/2k
- Trying to find things to do
8/DEC/2k
- Took the day off
- Reinstalled Windows at home
I have a page and a half of stuff to reinstall. About 2/3 through as of Monday.
Turns out some of the bugs I was hoping to fix are still there. Man, Windows sucks.
7/DEC/2k
6/DEC/2k
- Okay, not really locked down
- Added pref to count all Ripmax channels as existent, whether they are or not
5/DEC/2k
- Just kind of looking things over, preparing for postmortem, thinking about general
design issues
4/DEC/2k
- Code and asset lock-down
- Just doing a some more testing
1/DEC/2k
- In 10:30
- Testing demo
- Enable OpenGL in release
- Treat engine as dead if prop is knocked off
Michael got to it before I could
- Edited the mission file to give myself wind in training. Man, that's hard
- Short meeting on new Inertia web site design
- Looking at how to decrease size of demo
- #ifdeffing out all of the unused event and training code only saved 400k.
Looked like at least twice that from the .objs
- Out 8:00
30/NOV/2k
- In 10:30
- The lockup seems to be happening in a piece of code that shouldn't care what the card is
doing. Michael thinks that maybe the driver is leaving the FPU in a bogus state.
- Installing the latest drivers to see if that solves the problem.
What a pain
- Lunch with Manning
- After about 30 tries I haven't seen the hang, yet
Grr, just after writing that I got a hang when testing the demo
- Out 7:30
29/NOV/2k
- In 10:30
- Testing
- Turns out we mg everything as part of the build process. The name of the source file is
stored in the .sm. So the demo version of the trainer has a different name stored in it
than the release version. That changes the CRC. Changed the code to match the demo version
of the aircraft
- The expired variable was private in GUIApp. Moved it to protected
- I'm getting occasional lockups on amddood. Once it starts happening it keeps on
happening until a reboot. It sure looks like a driver problem. Going to bang on it some
more in the morning, then get the latest Voodoo3 drivers.
- Out 8:00
28/NOV/2k
Apparently, Town North didn't put all of the parts back into my car. Neither they
nor Rotary Performance wanted to take the time to send the parts over, so I got to be the
messenger. Minor nuisance.
- In 11:15
- Fixed crash when going from custom controller to preset then cancelling
When going back to custom we ended up trying to get a NULL data member from the list and
then dereferenced it
- Fixed strid mismatch between controller screen and string file
- Implementing test to catch if they've turned the clock back
- Implementing expiration dialog
The only convenient way to do this is to set a boolean that we check after we have Fox up
and running
- If plane is missing, assume it was deleted due to a crash, and therefore is broken/dead
for scoring
- Tried to install TNT into Sony, but it doesn't have an AGP slot. The G200 is on-board
It's a P2/350 and it only gets about 35 fps in Podunk. I may switch back to AMDdood as my
second machine
- First UT session in a coupla weeks. This machine does okay, but there are some hiccups.
Need to track down why. Might be D3D.
- Testing
- Out 7:15
27/NOV/2k
- Put in test to enforce only flying trainer
- A few quick changes
Text of opening message
Default max wind speed
Default mapping for gear
- Automagically respawn plane after a few seconds if broken in free fly
- When customizing a plane, make sure we choose that plane when going back to the main
workshop screen
- Out 7:15
23/NOV/2k
TurkeyDay
22/NOV/2k
Michael didn't want to be exposed to cold, again
21/NOV/2k
Cold flared back up. Out sick
20/NOV/2k
- In 11:30
- Cold mostly gone, just real tired
- Fixed backwards tests when deducting points in taxi, landing and precision flight
- Fixed free fly plane screen not remembering last plane you flew
- The mechanism to synch up the planes between free fly and workshop wasn't getting reset
after we used it
- Building little app to generate CRC
- All checked in
- Short-circuit "run-before" test when necessary
- Out 7:00
Never did get ahold of my adjuster, today. Joel was changing my phone, so I
couldn't leave a number for the guy to call back.
Similarly, apparently the head of hockey at Ice Bound wants to talk with me about the
fight that broke out at last Friday's game. I wasn't there, but I'm the team rep. I didn't
manage to catch him, either.
17/NOV/2k
Out sick
16/NOV/2k
- In 11:00
- Lengthened skip frame default to handle engine start
- Make cancel work as a real cancel in controls screen
- Save off and restore Ripmax info on each channel
- Event startup
Now that we pause while asking them to set the throttle, go ahead and let the engine run
- Meeting
- Added timeout in Free Fly and Limbo
- Capture respawn during welcome wait
Only a problem in training, where we move the respawn point of the plane
Needed to add a "previous state" variable to be able to recognize that we still
hadn't reached the start state
- Out 8:30
Car: My adjuster told me he would be busy this afternoon, but that I could talk to
anyone at his office. Wouldn't you know. As soon as I start calling their phone system
goes out and all I get is busy signals. So I don't know if the estimator made it to my car
today.
15/NOV/2k
- In 11:00
- Set up remote debugging, since the Ripmax driver doesn't work on Win2k
- Moved 64 meg from Amddood to Sony
- Found a loophole that let AI think the user had throttled down when he hadn't
- That was causing the "throttle too soon" message". I think there's a
timing issue, so it doesn't show up in debug.
Still a problem there. Now, I can catch the throttle in the right place. But we're
also trying to handle the position of the engine switch, which means we are constantly
turning it on and off. Gonna have to chew on that awhile to figure out what I want to do.
The plane is paused at that point, so I may just go ahead and let the engine run, if the
switch is in the on position.
- Somehow, the controls are still coming up random the first time in
Typo
- Simplified "okay to kill" message in Settings|Controls
- Out 10:30 - Wasted a coupla hours
Car saga:
I've had to deal with insurance companies enough to know that you have to call them
every day. If you call them, one thing will get done. If you don't you'll fall through the
cracks. Thus it was, today. I had to make four calls today to actually get ahold of the
adjuster assigned to my case in order to get him started on the next step, getting an
estimator out to my car tomorrow.
Oh, and on the voting fiasco:
Grow up people. Take responsibility for your actions. We, the people of this country,
gave you the opportunity to vote. The ballot wasn't as clear as it could have been, but it
certainly wasn't that hard to figure out. You look at it, notice that it's a little
awkward, so you take and extra few seconds to make certain you're punching the hole you
intended to. If you're too stupid or too careless to do it right, then tough.
Jay Leno had a great line in his monologue a coupla days after the elections:
"Remember when it was embaressing to be stupid?"
In my minuscule opinion, the Florida state election system seems to be handling it
about as well as could be expected in today's tabloid culture. Though, I do think
picking and choosing which precincts to recount is a form of gerrymandering, which is
inherently underhanded. I haven't heard if they're doing this, but they should recount all
precincts that were within some percentage, say 5%.
I didn't vote, because I don't take the time to research the candidates and most of the
issues carefully enough. And I refuse to vote based on a couple of very narrow special
interests, or alternatively, based on which candidate has the best sound bites.
Take Senator Leiberman, for example. A few years ago I was active on a Compuserve forum
where we dealt with his first attacks on computer games. Based on some first-hand
reports from some of the public meetings he held, along with reporting of the
Senate/Congressional hearings, it seemed very clear that he was a close-minded zealot
following a politically correct agenda. Also, he's pretty devoutly religeous. Me being
pretty devoutly agnostic/atheist, that counts as a strike against him from me.
OTOH, in the time since he was chosen as Gore's running mate I've read reports that,
for a politician, he's remarkably honest and ethical. And those are virtues I'd like to
see more of in our government.
So, if given the choice, would I vote for Leiberman? I don't know. I don't have enough
information. It would take considerable time and effort for me to gather enough info that
I considered reliable before I could make what I feel would be an informed decision. And I
don't know many people who I feel have invested the time to understand the complex issues
of today any better than I do.
And that's why I don't vote.
Hey, who put this soapbox here? Sorry about all that. Let me climb off ofthis thing :-)
14/NOV/2k
- In 10:15
- Revived Michael
- Finally got Smartheap satisfied. Turns out I had the path wrong.
- On respawn, complaining about user throttling up too soon
We really should pause the plane until the event starts. Too late to put that in, now
- Added a "skip frame" count to EventAI
Otherwise, we move the throttle down one frame and test it the same frame. But the input
kick doesn't take effect for another frame or two. By that time, we're already in a state
that thinks the user previously had the throttle at 0. So we disqualify him for
"moving the throttle."
- Don't set a "first frame" boolean when resetting the input system
This was only used in DX, and it doesn't look like it's needed
- Out 7:00 Hockey
Really distracted by my car. Turns out it's over $5000 damage.
The guess is that something called a "pulsation dampener" was leaking fuel.
Apparently, that's a device between the fuel pump and the injectors that smoothes
out the flow of fuel to the injectors. I found several hits in Google, so I guess that's a
standard piece of fluid dynamics equipment.
Started talking with the insurance company to cover it under my comprehensive. I sure
hope they don't want to total it. But I'm afraid that's what's going to happen. Not sure
what I'll do then.
The really sad part is, I've been smelling gas for quite awhile. I guess my
procrastination really cost me big, this time.
On, man. Here's a guy that
had the same problem I did. Only he was even less lucky than me. Mine didn't
even cook the paint on the hood.
Here are a coupla advertising shots showing one in pristine condition.
Man, I like
this car. I have a photo of mine that I took not long after I bought mine, but I
can't find it right now.
13/NOV/2k
I feel like I need to type up what I did all weekend. I'm so used to doing that. I did
borrow Rosy's truck until my car is fixed. I was going to rent a car, but my driver's
license is way expired
- In 11:00
- Man, I'm not used to having a coupla days off. I can't remember what I was doing when I
left Friday
- A coupla events' auto-engine start still aren't working
Turns out only one wasn't working. All the others work as we want. Basically, we override
the switch on the controller
- Switching to new machine. A Dell P3/800. Nice :-)
- Problem with Smartheap/Heapagent
It keeps complaining that it needs dbi.dll or mspdb40/41.dll. I don't have any of those on
amddood, nor does Michael on his machine
- Out 7:15
10/NOV/2k
Yikes! My car is likely going to cost a minimum of $1000, if I'm lucky and nothing
important was damaged
- In 10:00
- Finish popping up controls pane
- What to do when we try to force engine on and the switch is in the off position
Obey the switch
- Don't instantiate controls first time in
Reduces confusion when taking them to controls screen
Bring up Windows controller applet
- Out 7:00
09/NOV/2k
Well, my day started off lousy. My car caught fire. Luckily, it happened while I was at
a light, so I could smell it and see the smoke. I pulled across the street to a gas
station (away from the pumps) and they had a fire extinguisher. I think we caught it
before it did a lot of damage. At least, looking from the top of the engine I couldn't see
any major damage. And it didn't cook the paint off.
I sure like this car. It's normally very reliable. I hope nothing major is damaged.
- In 1:00
- Apparently, my auto engine start isn't working. It works on my machine!
Turns out I somehow overlooked balloon pop
- Pop up controls pane on initial startup
You know what's the most difficult part of this product? It's not the depth perception.
It's not ZBuffering. It's trying to get the transmitter/joystick driver loaded on a
neophyte's machine. There's just no easy programatic way to do that. For a hard-core gamer
it's no big deal. But for a big percentage of our audience it's impenetrable.
- Out 7:00 - Have to ride home with Chad (shudder!)
08/NOV/2k
- In 10:30
- Apparently, prefRead* is slow. So we're going to have DoFrame set a flag so that we can
assert that we don't call any of them every frame
Oops, my first compile was in release mode. Now I have to compile the world in debug mode.
Doh!
Well, asserts don't work. We have several instances where we get called during DoFrame
where we can safely read a pref setting. The call comes at a point where we know it'll
only be called once, or at least just a few times. So, instead, we're going to count up
the number of reads we do while inside of DoFrame and on shutdown we'll assert that we
don't have more than a few hundred
- Make description boxes read-only
- More work on setting up new machine
- Installed Multi-Edit 9.0 beta 2
It's nicely integrated with Visual Studio. My 5 minute test makes it look like it's going
to work really well
- Added strTrainingControlsPointDeducted
- Going over latest Ripmax list
- Start engine automagically for user in all events
- Out 7:30
07/NOV/2k
- In 10:30
- Getting some random behavior in First flights
Sometimes it thinks you touched the ground
Michael found the touching ground. Apparently, our raycasting code to find height AGL is
ignoring the user's plane most of the time, but not always. So we're getting a hit on the
top of the wing that makes it look like the origin of the plane is .39 feet under ground.
- Sometimes the start position is at the wrong end of the track, or something
Can't reproduce this one, today. I think I fixed something yesterday that can cause this.
- Finishing landing speed recommendations
- Any disqualification in First/Advanced flights was kicking you back to the beginning
That sure would have been annoying
- We're at RC1!!!
- Testing
06/NOV/2k
- In 10:30
- Testing
- Chad found a coupla bugs on some of the stuff I did Friday
- Finishing conditions for take-off
- Finishing conditions for first flights/advanced flights
- Testus backwardus on T&G deduct point test
- We found another Pentium bug!
Not really. But apparently the floating point on an AMD is a little different than an
Intel. When I divide 120 by 60 and put that into an int, on an AMD I get 2 and on an Intel
I get 1.
- Widened corridor in taxi
- Oops, not displaying X's in takeoff
- F-16 in free flight thinks engine is on and can't get to preflight
- Don't say "point deducted" if no X's showing
- Another try at finishing conditions in first/advanced flights
- Oops, TestTrack's critical job detector kicked in
- Touching up landing speed recommendations
- Out 11:00
05/NOV/2k
- In 1:30
- Testing
- Update text for events and training
- Out 6:00 Hockey
04/NOV/2k
- In 1:00
- Try to detect which Ripmax channels exist
The driver sometimes returns bogus values if the Tx is unplugged or turned off. We'd like
to detect that and tell the user
- Prompt the user if the main controls aren't assigned
- Testing
- Out 9:00
03/NOV/2k
- In 1:30
- Finishing conditions of take-off and first flights/advanced flights
- Go over defaults
- Testing
- Out 10:00 - Hockey
02/NOV/2k
- In 10:45
- Workshop crash, not finding propeller in combo
- Missing prop on borg
- Protect against out of bounds combo indicies
- Still can't find source nor workaround to unpause bug
- Typo in final throttle position in free fly checkout
Was looking for 500-99%
- Don't let taxi score go negative
- Remove Unlimited Tx range
- In glide, don't check for off runway during rollout
- In pylon, compare actual altitude against pylon min height (skyfield)
- On aircraft load, modify fuel to look for capacity set in workshop
- Out 5:00am, the next day
01/NOV/2k
In 11:45
- Electric planes still not working in glide
Not detecting when they land
Turns out I got stuck forcing their engine to off and never fell into any other tests, so
we never switched states. This also masked plane broken detection
Changed order of tests so that we break out of that state even if we have to force the
engine off every time through. Also, changed ForceEngineOff to reduce throttle to idle in
addition to setting engine state
- Planes not responding to throttle in taxi and takeoff
When we unpause the plane (re-enable inertia) we zero everything out. Apparently, there's
some "previous frame" value that's getting held over. It causes a number to go
negative and our engine refuses to apply torque
- Out 8:30 - Hockey
All Hollow's Eve/2k
- In 12:15
- Crash seems to be moving around
Chad has crashed it four or five times today. Michael and I can't get it to happen on our
machines.
- Glide handling of electric engines
When getting electrics to work in preflight, I broke glide. For preflight and the
beginning of events, we want to treat electrics as always-on. In glide, after the climb,
we want to look at the throttle setting of electrics.
- Load imagehlp.dll dynamically
What a pain
- Boost new countdown sound a little
- Start on trying to determine if channel exists in ripmax driver
- Out 2:00 - And I thought it would be a light day because there aren't many bugs
30/OCT/2k
- In 11:15
- Attacking a crash bug in the sound manager
Can't reproduce it. Chad only sees it about once per day
- Sorted combobox isn't working in one spot
Turns out, we're being bit by inconsistent use of an indirection table. The default
handler goes through the table for the icon, but doesn't for the text. In the other
screens we're responding to the change selection message by setting some internal
variables and then turning right around and setting the current selection. setCurrentItem
goes through in both cases. Since we're so close to gold, I'm just working around this by
doing the same thing in this workshop screen. After ship I'll go back and sort out what
should be happening in that handler.
- Moved telemetry down 10%
- Default preflight checkout to enabled (dunno when that changed)
- Change control fam roll rate to 360
- Set view velocity so that we get doppler in tower and dropcam views
- Out 12:15
29/OCT/2k
- In 2:30
- Daylight Screwup Time really annoys me. Even when it's in my favor, like this one. Why
in the world do we intentionally cause so much confusion and inconvenience twice a year?
- That smoke turned out to be a pain. Took awhile to back into the problem. It looks like
that code just growed. It's pretty nasty.
- Get random working in Advance flights
I was changing the start location but not the target orientation. So it looked like the
X's were unnecessary. Now, I only change starting location when needed
- Changed Pylon text from "Final score" to "Final time"
- In target drop, always keep the closest edge of the target the same distance away. For
the smaller targets it was too far
- In T&G, if user touches outside landing area and drives on, give him more
instructions
- Out 12:00
28/OCT/2k
- In 2:00
- Went through all event and training and plugged leaks where we allocate memory for a
cookie
- I have a few leakage reports that don't look right. I'm looking at where we allocate and
delete. They sure looked matched up to me.
Ah, an odd one. A sequence of events problem. In directory foo I created a copy of one of
the planes to test the workshop. It was unique at the time. Later, in directory bar, I
created a copy of the same plane using the same name. In that directory it was unique.
Directory foo runs from a bigfile that gets built from directory bar. After doing an
update to get the latest assets my .bat file automagically builds the bigfile. So now, I
have two planes with the same human-readable name. That screwed up some of the code that
deals with matching the sorted combobox to the unsorted internal list of aircraft.
- Added StartInAirSpeed
- Had to add default value parm to root CPropInfo::GetIntProperty and GetFloatProperty
- Trying to figure out why smoke stops
Has something to do with an unsigned going past zero. I'll try to finish it tomorrow
- Out 1:30 - three hours
27/OCT/2k
- In 12:00
- Oops, in one spot in airfoil preview I was building the preview string with the user
display string instead of the filename string
- Servo sounds
It turns out moving the sound to the airfoil doesn't make sense. Since multiple airfoils
are serviced by one servo we need to handle the sound at a higher level. Moving
updatesound call to the aircraft DoFrame
Silly mistake ate some time. I figured the control delta for the ailerons. Then used the
same variable in the following loop for the elevators, then the rudder. I forgot to
clear the variable. So when the ailerons moved, all three sounds played. When the elevator
moved, the elevator and rudder sounds played. I was trying to reduce the volume of the
servo sounds and started testing with the aileron. I could never hear it because the old,
louder elevator sound was drowning it out. Took about an hour to figure that out.
- Coupla small memory leaks in target drop
- Need to go through all events to make sure we don't allocate memory for cookie info
passed to overlays
- Out 9:00 - Hockey
26/OCT/2k
- In 1:30
- Leftover "high score" in landings
- Displaying "First flights" in Advanced flights
How odd. I never grabbed the first/advanced flights flag from the mission class
- Electric engines don't respond to Start engine command, so our events wouldn't let them
past that part of the event startup sequence
- Oops, the old code used CEngine as the base of everything. Michael added a CEngineBase
that CEngine was derived from. But, all the new engine classes were derived from classes
that were also derived from CEngineBase. Yet, our legacy code was casting to CEngine * in
the accessor routine and everyone calling the accessor was using CEngine *. So we
were talking to all those instances through the wrong branch of the hierarchy tree. The
reason it has been working at all is the interfaces to CEngine and CShaftEngine (what
everything else is currently derived from) were identical. So everything happened to line
up.
- Hmm, now it's the other way. In preflight I want the engine off early on. Need to
wrap that up, apparently
- Looking at servos playing all the time
Turns out it's due to the jitter filtering we're doing. We're currently updating the
sounds in the control handler, where we set a target for the servos to move to. I think we
need to move that to the DoFrame of the foil itself. We'll see what Michael says in the
morning
- Disable rename and delete for built-in engines
- Display airfoil preview when changing wing (wing, elevator, rudder)
- Added wait cursor when changing wings
- Out 1:45 - Two hours
25/OCT/2k
- In 12:45
- If lower limbo at 0, don't create lower tape
- Pause after respawn in takeoff training so they can read the winds
- Initialized variable so you don't get "Penalty" display on entry to Pylon
- Removed "Practice touch and goes" checkbox in landing training
- Worked on new countdown beep
- Kill too low alarm at end of race in pylon
- Layout pass on Options|Controls
- Duplicate Enable Clouds in weather pane of Free Fly
- Oh my lack-of-god! The country western noise polution outside is significantly worse
than usual! I didn't think that was possible
- After each spawn in training, have user reset throttle
- Out 1:00 - one hour
24/OCT/2k
- In 12:00
- Finish CRadio
Man, that was a battle
- In random advanced flights, make sure starting location is randomized, too
- Trying to make Ripmax driver detection more robust
Specifically, if the driver is installed but the Tx isn't connected
- If we don't detect the Ripmax driver then don't let them uncheck Use DX
- Added texture detail slider and hooked it up in game engine
- Added score display to limbo
- Changed takeoff to a single target with different winds
- Put winds on status line
- Treat winds as stages
- Out 2:30 - Two hours
23/OCT/2k
- In 12:00
- Bitched and moaned about a coupla bugs that Chad kicked back to me
Above no-fly zone
Limbo tape on ground
- Bug list meeting
- Fixed random not random enough in advanced flights
- Show "Stage 1/5" in First flights/Advanced flights
- Remove high score from taxi
- Change score message in taxi and precision flight to congrats you finished
- Don't let num laps go below 0 in precision flight
- Changed default channel assignments of 5-8 in Ripmax driver to Ignore
- Need to put jitter-handling into Ripmax handler
- Tracking down why scrolling info sometimes drops strings
- Ah, has to do with reversing the order of display and not taking into account the
scrollback buffer
- Out 8:15 Hockey
22/OCT/2k
- In 2:00
- Display a message when touching ground in training sessions where we shouldn't
I put in a 1/4 sec alarm. If the plane is damaged in that time I count it as a broken
plane. Otherwise, a ground touch
- Found an MFU that I introduce with the latest preflight change
Had an extra test for DoCheckout I didn't need. With it in there I was bypassing the work
I needed to do after they successfully completed the checkout
Added analog input path for engine, guns, cannons, and bombs
- If high enough (200 ft) don't complain to user about flying over no-fly zone
- Got doppler working right in chase views
- Use correct preview image from skins directory in training drop-down
- Some of the combo boxes got changed to parmNumItemsVisible 10. Changed to 5
- Remove unlimited battery and allow failures from free fly options screen
- Touch up glide score messages
- Limit limbo to one foot vertical seperation and five foot horizontal
- Found a situation where changes to event options weren't getting saved
Basically, if you used the X in the corner to leave the program while in event screen
- Out 12:00 minus one hour
21/OCT/2k
- In 2:00
- Implementing a fixed behind the plane view for first flights
- Going down the list of bugs
- Fixed both arrows showing if going backwards
I had assumed that I was testing against a centerline in the corridor. It turns out I was
testing the angle from a point on the centerline to the end of the corridor and the plane.
I was trying to figure direction from that. I guess I was passing through 90 degrees or
something and not handling a border condition correctly. That made it look like I was
going from one side of the centerline to the other without passing through the middle.
- In First flights, count behind the plane as stage one and bump all the rest by one
- Don't change view until after respawn
- Copy over points needed console var to first flights to speed testing
- Changed limit to test against for overcontrol
- Fixed (again) preflight not showing up in training if turned off in events
Doh! virtual functions aren't called from a constructor. I know that. Tried to do it
anyway
- Engine on and start in air should only be allowed in free fly
- Show bloom on bonus touch in T&G
- Add any key message in T&G
- Give some instructions with Go message in T&G
- Oops, need to check for plane broken even if not touching ground
Silly me. When I wrote this I wasn't thinking about someone flying into buildings, etc
- Out 10:15 - Lazy for two hours
20/OCT/2k
- In 1:30
- Hmm, 15 hours yesterday. I think I'm only good for 10-12, today
- I changed ProductSettings.h to get datalogging in the release build, which rebuilds the
entire world. But then built the debug version overnight. Oops. Oh, well. I would have
built it, anyway, at some point.
- Looks like we're shifting the pitch based on the raw value instead of the running
average. That causes it to warble pretty bad. Let's see if using the running average helps
That sounds a little better. We still don't have a really good sample. It seems fairly
close, but not quite right
Duh! Similar to the engine sound, we should change the volume of the servo sound. Also,
the sample we have doesn't have the quiet rattle of a slow-moving servo. I'll bet we can
mix two samples with different volume ramps to get that effect. Hopefully, I can steal a
half a day in the next week to try all that
- I've been stealing a few minutes here and there to fly the sim. Man, this thing is fun
- Decoupling flip-off from ailerons. Handling it all within CEventAI
- Implemented flip-off to start countdown
- Once we get a positive flip-off, disable it. This keeps us from skipping past later
tests
- Out 11:00
19/OCT/2k
- In 1:00
- Testing out doppler in release
Sounds good. Chad has some bugs on it
All sounds, including event info sounds, are dopplered
Turns out it was a bogus default. Had a 1 where we wanted a 0
- Working on servo sounds
Have to rebuild the world in release mode. Debug is too slow to test this
Michael's console vars come through again. Makes it really easy to try different values to
figure out what works best
- Out 4:15 - Distracted for one hour
18/OCT/2k
- In 12:00
- Oops, a coupla IsDisqualifications tests in training
- Make sure preflight comes up in training even if turned off in events
- Another try to prohibit bombs before start of target drop
- Split out QuittingOrRestarting so we don't clear keyboard buffer
- Finished flip off consistency
- Starting on doppler
- Spent about four compile-the-worlds (at least an hour) battling const-ness.
Gave up and un-const'ed the offending variable
- Michael had some old doppler code in there. In one pathway it was missing the call to
actually send the value down to the low-level sound system. Put that in there and it looks
like it might be working
- Out 8:15 - Hockey
17/OCT/2k
- In 12:15
- Finishing up controller GUI
- Reset controller combo like events combo
- Figure out when to disable which controls
- Hmm, should I leave channels 5-8 enabled?
- Trying to churn through some bugs
- Compare bomb drop height to altitude, not height agl
- Don't allow user to drop a bomb prior to beginning of event
- When breaking limbo tape make sure they're disqualified
- Change Glide messages when computer controls engine
- Kill Go message in glide after 3 secs
- Display times in welcome messages as x:xx instead of x seconds or x:x
- Changed pause on disqualification to .75 sec
- Always check for plane broken and no-fly zone in training
- Detect broken plane in pylon
- Don't display "high scores" in first flights
- Put "" around "Enter" and "Esc" in instructions
- Enable bloom in precision flight
- Look for flip off in all welcome messages
- Flip off in Taxi start
- Out 12:45 - Minus one hour
16/OCT/2k
- In 12:30
- Don't try to put commands in queue. Just translate to appropriate axis
How to name them?
No, need to do both, sort of. We need to make sure the low-level axis we're sending
matches the mapping the command system is looking for. So, I'm going to search the command
map for the appropriate ID and save off what axis is assigned to it. The user is going to
tell me what command he wants assigned to a Ripmax axis. I'll use that in a lookup table.
The table tells me how to convert from a Ripmax axis to an RC Sim axis.
- Implemented a GetInputID similar to GetKeyName
- Fought compilier slow-down
It was taking five minutes or more to finish loading the workspace. Had to delete
all the compiler temp files. *.plg *.aps *.opt *.ncb
- Recompiled due to _TRACE changes
- Got control reassignment finished
- Working on gang-loading assignments based on controller
- Loading controller names from file
- Out 12:30 - Very little wasted time
15/OCT/2k
In 2:15
- Start calibrating
Looks good
- Going over command mappings
Out 12:30 - 2 hours frittered away
14/OCT/2k
- In 1:30 - Didn't fall asleep until 6:00 last night/this morning
- Started "Big Jar of
Ketchups" in tribute to Looking Glass. It's more of a "Small Plastic Cup of Ketchups" so far
- Damn, I just realized it's the 14th
- The calibration dialog is going to take a coupla layout passes, so added it to layout
file. That meant I had to move all of the Load routines from CGUIScreen to CGUILayout.
That took pretty much the entire day
- Got calibration dialog displaying input from Tx
- Out 1:45 - goofed off three hours
13/OCT/2k
- In 11:30
- Do we want separate calibrate buttons for each channel? Or a dialog that has a
"Next" button in it.
Going with the Next button to start
- I really don't like how the Ripmax stuff woven its way into the input system
I need to work on learning to think in either a plug-in architecture, or a messaging
architecture. There must be some way to make it more generic
- Got CalibrateBox stubbed in
- Adding more controls, trying to fit them in
- Out 10:00 - Hockey
12/OCT/2k
- Read GUIDs from file
- Man, working with property lists is a pain, sometimes
- Implemented checkbox to use Ripmax or DX for joystick input
- Reinit the input system when switching
- Man, just wasted over an hour. The DX driver wasn't reporting the position of a few of
the axes. Turns out the driver doesn't assign all the channels by default. Just the first
two. Since I happened to be using a Futaba I just assumed they were all one-for-one by
default
- Fixed DX throttle to do -1 to 1
- Sheesh, now, having reinstalled DX7a, the direct Ripmax calls didn't want to work. Had
to uninstall and reinstall the driver, again, several times. We may have found the magic
incantation. When uninstalling
Make sure that it has been removed from the Game Controllers Control Panel apple
Verify that all the registry entries are gone
Verify that the DLL and VXD are gone
Then, you can reinstall
If any of those are left over it appears that it gets confused in the next install.
- Changing look of sliders
- Disable all controls when going through DX
- Make sure changes to reverse checkbox gets back down to Ripmax
- Out 1:00
11/OCT/2k
- In 11:30
- Apparently Michael was here all night
- Oops, I broke the build last night
- All my stuff compiles, but I'm not actually adding commands to the queue with the Ripmax
stuff, yet. I had been working on the GUI just before I left and I was thinking,
"This is good enough to check in." But the back end simply wasn't finished. Doh!
- Expanding the options box to make room for everything we need
- Read max joystick value from INI
- Change all analog inputs to go from -1 to 1
- Out 8:00 - Hockey
10/OCT/2k
- In 11:30
- Lunch at Poor Richard's
- If they ever change the driver GUID we need to be able to handle that
- Miraculously found code in the MSDN to convert from ASCII to GUID
- Map Ripmax channels to axes we expect
- Add more accessors to get Ripmax info to and from the GUI
- Hooking up to GUI to test
- Got the GUI to move sliders
- Going to sleep on exactly how I want to implement calibration. With so many axes, it's
not as easy as the old PC joystick "move it to the corners" routines were
- Out 1:00 - 1:30 wasted
09/OCT/2k
- In 9:30
- Trying to read values from ripmax driver
Getting bogus values
Finally got it to work, apparently by cleaning out the registry
- Our CAP232 got damaged without even leaving the ground
Joel dropped a ladder on it. Only minor cosmetic damage
- Don't really want to detect Ripmax driver by name string, so spelunking to figure out
how to define a GUID
- Out 8:00 - Softball
07/OCT/2k
- At home 11:00
- Couldn't get sim to install
- Turns out I had lost the directory structure when unzipping. Dunno how.
I've had that option turned on forever
- Got it to compile at home
- With the missing/misplaced assets, I couldn't get the sim to run. Or rather, it sort of
runs
- All of that took hours. I gave up for the day.
- 5:00
06/OCT/2k
- In 11:45
- The back of my throat is a little scratchy and my sinuses are beginning to ache. Damn, I
don't want a cold right now
- Testing GUI if we initialize the input system early
Seems to work
- Fixed FOV bug in control fam
- Clear string in list callback to track class if we don't have anything to say
- Laying out controller screen
- Out 8:00
05/OCT/2k
Sheesh, it's been a month since I posted any updates here. It was a combination
of crunch mode eating all my time and a coupla weeks of burnout where I didn't get
anything done worth mentioning. I'm finally back in gear and getting lots done.
We're pushing hard to get this thing finished.
And, I want to post this, but our cable modem is down, again. I haven't been able
to use it much, but from what my roommates say it's down for at least a few minutes every
day. It may be time to switch to DSL. I know a few people who have it, and I
haven't heard them complaining.
- In 11:30
- Some code got block-copied around that had preflight coming up every time
- Reviewing manual
- Saved pilot views
- Starting on controller screen
- Out 11:00 - 2 hours wasted
04/OCT/2k
- In 11:45
- Lunch with Ritual
- Finish taxi laps
- Make pause alarm consistent across training
- Precision flight laps
- Landing laps
- Remove state debug info in T&G
Hmm, looks like it should be defaulting to off. #ifdef'd it just to be sure
- Tidied up bug base
- Look at speed warnings on landing
For some odd reason that Michael and I can't fathom, Eric had the speed functions in the
aircraft truncating to ints.
- Out 10:30
03/OCT/2k
We won the softball game. Made it to hockey on time. Got humiliated 8-0.
That wasn't much fun.
- In 11:15
- Taxi track
- In free fly, don't nag them to turn on their engine if they don't have one
- Tidy up in-flight instructions
If not displaying one, put a \n there as a placeholder
- Added warning if too much throttle in taxi
- Taxi laps
- Out 11:00 - 2 hours wasted
02/OCT/2k
- In 10:30
- Revived Michael and Chad
- Started setting up Sony to run non-development utilities
Maybe my machine won't slow down as soon (Windows sucks)
- Implemented music track support, field/event, training session
The first song that played was "My Baby's In Love With Eddie Vedder" by Weird
Al. Very appropriate for Podunk, methinks
- Moved Start in air and Start with engine on to free fly pane
- Tidied up bug base a bit
- Changed warning buffer from fixed distance to percentage of corridor width
- Fixed garbage text in preflight
Missing () in an sprintf call sprintf(s, "%s", strClass.c_str());
- In preflight, handle plane with no ailerons
- In preflight, handle plane with no engine
- Out 7:00 - Softball at 8:30 and Hockey at 10:00. It's gonna be tight
01/OCT/2k
- In 12:00
- Auto-continue pref in checkout
- Added a little success sound in checkout
- Installed more ram
- Installed ramdisk software
- Found out the ice is melting at the rink we were going to practice at tonight
(compressor out)
- Changed preflight startup throttle to 40-60%
- Looked at servo sounds
Don't like any that we have right now. The ones that Jay has in there are better than any
of the new ones
- Buncha prefs work
- Changed Model Tx Range to Unlimited Tx Range
Turns out that since we're not using it all I had to do was change the text :-)
- Added auto continue to free fly options and settings
What's a good term in human language to use for that on the options screen?
- Changed pause timeout at the end of events to .3
- Out 10:30 - 1:30 goofed off
30/SEP/2k
- In 12:15
- Went over Michael's impressions of takeoff
- Dressing up control fam status line
- Implementing flip-off in takeoff
- Out 6:15 - Too cold here, going to work at home
- Flip off into takeoff
- Turn engine off when sim paused
29/SEP/2k
- In 11:15
- Schedule meeting
- Randomize starting direction a little
- Taxi from side of runway?
- Got multiple targets working
- Got wind change in
- Display winds at start of each stage
- Ready for testing
- Out 9:00
28/SEP/2k
- In 11:30 - Feeling better
- Added assert to catch when we go past the end of corridors
- Really felt bad after lunch
Worked through it and got most of the infrastructure in place.
- Just need a little work on getting the transition from one step to the next
- Out 8:00
27/SEP/2k
- In 11:00
- Got takeoff to run for more than a few seconds
- Was "placing" the corridor more than once, which bumped it ahead
Really ought to change that to work on a pointer parm
- Found MFU when alphabetizing a combo with different number of items in source list
- Sheesh, spent hours on an x,y swap mistake
- Placing target
- Working on detecting when we're past target
- Out 7:30 - Felt horrible all day
26/SEP/2k
- In 11:00
- Eavesdropped on Michael's briefing to Chad on changes to planes
- Added TrainingAllPlanes
Sort that list
- Adjust landing track
- Remove stats display from landing
- Starting on takeoff training
- Fixed free fly where it was clearing the text when it shouldn't have
- Out 11:00 - minus about 3 hours wasted
25/SEP/2k
- In 9:30
- Control fam finishing conditions
- Watching for overcontrol
- Meeting/video from London
- Added in support to deduct point if overcontrolling or wrong way
- Text on finish
- Out 9:15
21/SEP/2k
- Chad added an engine to the SS and it's working in the sim
- Still crashes in the workshop
Turns out it wasn't finding the plane icon for some reason. Tested for that
20/SEP/2k
- If user flies over no-fly zone in free fly, respawn plane
- Consolidate welcome and start engine messages in free fly
- Helped Chad find bugs in Solar Sailor
- There's an uninitialized airfoil of some kind
19/SEP/2k
- Getting text finished in control fam
- Turn off engines every frame
- I think I'll tear through the bug base for a bit
18/SEP/2k
- Finally getting something to test in control fam
- I'm really burned out. Took the weekend off. That seems to have helped, a little
8/SEP/2k
- Micheal went over build process so I can babysit it while he's gone
- Handle respawn in control fam
7/SEP/2k
- Pretty much have it working. Just need to handle the ending condition and put in the
instructions
6/SEP/2k
- When I proposed control fam I thought it would be easy. Just spin the plane. What could
be simpler? It turns out, it's a lot of work because I have to do everything.
- My first attempts at translation were funny. The planes translated right off the screen.
Oops.
Went to C league hockey tryouts at Ice-O-Plex. It didn't go well. I have no stamina. I
started running last week. Hopefully, it'll start making a difference in a month or two.
In addition, it was very disorganized. And Whip didn't put any effort into urging the team
reps to pick anyone.
5/SEP/2k
- Trying to work out how to get from one orientation to the next
- They're not all just spinning the plane
4/SEP/2k
- Sheesh, finally getting some real work done. I think I'm suffering some burn out
- Got control fam roughed in and nearly working
3/SEP/2k
2/SEP/2k
1/SEP/2k
- Started rotating planes
- Skip preflight in control fam
- Okay, the crash Chad was seeing yesterday wasn't too many labels. It was the
global property within GUILayout.ppf growing over 32k. Moving some comments outside
the parens fixed it, for now.
31/AUG/2k
- Starting to look at new view for control fam
- Removed hard-coded limits of labels, bmps and boxes in GUIScreen
30/AUG/2k
- Still slowly chipping away at control fam
29/AUG/2k
- Trying to get control fam finished and playable by today or tomorrow
28/AUG/2k
- Got on a roll and stayed home to work. Partly, because I had an early softball
game
27/AUG/2k
- Arrgh! The cold drove me away. I think it's in the mid- to low-60's in this
office
26/AUG/2k
- More taxiing
- Trying to stub in new control fam
25/AUG/2k
- Working on taxiing
- Asked for advice at RC Online
Of the people who answered, the consensus was never point the plane at a person nor the
pits if the engine is running
24/AUG/2k
- Reviewed design meeting with Michael
- Trying to stub in new training sessions for next week's test
23/AUG/2k
- Skimmed leakage report trying to spot what might be causing instability
- Fired off an email to Microquill asking if there's some way to keep statics from getting
listed as leaks
- Adding check to make sure they don't turn on engine if they need preflight in free fly
- Only do preflight once per run
- Design meeting on precision flight and taxiing
Chad came up with some changes to taxi that make it much more useful
- Pause at end of event
22/AUG/2k
- All of the bugs over the last few days:
- Display icon in taskbar if we go out of full-screen mode
- Play TNGGo.wav at the appropriate spot
- TNG countdow timer stopped at 0:01
- Display TNG score at end
- Removed waypoint dings
- Pause sim if event over, either successful or disqualified
- In free fly, watch for no-fly zone and broken plane
- Helped Jay with a couple of brick walls
If the sim freezes and the debugger says you're waiting for an object, reboot
A static string was getting corrupted. Turns out he had a pointer into the string
table.
21/AUG/2k
- Feeling a little better. Didn't document which bugs I fixed today
20/AUG/2k
- Another unproductive day. Fixed a few bugs
19/AUG/2k
- Got in late. Didn't get much done
18/AUG/2k
- Looked at checklistbox and decided to leave the tip text the way it is
- Fixed preflight MFU
If you failed you got stuck in "your engine should be running"
- Oops, make sure warmup time is 5 sec
17/AUG/2k
- Finishing a/c at home
- Design meeting about implmenting throw modifier
Decided to go halfway. What we should do is keep a proplist. What we are doing
is matching everything else that deals with the mission class. We're parsing it when
we read the mission in and querying when we need it
- Tested allowing wind to vary for every part
Works better than I expected. I thought it would throw the plane around too much
- Making sure defaults are correct in advanced flights
- Fixed duplicate string in string table
- Cleaning up extraneous \t's in Fox tooltips and adding \n support
16/AUG/2k
- A/C started this morning
Before I had left the house they apparently dropped something on one of the vents and
punched it through the ceiling. Nothing major. I think once it's patched and
painted you won't even know it happened.
- More design review on first flights
Decided to add advanced flights, which is basically the same thing as first flights. First
flights will have everything locked to simplest and advanced flights will provide the GUI
controls to tweak it a little
- Implementing advanced flight
- Moved spinner increments to guilayout
15/AUG/2k
- Man, what did I do, yesterday? I can't remember
- Finishing adding back end support for new GUI options in first flights
- Chad and I spent quite a while trying to simplify first flights GUI
14/AUG/2k
- Tweaking first flights GUI
- ifdefed out testing of first flights finish conditions
13/AUG/2k
12/AUG/2k
- Came in, but spent most of my time dealing with the a/c
11/AUG/2k
- In late (well, a little later than usual.) Get to buy this year's a/c. Joy.
- Changing name of class/cpp to match new name, first flights (was control fam)
- Changing GUI to first flights
Adding in all the combos we talked about day before yesterday
Not implimented in sim, yet
- Add sound when scoring in Limbo
- Since we're clearing the callback when killing the bar, we need to make sure to set the
callback when creating the bar. We were setting the callback in the constructor
10/AUG/2k
- Fix success test in control fam
Don't simply look for warnings. We turn those on before you're actually failing
- Changed default width to match guide ring
- Don't let max and min in limbo cross each other
- Change weather screen to show winds as 17G25 instead of 17+8
Sheesh. That turned out to be remarkably painful. Ripped it all back out
because it makes the random controls too difficult to describe, since they would behave
differently
- Fixed a bug where we were saving the wrong min random wind speed
- If they fail preflight, make sure engine is off
- Make sure they don't start engine too soon, or turn off engine after it's started
9/AUG/2k
- Yikes! It's the ninth, already?
- Upgrade Multi-Edit and see if that fixes read-only bug
- Rotate target ring fix
- Implment Limbo GUI and hook it up
- Design meeting on new control familiarization
- Bug parsing Limbo section of GUILayout
Doh! Pilot error. I had another leftover proplist of the same name
Search terms: Proplist comes back empty in GUILayout
- Limbo feature complete
8/AUG/2k
- Design meeting on training additions/changes
- Place limbo objects
- Initial testing
It's a tough event
7/AUG/2k
- If the IDE can't find projects in SourceSafe, close the IDE and search for and delete
*.ncb *.plg *.opt *.aps
- Implemented CLimboTape
- Implemented base class CDamageFreeObject
- Roughed in most of Limbo logic
6/AUG/2k
- Trying to fight distractions and do some Limbo
5/AUG/2k
- Beta testers
Well, parts of that were a slap in the face. Some we things we knew about.
Still have some work to do on training. We got some pretty good feedback. I
was mostly paying attention to the newbies. Michael said he got some good feedback
from the experienced flyers, too.
4/AUG/2k
- Sheesh, where did the time go?
- Working on stats output to text file
- Trying to get some Limbo done
- Answered a few Fox questions for Jay
He got the time spinner done by the end of the day
- Seems like I did more, but I can't think of it right now
3/AUG/2k
- Adding display and detection of bombs left
- Don't let them drop bombs after event is over
- Detect bomb hit in no-fly zone
Had to rearrange tests in BombDying to handle this
- Helped point Jay at making a CGUITimeSpinner
- Started looking at writing training stats out to a text file
- Started looking at Limbo Bar
- Went flying
Our first outing with the "company plane." A Hobbico Avistar Trainer.
This plane is much more responsive than the club trainer was. It can easily
finish an aileron roll before losing much pitch. And I didn't realize just how much
difference dihedral makes when yawing a plane. The wing on this plane is nearly
flat, and rudder input causes very little roll. And the turning behavior is much
closer to the sim than I had thought, before. It yaws several degrees and then
sticks there. I didn't take time to try a flat turn, though. Next time.
The wind was much more mild than last time. Probably under 10 mph. Only
Michael and I flew. Chad didn't want to.
It was a very busy night at the field. At the end I heard the guy coordinating
everything telling John that they'd had 44 flights by 18 students. There were almost
always four planes in the sky.
Our first instructor, Bob, was very conservative. When I took the controls he got
upset when I started yanking the plane around. Apparently, I was too confident on
the controls. He wanted nice, smooth turns. So I just flew around the pattern
and tried to keep him happy. Near the end he had me doing some low-speed passes over
the runway.
Our second instructor, Alan, was much more confident that he could get me out of
trouble if necessary. I did some figure-8s with him on my second flight. Then
on my third I asked about possibly shooting some landings.
He had me flying low and slow over the runway. Again, with the crowded sky, I let
the plane climb a few times to clear traffic that was taking off or landing. Then
one time, I'm about 20 or 30 feet off the deck, a little on the far side of the runway and
he tells me to cut the throttle. I guess he was going to have me land.
Anyway, I had messed with the throttle trim before taking off. With the club
trainer, with the throttle trim all the way up, cutting throttle left the engine running
too fast. It turned out our engine was running a bit slow. So with the trim in
the center, when I cut the throttle, the engine quit. So I was landing whether I
wanted to or not.
That didn't bother me too much. I felt I was in control. I kept the nose
level or down and tried to let the plane settle onto the runway. As it was losing
altitude I pulled back and didn't see a response. So I hauled back all the way and
it still banged down pretty hard and bounced. I let it climb and tried to keep my
airspeed up. Once again, it went in nose down and full elevator didn't level it out
in time. On the second hit the front wheel popped off. The plane stayed
upright as it slid to a stop.
Alan said that he didn't think I had hit hard enough that it should have taken the
wheel off. Possibly the collar that holds it on was a little loose. Nobody
checked it, specifically.
So, while my first landing wasn't as good as it could have been, but it wasn't a
complete disaster. It's too bad the plane wasn't still flyable. Even if we had
collars, it was dark enough that there wasn't time to fix it and try again.
Here's a picture:

2/AUG/2k
- Implementing two-level altitude warning in target drop
- Oops, Michael NULLed out a field that had just been filled
- Design meeting on Elliot's proposed changes
- Moved frequency check to front of checklist
- SetupBloom needs to be called in State_Start, so it catches all respawns
Added some asserts to try and catch that quicker, next time
- Figured out why the bloom wasn't always showing the right color
Turns out I was only setting the color for one LOD. The new bloom has multiple LODs
and the others were staying at whatever they were last set to
- Wrote up bug when re-enabling inertia and there's wind
- Adding "reload" delay to COrdnance
- Implemented setting number of bombs based on GUI input
1/AUG/2k
- Finish hooking up GUI
- Go! instructions were too large in target drop
- Wasted an hour or two on pilot error
In our control creation code I needed to pass in the parent window and the target of
messages. I left out a parm so the control was being created on the wrong parent
window.
31/JUL/2k
- Adding in too low warning display
Text and bloom
- Fixed scoring
Indexus offbyoneus Dividing by NumMarkers instead of NumMarkers-1
- Display actual player score
- Make min altitude a console variable
Put it in GUI?
- Hook up GUI options for bomb drop
30/JUL/2k
- Un-cheating files from SS
- Implemented clearItems in GUIComboBox to kill icons
Jeron convinced me that it's not a bug that FXList doesn't kill those icons
- Don't consider a dropped bomb to be a piece missing from the plane
- Stop scoring after time limit/disqualification
- Put in bomb too low test
Do we want to play a sound?
Do we want to put up a 0 point marker?
29/JUL/2k
Took Michael up on his offer to take the day off
28/JUL/2k
- Manual review
- Changed TNG angle limits to 5-30
- Changed TNG extra touch value to 5 pts
- Will I actually get some target drop done today?
Looks like I have it roughed in pretty good
My fourth bomb, dropped from the station view, was a bulls-eye! :-)
Do we want different sounds based on points awarded for each hit?
Non-work, trying to get hockey firmed up for next season
27/JUL/2k
- Yikes, SourceSafe went down again
Cheating files until it's back up
- Tracking down memory leak in combo box bitmaps
- Sheesh, it took all day. Turns out it's probably a bug in Fox. The list part
of the combobox knows about icons, and has a pointer to one, but doesn't delete it in the
destructor of the list item. I was deleting them manually in the destructor of our
GUIComboBox. But Michael needed to re-fill the list and was calling
clearItems(). That was deleting all of the list items, but leaking their icons.
- Once again, finally back on target drop
26/JUL/2k
Hmm, it's been awhile since I've posted to my web site. Time to rectify that
- Brought in silly nerf guns
- Finishing takeoff startup
Added pause for "ready to start" to match others
- In takeoff, restart engine on respawn
- Added disqualification if you take off in taxi training
- Copied off current takeoff to make it taxiing
- Quit or restart in precision flight
- Ring placement on respawn in landing
- Doubled height to test against in IsTouchingGround
Taxiing was giving a bogus takeoff disqualification
Also might catch some planes that have tipped onto their nose in Glide
- Tracking down track segment left by construction workers in the middle of the field
- Added console variable for preflight warmup time
- Finally back on target drop
25/JUL/2k
- Takeoff and target drop design meeting
- Started on bomb drop
- Pulled off to clean out a few more MFUs for the build that Elliot will have for tomorrow
- Incorporated Chad's text size defaults
- Now that we're showing the user the values we're looking at, make sure the test value
for throttle position matches the text
- Adjusted all events to include slack in the value we're looking for
- Changed T&G startup to match other events
- Working on Takeoff startup
24/JUL/2k
- It was kind of nice this weekend, plowing through a bunch of bugs in such a short
time. It really feels like I was being productive
- Weekly meeting
- When control fam had a disqualification, it had an extra any key prompt that wasn't
needed
- Put a title in all states of preflight
- Show control percentages in preflight
- Color change in preflight to inform user that the computer thinks they've met the
criteria
- Bugbase tidying
- Added \n parsing in CRadio
23/JUL/2k
- Hmm, just occured to me that this is 14 days straight
- Finishing up free fly startup
- Added a start message that goes away after a few seconds
- Preflight shouldn't use standard large info text routines. The text runs off the
bottom of the screen
- Fixed control fam thinking pass was successful even if we missed the ring
Was only checking normal warnings, not way off warnings
- Ran off the end of an array, which was turning on both arrows. What the Latin name
for that?? Limitium ignoramus?
- Added a welcome message to all training sessions
- Went through all events and training to make sure they can't turn the engine on during
welcome wait
- In precision flight, fixed incorrect ring position after checkout
- Looked for but couldn't find stray track segment
- Removed stray "locator" dot in taxi
- Removed "high score" from everywhere
- Updated all quit or restart messages
- Added starting countdown in center of screen to glide
- Added glide climb almost finished countdown display
22/JUL/2k
- Found a fix for the "ident.cab" error message
It turns out, ident.cab is some sort of security file. It's a signed file that holds
a text file used to verify one or more drivers that either run the Windows Update
procedure, or are brought down by Windows Update. Anyway, it turns out the routine
that uses that file can't handle the situation where you change your default "Program
Files" directory to the root of a drive, ex. C:\ IOW, it can't handle the
trailing backslash. http://support.microsoft.com/support/kb/articles/q245/1/21.asp?FR=1
- Leave pylon "Go!" message up until they get above 15 feet
- Added pylon pass ack and lap complete ack to scrolling area
- Added pylon penalty flag to list
- Added radio/scrolling info text size and delay time console variables
- Can't get through throttle servo check in preflight
This looks like it should have never worked
- Crash MFU when preflight selected for free flight
Neglected to copy new startup sequence to free fly
21/JUL/2k
- Kill balloon callback needs to be aware of respawn and quit states
- Change the random placement so they don't overlap
- Lots of consolidating of list and info display routines
This gives Chad a few console variables that he can use to tweak the look
- Fixed a bug in Pylon where a bogus timer would start counting in the corner
It was an extra respawn. Basically, a Copyus pastus brought over from
training. We don't need to respawn in the events
- All events should actually wait for a keystroke when in WelcomeWait state
- Adding 3..2..1 to pylon
20/JUL/2k
- Found one more place to check for DamageFree
- Went back to Chad sizing balloons
sm doesn't know how to collide with scaled objects
- Implementing balloon callback for scoring
- Main balloon pop event, scoring, finish conditions
19/JUL/2k
- If a property isn't showing up in the GUILayout, make sure you copied GUILayout to the
directory the ini is pointed to
- Tracked down crash bug in control fam
Turns out it's an MFU in how I delete scrolling info messages, aka radio messages.
This is a bug that probably exists in SDOE. After 120 radio messages we'll
crash. The error was getting the final deque iterator by using end() and trying to
deref it. Oops.
- First test of balloon collisions
Turns out our collision response and collision damage are tightly coupled. And we
simply don't have a mechanism for an object that does no damage, but wants to know about
collisions. Michael and I came up with a system that looks like it'll be generic
enough to handle everything in the future. And it moves the tagging out to the data,
instead of hard-coding the relationships in code.
- Balloon pop event logic
Instantiate balloons
balloonsize0-3, 30, 20, 10, 5
balloonpoints0-3, 1, 5, 10, 20
18/JUL/2k
- Went over bugbase
- Spent most of the day implementing final throttle placement
- Back on balloon pop
Got GUI and mission nearly hooked up
17/JUL/2k
- Start working on balloon pop
- Oops, found some old logic for checkout in existing events
16/JUL/2k
- More preflight tidying
- Helped assemble trainer
- Finishing rest of overlays
15/JUL/2k
- Finishing converting other overlays to new text system
14/JUL/2k
- Implementing color/size in preflight
13/JUL/2k
- Preflight/training/events design review
- Implementing new text overlay system in preflight/list overlay
- Arrgh, bug in direction and vert winds
12/JUL/2k
- Working on wind direction and adding a vertical component
11/JUL/2k
- Working on wind. Have some ideas
Multiple sine waves with some noise thrown in. It looks reasonable.
Right now, the noise dominates the gusts. One way to give the user control over the
variability/turbulence is to adjust the balance between the sine waves and the noise
10/JUL/2k
- In control fam, fix tests to see when it's time to change starting positions
- In control fam, only show cumulative stats when changing starting positions
- Clean up stray dots
- Brought bug base up to date
- In precision flight, fixed bug if preflight not completed
- Added tap any key instructions to every prompt in preflight
- Looking at wind
7/JUL/2k
- Finishing checklist on side of screen
- Touched up SDOE network doc and posted it on Lynx
- Fixed crash bug in taxiing
Copyus pastus. Didn't instantiate preflight object
6/JUL/2k
- Loosened control throw test to 50%
- Consolidate several of the preflight items
5/JUL/2k
- Added random checkbox to control fam options and hooked it up
- Watch for keyhit when turning engine on in preflight
- Started moving preflight checklist to list
4/JUL/2k
- Went to a friend's for Independance Day celebrations. Used my Olympus 2020 digital
camera to take pix of the fireworks.
3/JUL/2k
- Hook up training options through mission file
- Hide option frames after create
1/JUL/2k
- Helping Ron put the office back together after he decided to "clean" it
- Only look at flip-off when we're paused
- Adding options panes to training UI
30/JUN/2k
- Manual review
- Put preflight and flip-off into landing
- Put pause in all disqualifications
- Moved pause alarm to CEventAI
- Make sure checkout is in all training
29/JUN/2k
- Copying preflight, flip-off and stats displays to other training sessions
Got it into precision flight
Display stats on each lap and total stats at end
- Fixed a bug where TNG scoring rect didn't match visible landing area
- Added user-adjustable angle to test TNG alignment against
28/JUN/2k
- Finished placeholders for stage, track, and gold stars
- Re-initing running averages so we don't complain about control thrashing on first frame
- Implementing flip-off
- Handling respawn during preflight
27/JUN/2k
- Revisited preflight checkout. Turn off inertia while doing checkout. Respawn
at the end of the checkout
Still need to catch respawns during checkout
Need to figure out where to tell them to set throttle at the end
- Working on displaying "status line" telling the user where he stands
26/JUN/2k
- Got stats working and displaying in an ugly way
23/JUN/2k
- Authorized on wind database ftp
This is pretty much what I need. It would be better if I had equations built for me,
but this will do
- Implement pause
- Moving stuff around to get pause in the right place for startup and respawn
22/JUN/2k
21/JUN/2k
- Tweaking taxiing
- Revisit control familiarization to implement yesterday's ideas
20/JUN/2k
- Training design meeting
- Trying to finish taxiing
19/JUN/2k
- Using new GroundTarget
- Chad came up with a new idea on how to make taxiing more interesting
17/JUN/2k
16/JUN/2k
- Sent off a few more emails looking for wind info
Everything I've seen so far is trying to characterize the wind over a wide area. I
need to characterize it at one spot
- Centered T&G target on runway
- Taxiing
15/JUN/2k
- Started on Take-offs
- Taxiing
14/JUN/2k
- Try disabling bloom in training
That's fine, except for speed warning
Chad and I discussed maybe using a different object for events vs training
Made it a console variable
- Took a break and worked on winds
Put my constants in the INI and also added console hooks
Added direction variation
Okay, so it took more than a few minutes
Still need global wind shift and some sort of modeling to adjust the variability
- Added trace option to CDataLogger
- Added a generic data variable called trace to turn all trace msgs on and off at runtime
Well, that didn't work. Turns out our generic data gets read after the first trace,
which confuses the data class. Oh, well. We can live without it for now
13/JUN/2k
- Apparently I earned my share of reinstallation points here at work
- Review manual
- Speed check
12/JUN/2k
- Rotate track
- Adding speed check
10/JUN/2k
9/JUN/2k
- Figured out I can simplify the track placement on descent, because it's always aligned
with the runway. Duh!
- Getting ring to descend. Haven't started rotating track segments, yet
8/JUN/2k
- The track code I wrote for the other training sessions really helped, here.
- Fought a scaling bug. Turns out it was a flathead error, as usual. Our scale
automagically scales the texture. I had cribbed some code from another section and
included the texture scaling that was needed over there. So, basically I was
"unscaling" the texture.
- Starting halfway around the track
- Giving thought to how I want to illustrate the descent to the actual T&G
7/JUN/2k
6/JUN/2k
- Revisit target and track rotation on different startup positions
5/JUN/2k
- Finishing ring in control familiarization
- Spawn plane in correct place on startup
3/JUN/2k
- Finishing track layout class
- Getting guide ring and arrows to work in control familiarization
- CDs:
- Heavy Metal soundtrack
- Stars game
2/JUN/2k
- We have at least four training areas that have tracks, so I'm building an intermediate
class to handle that behavior
- CDs:
- Yes Drama
- Nightmare Before Christmas soundtrack
1/JUN/2k
How about id? Wow
- Got track to lay out. Worked on rotation, today
- Today's CDs:
- Collective Soul Hints, Allegations & Things Left Unsaid
- Alan Parsons Try Anything Once
- Pat Benatar Precious Time
- Stars game
31/MAY/2k
- Trying to lay out the track in Control Familiarization
- Today's CDs:
- Weird Al in 3-D
- Elton John Goodbye Yellow Brick Road
- Rush Debut album
- The Who Odds and Sods
- Rush Fly by Night
30/MAY/2k
- Started working on target placement
- Pulled off to look at putting in AI assistance. Basically, have the AI act
like an instructor on a buddy box and fly the plane to the next training location
Michael hacked in a test and determined that it's about four days work
- Using Chad's new target art
27/MAY/2k
- A different Curtis and Dennis came in to look at the sim. We put them together on
the same machine and let them explore. Two big things come up.
One, the planes weren't gliding like they expected. Michael is working on the
airfoils and that should fall out naturally when he's finished with that.
Two, they weren't really bit by depth perception, but they did have a problem with
resolution. I think they were running 800x600 on a 21" monitor. We've
come up with a couple of changes that we think might address that. This is as a
variation or replacement of our inset view.
26/MAY/2k
- Wasted an hour on the VCR. We didn't have the right remote
- Putting in support to respawn plane in different locations
- How to make sure targets are reasonable for a given starting location
25/MAY/2k
- Didn't get any coding done
- Installed servos in Alpha 180
- We got our first chance to fly real r/c planes
John Reed, an instructor at the North Dallas R/C club,
offered to meet us out at their field. I think he intended to hand us off to another
instructor, but apparently not as many showed up as he expected. So he ended up
taking us up one at a time. We had brought our Alpha 180 glider, but there was way
too much wind. Also, apparently the battery only lasts a few minutes. So he
let us fly the club trainer. A Tower Trainer.
What we learned was, the program works. By using the actual controllers on our
PC, along with being diligent about flying from the pilot station view, we found we were
very comfortable flying the plane. All of us were careful because we were flying
someone else' plane. But we had absolutely zero trouble with control reversal.
The real plane behaved very similar to the trainer in the sim. John only had
to take over from me one time, and I probably could have recovered that one myself, but
John was being prudent.
One difference in the plane itself is that our sim plane defaults to full throw on the
controls. The real trainer was set up very conservatively and responded pretty
slowly.
Also, our planes don't roll enough on rudder input. The real plane rolled pretty
sharply.
Finally, our wind is far too tame. I put gusts in there, but they're too far
apart and they don't ramp up quickly enough. Also, we don't have any turbulence.
And finally our wind doesn't change direction. So even with wind in our sim,
the planes fly too smoothly. We found the real plane was constantly being upset one
way or another by the wind. Not so much that we had trouble, but we were constantly
having to adjust for it. We should be able to have the sim doing that when I need a
few minute break from my current task.
Like Michael said, John told us that if hadn't been for the wind he expected that he
could have had us landing by the third flight.
Every time I suggested a maneuver John's response was along the lines of, "Oh,
boy." as if he thought I was being too ambitious. For example, when I did an
aileron roll the limited throw on the controls made it roll very slowly. I pitched
up a little before starting and automatically tapped forward elevator halfway around.
I'm pretty sure he was expecting to have to take control before the plane was
pointed straight at the ground.
Overall, lotsa fun. I think I'm catching the bug. I sure wish I had some
free time. On our way to the field we stopped at an R/C shop to get a couple of
final pieces for our Alpha 180. They had an indoor untethered electric helicopter
that caught my eye. :-)
24/MAY/2k
- Very disorganized day
- Unpowered training
- Michael bought a controller kit for our Alpha 180
- Filled out AMA forms
- Curtis Erwin, a local r/c flyer, came in and gave us his feedback
Overall, he appeared to like it
Several times he'd kick the controls and watch the plane's reaction and say, "Yup,
that's about what it does."
Many of the problems he pointed out were already known, like too little drag
He did have several useful tidbits. For example, most flyers have the nose/tail
wheels coupled to the rudder for ground handling
23/MAY/2k
- Unpowered training
- Pulled off to work on powered training direction sounds
Michael recorded some "turn left" type sounds. They work pretty well,
except that my delay is based on the last sound played. I keep track of which way
they're banked, to differentiate between "turn left" and "keep turning
left." The problem is that as the user goes from level to banked I see that as
a different state and so you get one sound immediately after the other. I need to
keep track of the "I told you left last time" state and base my delay on that.
Also, I need to look ahead of the plane more and try to catch whether and where they're
going to intercept the course. Right now, I'm giving bad advice on how to get back
on course. If the user is too far inside the course, I'm telling the user to turn
out for too long and he ends up intercepting at a very tight angle and overshoot badly.
- Fixed bug where we weren't remembering plane in training screen
22/MAY/2k
- I hate chasing the wrong bug. My cut testing in the 2-pylon race wasn't
working. I was getting cuts at seemingly random places. It turns out, I was
placing the visible pylons in a different spot than what I was testing against. The
placement code was copied from the 3-pylon race pretty much unchanged, so I didn't suspect
that code. Most of my in-race tests had to be changed, so that's where I spent half
a day looking. I finally figured out what was happening when I hopped in the cockpit
and saw more precisely where the cut was happening.
- Design meeting on when to turn off hints and/or how to encourage the player to do so
- Installed new hard drive
Man, I hate the power connectors on hard drives. About ever third time I install a
drive I cut myself on one
- Starting unpowered training
21/MAY/2k
19/MAY/2k
18/MAY/2k
- Consistent event startup
- Short schedule meeting with Cliff
- Short training design meeting
- Only disqualify on no fly zone and broken plane
Otherwise, just offer to restart
17/MAY/2k
- Got all arrows working
- Fixed left/right bug when heading almost north
- Implementing cut warning in pylon race
- Starting on putting a timer on training disqualifications
16/MAY/2k
- Got track and targets positioned
- Showing four or five targets
- Schedule review with Cliff
- Placing guiding ring
- Almost have arrows working
15/MAY/2k
- Got in early, trying to catch up
- Got audio and text turning hints in
- Implementing finer grained track
- Left early for softball
13/MAY/2k
- Made it in, but couldn't concentrate. Didn't get anything meaningful done
12/MAY/2k
- Looked at RC Stunt Copter on the PS. Very gamey. Voiceovers are good.
We noticed they went with environmental sounds. Controls aren't precise
enough. It was interesting seeing what parts of the copter collided with the items
in the fields. For the most part, the landing gear collided with only the ground. The
rotors collide with everything. They fight depth perception by putting your
viewpoint behind the copter all the time. Even then, I had trouble lining up when I
couldn't see my shadow
- Another design meeting on depth perception and orientation
- Gave Chad coordinates so he can place training pathway
Looks good
Generated more brainstorming ideas
Basically, Chad doesn't like the corridor
- Spelled out which voiceovers get played when
- Michael implemented the view shift idea we had several months ago. It works
great. It's just exactly what we were hoping for when we came up with the idea
11/MAY/2k
- Voice-over design meeting
- Adding detection of simple control thrashing
This includes a timer to show the bloom for more than a frame
- Added in training strings and hooked them up
- Working on making them right/left specific
- Oversight in heading test. See if they're headed nearly north
10/MAY/2k
- Implementing fading corridors
Decided to work on some of the other stuff, first
- Added more control points to figure 8 to smooth the turns
- Got all warnings using blooms
- Another design meeting. The ever-present depth perception problem.
9/MAY/2k
- Finally got it to display correctly.
Michael suggested I don't try to move the object before rotate and scale.
Instead, move the center of the object to the center of the corridor. I can get
those number easily
- Found a couple more copyus pastus x/y bugs
- Also, somehow I misread the docs on atan2. I know I looked specifically to see
which was first, x or y, but got it wrong anyway. Fixing that got all the rotations
right.
- Was showing the corridor to Michael and Chad. They found it distracting.
It pops in, you can't see the far end, the texture is too obtrusive, it's impossible to
tell what your ground track is. Also, the turns are too sharp. But we have
some ideas how to make it work better.
- Implemented close-to-corridor warning
8/MAY/2k
- Didn't make it in over the weekend. Getting my dash fixed (old plastic fell apart)
and the engine noise in the stereo looked at. They didn't call to tell me the car
was ready until half an hour after they closed. I pick up the car this morning and
the engine noise isn't fixed, and the radio no longer seeks to the next station, so I
can't reset my presets. Grr. I'm going to have to rip it apart myself. I
don't really have time. And I've installed enough stereos. I don't really
enjoy doing that anymore.
- Somehow a really disjointed day. Never really got in the groove. Made
progress on placing the corridor, but not much
- Left early for a softball game (that the other team forfeited)
5/MAY/2k
- I was banging my head on the rotation for an hour and a half last night. It turns
out I was doing it in the wrong order.
- Still placing visible corridor
- Feedback to Cliff on schedule
4/MAY/2k
- Started on overcontrol monitoring
- Music meeting
- Meet Cliff meeting
- Placing visible corridor
3/MAY/2k
- Rewriting mission write routines
We need to start the planes in a different place for training
- Testing basic flight
Just getting the algebra right
And a teeny Copyus pastus. It's hard to spot Z's for Y's when you have a blizzard of
them close together
2/MAY/2k
- Basic flight
Got most of the tests coded (in corridor, on heading, etc.) The only one not coded
is overcontrolling. Only have a couple of vague ideas, so far.
Got most of the states coded
1/MAY/2k
- Happy May Day
- More flowcharting
- Started coding up first training "event." The figure-8 basic flying
exercise
30/APR/2k
- Started flowcharting Training
- Testing for interim release to Ripmax
28/APR/2k
- Threw out a lot of yesterday's mission file stuff. New stuff is less flexible, but
much, much simpler
Got all that to compile. Crashing when launching sim
C++ syntax annoyance. I was trying to get a reference back out of a function and
ended up calling a copy constructor and a piece of memory was getting deleted when we were
still using it.
- Stubbed in training classes
27/APR/2k
- Figured out how to list planes in ppf so that I can identify them in the app plane list
- Hook up preview icons
- Found a resource leak in the free fly screen event pane
We weren't deleting the event-specific option frames
- Starting to consolidate writing the mission file
26/APR/2k
- Started on training screen
- Rip out training screen option tab, extra previews
- Add training type (section?) tab
- Stubbed in training previews with programmer art
- Grab list of allowable planes from Training.ppf
25/APR/2k
- Finish telemetry overlay
- Forgot to init highlight color in options tab
- Design meeting on events
- Added \n support to info overlay
- Document sounds
- Added a bunch of bugs/feature requests to bugbase
24/APR/2k
- Smoke trails should get their wind from the object they're following
- Highlight current tab
- Copyus pastus bug in event options, disqualifications not being remembered
- Telemetry overlay
23/APR/2k
- Happy Bunny Day
- Adding gusts
21/APR/2k
- Finished asset mgr. Didn't really help much. We're not reusing many images
in each screen. Discussed preloading all plane, etc preview icons at program start.
- Attacking another flicker
Turns out my offscreen buffer was tagged as transparent. So Fox was clearing the
area before blitting the offscreen image. It looks much better without the flicker.
Non-work
My roomie scored tickets to the Stars game. It was a good game, nice and
close. But, man, was it loud. Painfully loud.
Then I assaulted my ears again on Sat by seeing Stomp. They rocked. More
comic relief than in their video.
20/APR/2k
- The non-virtual setIcon bit us again. It shows up as trying to display or
manipulate a deleted icon. Discussing on Fox list
- Track down bitmap leak count of -51
Needed to bump serial number when making a copy
Don't bump serial number for blank copy (we generate a bunch)
- Use non-virtual setText for opportunity to wrap text
- Get AssetMgr to compile
19/APR/2k
- Beat my head against the wall for hours last night. Turns out I'm aliasing some
pointers to icons and we had some code that bypassed those copies.
- Finished EOL support in word wrap
- Attacking button flicker in UI
- In glide, kill max alt message after five seconds
18/APR/2k
- Found a brute force word wrap that'll work for us
- Our preview buttons stopped working. Not getting an update message
I can't seem to figure out the incantation to get both the button press and preview
buttons to work at the same time.
- Figured out how to word wrap in update handler
- Trying to figure out how to handle line breaks
- Fighting a crash bug that's related to preview button problem above
17/APR/2k
- Implemented multi-image support for button press
- Implemented text highlight for button rollover
- Starting on word wrap
14/APR/2k
- More design on takeoff and landing training
We like what we've come up with. There's more we'd like to include if we had time,
but what's there makes a complete package. And it should set a new standard for this
niche.
- Doh! Removed 3-2-1 countdown from T&G. We don't start timing until
you've started your engine
- Pylon wasn't playing turn hint sound if you cut the previous pylon
- Pylon was leaving a message in the main info area until you reached the first pylon
13/APR/2k
- Moved preflight and out of bounds up into CEventAI
- Updated rest of AI classes to use consolidated routines in CEventAI
- Added countdown to T&G
- Design meeting on beginner training
- More reading research on training
12/APR/2k
- Added wait for throttle cut before engine start in pylon
- Added countdown after engine start to pylon
- Actually check for servo movement extents in preflight checkout
- Add preflight checkout checkbox to options
11/APR/2k
- Added light bloom to T&G
- Added sounds to pylon
- Can now color bloom green or red
- Clearing info string in pylon
- Brought bug base up to date
10/APR/2k
- Finished consolidating a bunch of common routines into CEventAI
- Using CRadio for scrolling text
- Got rest of engine control working. Michael came up with a robust-looking solution
- Tracking down why T&G is cycling states when it should be in StillLow
- Fixed bug in runway alignment test
08/APR/2k
- Got SDOE to compile at home
07/APR/2k
06/APR/2k
- Started looking at training AI
05/APR/2k
- More on info display
- Rearranging some stuff, consolidating some common routines into base class
- Test for T&G runway alignment
04/APR/2k
03/APR/2k
- Deduct points if landing outside of T&G area
- Computer control of engine in Glide
31/MAR/2k
- Logo design meeting
- Went over next week's work while Michael is out of town
- Documented rules of finished events
- Save Free Fly options whenever leaving screen, instead of just on Fly
- Implement Engine running on spawn
- Implement Pylon turn hint checkbox
30/MAR/2k
- Doh! Typo. Had a * where I wanted a +. Now I think all the hooks are
in pylon
- Implemented light bloom around the plane to signal when you can begin your turn.
It works pretty well
- Adding in an equipment origin to each field
- Still have some trouble with depth perception. It's really hard to tell how close
you are to the pylons
29/MAR/2k
- Got pylon compiling
- Doh! Just came up with an idea on how to determine if we've passed or gone
backward by a pylon. Compare the plane's position to the next/previous pylon.
See if both are on the same side of the radial
28/MAR/2k
- Working on algorithm to determine when we've passed a pylon
Simplified the problem by treating the turn hint as purely eye candy. Having two
lines to denote when you've passed a pylon causes way too many problems
27/MAR/2k
- Flowcharted Pylon race
- Design discussion on Workshop screens
24/MAR/2k
Out sick
23/MAR/2k
- Stubbing in all events
- Added "number of laps" control to pylon frame and passed it on down
- Added min/max/step INI entries for T&G length and time
- Design meeting on high scores vs user adjustments
22/MAR/2k
- Got T&G poly in place and scaling
- T&G event tests against poly for valid landing
- Save UI settings for T&G
- Met Elliot. Discussing some rules to events
- Added Enforce Disqualifications
Don't really like how it turned out. Need some way to keep track of what complaint
we have on the screen. This is really more of the same info message architecture
21/MAR/2k
- Added placeholder sounds for glide and T&G events
- Added preflight checkout to glide
- Started on placing T&G poly
20/MAR/2k
- Attempted bug day
Couldn't get the CTD. I don't think it's happened to anyone in the last week
- Added a state to glide to not let user start engine if throttle is too high
Can't really implement it, yet
- Implemented no fly zone in glide and T&G
- Consolidated some common routines in both events
17/MAR/00
- Working on how the info messages when going from checklist to caller
- Fixing last MFUs in delete overlay list
(Backwardus testus? Swappedum comparisonius?)
- Found bugs in how I'm handling alarms in Glide and T&G
- A several more informational messages in T&G
- Implemented landing zone/runway distinction in glide event
16/MAR/00
- Implementing delete overlay list row
15/MAR/00
- CTrainingPreflightAI isn't a descendant of CEventAI, anymore
We had a static this pointer that was getting overwritten
- More checklist testing
Figuring out how checklist displays text to the user
Timers, too
14/MAR/00
- Begin testing checklist
- Need to figure out correct way for checklist to get ProcessCommands call
We really need to register for ProcessCommands instead of using C++ inheritance
For now, just calling it directly from event ProcessCommands
- Met Manning for lunch
- Code review of Glide AI
Looks like it's probably the right route to take
A couple of minor changes
More comments
- Fixed a bug in Glide event where it wasn't showing the score after landing
13/MAR/00
- Got pre-flight checklist to compile
- Some bug day flying
10/MAR/00
- Installed VC6
- Discussed training a bit and skimmed a beginner's manual looking for ideas
- Discussed adding a plane holder human model, since that's emphasized so strongly as a
safety measure
- Stubbed in most of the states for pre-flight checklist
Most steps are simply "Tap a key" to get through them
09/MAR/00
- Got most of Touch and go in there
Still need to decide on information messages displayed, sounds, etc
08/MAR/00
- Flowcharted Touch and go. It's not as simple as we thought.
- Found a save bug in pacestar.com Wizflow
07/MAR/00
- Implemented "on runway" test
Prop lists put up quite a battle
- Got Touch and Go to compile
Now to rip out glide-specific stuff
06/MAR/00
- Got first coupla sounds into glide event
- Trying to figure out obData lists
03/MAR/00
- Got key name string
- Tried to display "Control Shift M" etc, but the engine doesn't seem to handle
that correctly in any case
- Now, localize it
Car: Instead of missing completely, now the hesitation is longer. It just
stops accelerating for about 1/4 of a second. Frustrating. In addition, the
door handle on the driver's side door broke, so I have to reach in from the other side to
open it. Annoying.
02/MAR/00
Took my car in before work. It hesitates when I accelerate hard. Chris said
that a somewhat common problem is when you hit a certain level of boost when the engine is
cold and the air is cold it'll cut the fuel. I haven't noticed that much of a
hesitation. We put a box into the sensor path that basically lies to the computer.
My first test on the way home tonight implies that that fixed the problem.
- Finished sysAnyKey
- Michael and I discussed keyboard structures. I need a reverse lookup so that I can
tell the user what key to hit. It'll also be needed when we put in a keyboard
mapping front-end
Man, that code is messy.
Found the scan code. Tomorrow, turn that into a string
01/MAR/00
- Discussed no-fly zones (and no-fly boxes)
- Discussed a little about "Tap any key" support
- Finished plane damage test
- Detect respawn with callback
- Delay creation of new plane on respawn by one frame. Otherwise, the planes
overlapped and the new one got bounced into the air.
- Installed Ripmax joystick driver
- Added a max altitude display during the glide and after the landing
This glide event is fun
- Spelled out audio phrases we'll need
- Added user engine control and must land on runway options to glide UI
Passing them into event AI, but not using them, yet
- Started adding sysAnyKey
Not really any key, it's a command that comes from the keyboard map
29/FEB/00
Lotsa good progress on glide.
- Implemented check for appying power too soon
- Adding a few more states
Waiting for engine start
Power too soon disqualified
Acknowledge disqualified
- Implemented a test for plane still moving
- Implemented a test for plane damage
Doesn't appear to work for propellers. Have to ask Michael in the morning
Turns out the m_obParts list is a kludge that only lists "interesting" parts.
Michael pointed me at a DetachingFromTree call that I can use. First thing in
the morning.
- Hooked up height above ground test
Oops, had to take into account height of landing gear/wheels
- Added a few "Tap a key" messages
- Silly C bug. I guess it's a sloppyus typous. I had "
m_bPaused-BTRUE;
"
when I wanted "m_bPaused=BTRUE;
" One big problem with the C
language is it'll take garbage as valid code.
Got a digital camera, an Olympus
C-2020Zoom. My dad had given me some money for my birthday but this is the first
one that looked like it had the features I wanted. In particular, faster focus,
faster display on the LCD, Quicktime movie recording, optional manual focus, and
Smartmedia cards. I thought it also had USB, but apparently I got that mixed up with
another model. Their 3030 looks even better, but it's not going to be available
until May.
28/FEB/00
- Implemented glide time option
- Glide in-sim output uses string table
- Round up numbers when counting down to zero, round down when showing elapsed time
- Added "almost done climbing" state
Disjointed day. Tried to pick up my contacts (my first) but one came from the
manufacturer dry, and it burned whenever I put it in. I did pick up new glasses.
Then I had to leave a little early for a softball game (we lost.)
25/FEB/00
- A small episode of "fixing the hammer." I offerred to provide our
changes to Fox to another guy on the list. It turns out he has a 500k limit on
emails and the zip is 1.2 meg. So I wanted to put it on Lynx for him to grab from.
That meant changing a couple of network properties in Windows to reflect the recent
network changes Joel has made. Two reboots and one Blue Screen o' Death later I'm
finally able to do that.
- Adding in stubs for event-specific options.
Added a collection of frames to the bottom of the event tab. As we choose each event
we hide the previous frame and show the appropriate one
Fought what appears to be a Fox bug. If you instantiate a window and immediately
hide it, it'll show anyway. If you then try to hide it again, the flag is already
set and it does nothing, leaving it showing. You can only hide after create() has
been called
- Stubbing in writing those options to the mission file
- Found an x/y typo in the backGround draw of FXWindow. Dunno why it hasn't shown up
before this
Had an interesting incident. A guy walks into the office and parks himself in
front of my desk and starts describing a fighting game that he made. The game is a
combination of Tekken and Killer Instinct with lots of blood and is "...fucking
bad-ass." Am I interested? He obviously doesn't have a clue how the
industry works. If he really does have something finished, as he claimed, then he's
ahead of many wanna-be's. But the fact that he apparently did all of this work in a vacuum
and referred to some old games suggests that it may not be as cool as he thinks.
Michael pointed him at GOD as a place to start. Maybe they have time to tutor him.
Michael said that before he sent the guy off it became clear that he wasn't the one that
actually wrote the game. He looked like he was very likely a skinhead. Lots
of tatoos and cropped hair.
24/FEB/00
- Added COverlayInfo. Center of screen place to display info
- Filled in test for engine on
- Using Michael's generic data and console to set some booleans to test some of the finish
conditions
- Helping Michael try to track down what looks like a Fox bug. He changed the input
dialog to use a TextField instead of a TextBox, since we only ever want one line of
input. It appears to be treating the width and height as x2, y2. When he
finally got it to show up by letting Fox set its size and position, the redraw during
editing is offset up and left. I suspect the latter might be related to the changes
I made to get the backgrounds working. I had to change a lot about how Fox handles
offsets.
23/FEB/00
- Fixed bug in unused alarm functions
- Discussed music ideas with Michael and Chad
- Adding more stubs of tests for glide AI
- Design meeting on overlay system which turned into a design meeting on the Glide event
22/FEB/00
- Setting up call to Overlay controller so that AI can create an overlay list
Still need to figure out layout. How will AI tell the overlay where to draw and
where to put tab stops?
- Hacked in test to glide event AI
- Changed overlay list callback to a generic C function. Not all lists are going to
want to go through the AI
- Discussed layouts and overlay timers.
- In the glide event we need both alarms and timers. Those are two different
classes with very different uses and interfaces. I could derive them from a
common class. Or rewrite the timer overlay to do a callback similar to lists.
In which case, what's the advantage of having a special timer overlay? For now,
going to treat it as a "list" with one item
- Flowcharted state diagram of glide event
WizFlow by PaseStar http://www.pacestar.com/wizflow
- Stubbed in most states and starting to implement alarms and timers
21/FEB/00
- Got COverlayList in there and hacked a test
- Michael and I discussed how to instantiate event-specific AI object
- Also, how the AI calls up an overlay and how to hook the info display of that overlay
back to the AI
- Stubbed in CEventGlideAI and instantiate it in CGameEngine
18/FEB/00
- Michael and I talked some more about hooking this overlay to the info it needs. He
was envisioning a list of timers. Basically, very similar to the score list in
SDOE. So we came up with a way to define a list with info that doesn't change very
often. The overlay will call a generic GetInfo() routine with a cookie and an
ID. It'll get back a string, which it uses to draw the info. IOW, move the
formatting intelligence out of the overlay.
- Hacked in a quick test of yesterday's timer overlay
17/FEB/00
- Oops, Michael told me I put a crash into the code. It turns out I forgot to init
my new pointer in CAlarm in most of the contructors. I know I thought about it at
one point :-)
Changed CElapsedTime to be more like CAlarm. Timers are now known by their ID rather
than by pointer. I keep a list of all timers in a static list within the class.
- Started on COverlayTimer
Got all of the functionality in. But got stuck when I was trying to figure out who
owns the timer. Probably the Event AI should. The connection between the Event mgr
and the overlay is still unclear.
- Starting on Event AI
Basically, just a container for the timer, right now.
16/FEB/00
- Added unlimited battery, unlimited fuel, model tx range, invulnerability, and allow
failures to free fly options
- Should those options get put in the mission file? Or just let them live in the
prefs object?
Michael and I are both dissatisfied with the current prefs object. It's a monolithic
garbage class that causes a complete recompile whenever anything is added. Also, it
doesn't lend itself to gang-loading a collection of setting. For example, the
network settings. Right now we have to manually copy all of those settings over top
of the normal prefs settings. And then copy the original settings back after the
mission so that they don't get saved by accident.
Similarly, Training will be handled a bit differently. In Free Fly, we want to allow
the user to change things on the fly, like invulnerability or unlimited fuel.
In training, we want to force most of that stuff one way or the other in order for the
training session to make sense.
- Added a generic callback to CAlarm. Recompiled the world.
I'll be using this for the countdown timer in the Glide event
- Created CElapsedTime
15/FEB/00
- Clean up bleed through pixels in arrow buttons and frame borders.
Sent changes to Jeroen
- Don't draw focus rect on buttons. Required a change in Fox
Now we need some other way to give feedback on button click. Prolly "depressed
button" image
- Had design meeting with Michael to discuss what's needed for events. We ended up
with a medium-sized stack of work solely for the "Free fly" event.
Luckily, most of that work will be used by several other pieces of the program.
- Moved Start in air and AI planes again. We decided we needed an options tab in the
free fly screen.
- Changed Options, referring to the Options screen, to Settings everywhere else
14/FEB/00
Happy Valentine's Day.
- Looking at jaggy fonts.
Weird situation. It looks straightforward at first. When you first see a
spinner it's anti-aliased. When you click in it, the character next to the caret
gets jaggy in about three or four steps in time with the blinking caret. Obviously, the
character is being redrawn semi-transparently with each blink. I was going to post a
bug on the Fox list, but I wanted to verify the behavior in one of the Fox example
programs. I couldn't get it to happen. Eventually, while trying to verify that
I was using the correct font in the example, I ran both RC Sim and the example at the same
time. Then it started happening. If I exited RC Sim then the example went back
to its default behavior. How odd.
- Moving "Start in air" and "AI planes" to Free Fly screen
- Save off number of AI planes in prefs
- Added min and max to random wind, gust, direction
11/FEB/00
- Tried to do dynamic text size/bold in tabs. Caused a Fox layout call which caused
the tabs to change size, which caused the entire box to shift up and down. Also, the
spot I'm doing the change causes a coupla redraws and resizes. So it looks like it's
boinging up and down. Later, I tried forcing the size. But something was
constantly resizing the tabs larger and larger as I chose each one. Couldn't track
down who was doing that.
- Some tidying up
10/FEB/00
- Finally finished groupboxes. This is much simpler. It doesn't cause a bunch
of extra work when instantiating the other controls on the screen.
- Rearranging Free Fly screen
- Added wind controls to Free Fly Weather tab
- Added LoadGroupBoxes to all screens/tabs. Now we don't have to add code and
recompile the app to add groupboxes to the screen.
- Hooked wind controls to prefs file and to mission file
09/FEB/00
- Adding label list and control list to group boxes. Otherwise, we have to hard-code
those
- I don't like the work that group boxes is causing. I'm going to throw out
yesterday's code and rewrite it so that the group box lines are simply cosmetic, rather
than a window behind those controls. They'll be four thin windows plus a label
window.
- And then Michael talked me into simply storing rects in GUIScreen and drawing those
08/FEB/00
- Added border frame around sliders, spinners, text, list, checklist and combo boxes
- Added group boxes
Took a lot longer than I expected. Really fought to figure out the offset I needed
to draw the background behind buttons.
07/FEB/00
- Bug day
- Removed network buttons from main screen
- Removed network pane from options screen
- Changed display renderer and res combos to size themselves dynamically
- Fixed sound sliders not saving themselves
Turns out I wasn't setting the target for messages from the slider control
- Changed sound pref values to be floats from 0.0-1.0 instead of int 0-100
04/FEB/00
- Still ripping out a bunch of old MessageBox stuff
- Fought background not painting right on new messagebox
- Found a hole getBackground. We were always calling fillRect, assuming we would
override it. Instead, we need to check the WINDOW_PARENTBACKGROUND flag and if set,
pass the call on back up to our parent.
03/FEB/00
- Mid-mortem, aka Listen to Ron talk :-)
- Michael and I set up my next few tasks
- First one I'm tackling, getting MessageBox working
02/02/2K
- Moved combo icon a coupla pixels
- Added description box to field and event tabs
- Tidied up how I maintain current name, picture, etc info in event tab
- Handle change flags differently to combat infinite loop
- Hooked up description boxes
- Adding Weather tab
- Hooked up event and weather to mission file write
- Made plane and field list traverse more robust by looking for filename instead of
human-readable name
- Noodled with debug_message, trying to get \r\n between file and trace to look good.
- Clicking on preview images switches to appropriate tab
- Moved plane tab to first in list
01/FEB/00
- Store name of plane folder/ppf in list
Use that for preview and for save/restore
Okay. Instead, I simply let the combo keep track. With the combo index I can
ask the app for the prop list with that same index. From there, I can get the
picture name. The main screen queries the tabs for that name.
- Found a spot where we were storing the button image in two places. We had a member
variable in addition to Fox storing the pointer as an FXIcon. So we were doing a
double-delete on it.
- Plane preview works.
- Field preview works.
- Field icons in combo works.
- Got field and plane name labels to work
- More robust save/restore. Save filename instead of index.
- Implementing Events preview/label
I ended up using the same structure as the GUILayout label list. I have a list of
strings that I use to open up the event prop lists.
Save/restore also in
31/JAN/00
- Hooking up preview image controls in Free Fly Plane screen. 3 days scheduled
Already 70% done.
- Got thumbnail images working in combo boxes
- Noticed we're not deleting app object
- debug_message to output to trace, in addition to error log
- Added simple bitmap serial number and inc/dec to catch leaks
So now I'm chasing leaks
Found about a dozen bitmap leaks
- Back to preview controls
Ended up having to turn the image into a button. The CGUIBitmapControl is derived
from an FXWindow, which doesn't have an ID
Using OnUpdate mechanism to notice change in combo
I think this will work. Just need to save off image filename
29/JAN/00
- Respawn. Had to stub out an AI call for the short term
- Looking at why we get a title bar when running in full screen. Looks like a bug in
the Glide driver. If the desktop is set to 800x600 then we get the title bar.
BTW, when's the last time you ran Windows at 640x480? I wonder how anyone gets
anything done at that resolution.
- General testing of sim
28/JAN/00
Forgot to mail my notes to myself, so this is from memory.
- Found a crash. We found an old ppf file and tried to treat it as a game object.
That gave us a blank entry in a combo box and when we hit the sim button we ended
up dying when it tried to load the bogus object.
- Got save and restore working in that screen. Now you don't have to set everything
everytime you want to start the sim.
- Got start on ground working option working.
- Started working on respawn. There's a good chance I can finish that tomorrow.
Had to leave for my buffoon hockey game.
- Spent some time messing with joysticks. Two wouldn't work in the game port so I
ended up with a USB. Didn't take time to troubleshoot the game port with more sticks
we have handy.
- Reduced visual size of tracers.
27/JAN/00
It was scary driving to work. I saw one car right in front of me get onto the
slush on the side of the road and end up tapping the center barrier (the idiot locked up
his brakes.) It's going to be worse going home. Yankees (I'm a displace Iowan)
think it's silly how Dallas shuts down with a couple of inches of snow. But we
rarely get snow. We often get sleet. What's worse, that melts during the first
day and then refreezes at night leaving a very smooth, slick surface. That doesn't
happen up north. It really is dangerous. Especially since the average driver
is a complete idiot.
- Looking at controller screen ideas.
- Michael pointed me at hooking up one of the screens he's been addressing thus far.
- Tried to add a cheat key to help in the livestock show next week. Didn't quite
work out. The inertia went wacky. Still, it was fun getting away from the UI
for a bit and digging into the sim.
26/JAN/00
- Found the crash. Turns out there were two errors with that class. First, I
forgot to make the destructor virtual. I wish we could set a warning for that in the
compiler. Second, I forgot to add includes for the controls I was using in that
screen. So we were deleting a pointer to a type the compiler didn't know
about. We did get a warning on that, but it was buried. The Fox string class
doesn't play nicely with the SGI STL string class. We get five warnings in each
source file about functions having different calling conventions. Both Michael and I
have looked at it a couple of times, but we haven't come up with a way to suppress those
without suppressing some that we are interested in seeing.
- Finished checkboxes with image for checkbox
- Tidying up layout of network screens
- Noticed that our text boxes are all multi-line. In MFC, single-line text boxes are
simply the same but have a flag passed in. In Fox they're different classes.
- Added splash screen. That took a little work. Had to rearrange our init code
to get the Fox init stuff before the splash screen an our expensive stuff after.
- Tracked down another crash. Not enough error checking. I was getting the
index from a combo box and trying to get the text. If we never set a default in the
combo it returned -1
- Oops, forgot a destructor. Plugged a memory leak
- Doing similar tidying of the code. Making sure destructors are there and that
they're virtual
- Make sure all tab screens have the same decoration options
- Trying to get text, list and checklist boxes to have the same borders. They don't
appear to be showing up
25/JAN/00
- Added CheckBoxes
- Verifying spelling of control and screen names
- Fought a "bug" where VC didn't compile a module it should have
- Changing checkbox to use our check/uncheck icons
- Found an unrelated crash when backing out of Options screen.
24/JAN/00
Ack! Michael cut off his hair! I hope his programming genius wasn't stored
in it.
- Working on hooking up networking screens.
- Oops, need checkboxes
- Got everything to compile and come up by commenting out checkboxes for the moment.
I'll get those in first thing tomorrow
23/JAN/00
Finally got switched over to my new web host. American Business Web was okay. Jim seemed
reasonably responsive to most of my tech support requests. But he's a little
expensive and his management software is falling behind the times. Plus, I was
having intermittent trouble with downloading email. And finally, I wanted to set up
some mailing lists, which he doesn't appear to offer.
The new place, Datarealms is a little cheaper and
has better software, plus mailing lists. I got their name from my roommate Andy, who
said his Aikido dojo used them and had pretty good luck. My first impression is that
the tech support response is too slow. Generally about 30 hours, plus no evening nor
weekend support, which is inconvenient for a webmaster on hobbyist hours. Other than
that, managing the account does seem easier. I can actually view what mailboxes and
aliases I have in place. Setting up the mailing lists was reasonably
straightforward. And I'm looking forward to more thorough usage logs.
One tip/reminder for anyone wanting to run a Perl script. If you're on a Unix box
then the script needs to use Unix line breaks. Most Perl syntax checkers will
overlook MS-DOS line breaks and not report them. When you try to run the script you
don't get any output, no error messages, nothing. If I hadn't run into this before
it probably would have taken hours or days to figure it out.
21/JAN/00
- Hooked up Options|Network screen, save protocol
- Found one bug in the Options|Network save of the species Copyus pastus
- Implementing network screens
- Took a detour tidying up ppf code. As it stood, we couldn't read an int from the
layout file with a value of zero and a default of non-zero. That turned out to be a
pain. The GetProperty() function wasn't returning whether the type of property we
got was what we expected. Instead, NULL was defined as "bad." The problem
with that is when we want to read a numeric value of 0. It comes back looking like
NULL and I was going with the default. Apparently in the past all of our defaults
were 0, so it all worked out.
Car fixed. Clutches have gotten expensive. I remember when they
were $200-250. This one cost $800+.
20/JAN/00
Bad start to the day. On my way in I had a couple of errands to run near the
house. My clutch started making a lot of noise. I got out to run one of the
errands and it wouldn't start. So I'm thinking that it's a bad clutch and a
bad battery. Then, while talking on my cell phone, that battery died.
Sheesh.
- Turns out the working folder in some of the SourceSafe projects got pointed to the old
SDOE folders.
- Got contrast and brightness and text color working from the layout file. Man, the
layout file is just so much better than having to recompile the app to see such trivial
changes.
- Found and fixed the label and combo box offset bug(s). It was the same bug in two
places. One of those that I don't know how it ever worked. Those always scare
me. I like to understand the symptoms and what I did to make them go away.
- Michael split out the creation of the top window from the rest of the windows so that we
can give it different Windows flags. They should help performance. But the Fox
options variable is full. Since he doesn't enumerate all of the bitflags in one
place we didn't realize that until we started seeing a very subtle bug. Then we
realized that we had a collision between our new bitflags and that of a derived
class. That collection of 32 bitflags is nearly full. I can easily work around
that for my ParentBackground flag by creating a new extoptions variable and calling an
accessor function in the constructor. Calling the accessor doesn't work well in Michael's
situation. Since it appears that my bit isn't colliding with anyone, I moved his bit into
the one I used to use. That should get us around the problem for now.Hooked up reading
default label and button text colors from layout file
- Propogated new code to other screens that use it, like Credits, Training, etc
- Stubbed in SaveOptions in rest of options tabs
- Hooked up Sound options
Last weekend I picked up a Mickeysoft Intellimouse Explorer, the one with the optical
motion detector. I like the motion detection technology. That seems to work
well. The shape is okay, though I like the regular Intellimouse Pro better.
The extra two buttons are okay. I have gotten used to using the one to back out of
web pages. The action on the buttons is a little too light for me. I often
right-click or wheel-click when I don't intend to. Also, I would like the wheel to
be a little taller and maybe have a bit stiffer motion, like the Intellimouse Pro.
Overall, it's okay. One thing that annoys the heck out of me is that they added a
useless light shining out the back end. I often catch it out of the corner of my eye
when my hand isn't on it and it distracts me. I appear to be very sensitive to
lights and motion in my peripheral vision. Animated GIFs on web pages also drive me
nuts. This light is bad enough that very likely I'm going to rip the thing open and
tape up that light so I can't see it anymore.
19/JAN/00
- Took all day to figure out how to copy the background from the parent window.
I don't really like what I came up with. I get the feeling I'm missing something
obvious. But, it does work. It behaves a little different than PaintShop, but it'll
do the job, methinks. Now, to hook it up into the layout file.
- There's a bug in some of the new background stuff. The background of some of the
labels on the Credits screen are offset a little. Also, when popping up a combo box,
when it goes away it's grabbing a piece of background from close to the upper-left of the
tab book.
- Ran into a compile problem after Michael left. I don't see why his compiles
successfully
18/JAN/00
Working on transparent controls. Going in a lot easier than I thought. I
almost have labels done and the others should fall into place quickly. But I'm
having to touch several spots in Fox to make it work. That'll become really painful as we
get new drops.
Labels done
Transparent buttons
Transparent tabbooks
Michael, Chad and I discussed how to make text readable on these backgrounds. I
contend that we need to reduce the contrast. Michael thinks just brighten or darken
will work. We're trying stuff out in Paintshop, but I have to leave for my skating
lesson.
Michael had an image up before I stepped out the door. He agreed that we need to
reduce contrast, too.
17/JAN/00
Hope there aren't any virus pieces lying around the office :-)
- Working on getting display options fully hooked up
- Now saving and restoring renderer and resolution
- Hooked up display checklistbox and change notification.
- Starting to figure out Fox messaging system
16/JAN/00
Not everything got transferred to the zip disk for me to compile SDOE at home. So
I went in to work a coupla things. I added the display of locked and in-progress
games. I use the strikeout attribute on the font. I need to move the test to a
bit earlier. Right now, you get warned about machine speed, then you're told you
can't join.
13/JAN/00
Back from skiing. Only a quarter of the mounatain was open. There wasn't
much there to challange me or Bruce. We had four first-time skiers with us so we
spent a lot of time tutoring them. No serious injuries. Even the newbies used
up the mountain by the fifth day. Overall, we had fun, though.
06/JAN/00
Michael and I discussed a more flexible debugging system. His generic data and
data logger classes make the low level basis for a system that should work well.
Basically, we want to have more flexibility in reporting errors. Expensive tests we
want to disappear when we compile a release build. That's a standard assert, and we
have plenty of those scattered through the code. Others, we'd like to turn on and
off at runtime in both release and debug builds. The goal is to provide more
information in order to track down crashes and other odd behavior. So sometimes we
want to pop up a box and other times just write it to a log file. And we want to be
able to switch on the fly. And we want to be able to selectively turn it on and off for
different groups of reporting code. We think we've come up with a way to graft this
on without having to go and touch every single assert currently in the code.
Finished stubbing in Training screens
Hooked up displaying an image under a label
Spent a lot of time trying to implement transparent controls. As usual, I missed a
ramification. When we don't fill the rect of the window then the old controls hang
around and clutter up the current tab of a tab book. In order to do this we're going
to have to implement an onPaint that asks its parent what is behind it and use that as the
bitmap for that window. That'll get rid of the flicker and just be overall more
pleasing to look at. Ended up backing out most of my changes because I'm going to be
gone for a week. Posted a question on the Fox list to see what others think.
I'm out of town for a week. I get to go skiing at Ruidoso, New Mexico. I
like to ski. I like to ski a lot. I like to ski Real Fast.
05/JAN/00
Added listbox to layout file
Looked at getting rid of bogus compile warning. Caused recompile of the world.
Don't see how to reconcile those. For some reason, those four are different
than the rest. They appear to be tied to CString
Put training and network screens in layout file
Started stubbing in training screens
Michael and I discussed how to set up the string ID names we're using to ID each screen.
He made a suggestion that'll produce a compile-time error instead of a runtime
error. Since the screen probably won't change once they're all in there we're
putting the GDECLSTRID into the app screen.h file.
In SDOE, looked at Spanky's idea about color-coding score display based on team. I think
it'll be easy to change.
I've had a couple of interesting emails, lately. A couple of weeks ago I
mentioned the high school kid who wrote me about my review of Alien Resurrection. He
first tried to intimidate me, and then tried to impress me with his knowledge of classical
forms of narration. I wasn't impressed with his spelling errors and very poor
grammer :-)
I had another guy claim to be a horse whisperer and tried to give me a one-paragraph
explanation of what horse whisperers do. Somehow, he jumped to the conclusion that I
had never spent much time around horses. In fact, I spent nearly every day of junior
high and high school riding and taking care of horses.
Finally, apparently the author of the Pilot program Account
Manager checks his logs and found that people were linking from my site. I had
mentioned that I wanted a PC version of the program and he pointed me at the beta he just
released. Way cool.
04/JAN/00
Implemented icon display in combo boxes
Oops, found out that word wrap isn't implemented in Fox text boxes, yet
I managed a four second flight of the toy tethered helicoptor we have here in the
office. Then I suffered from control reversal. It was pointed at me and I
pushed the cyclic away from me, which of course lowered the nose and the thing bored right
in at me. I did manage to cut the throttle before it actually hit me :-)
Then Michael flipped it over right on top of its control tether. In a single crash
he managed to pop a motor off the rotor, wrap the control cable around a motor shaft,
slice through half the tail boom and snap the drive belt to the tail rotor. Most
impressive :-)
He also broke three propellers on a prior flight. My best was two props on my first
attempt :-)
03/JAN/00
- Moving load image and label lists to immediately below background in all screen::inits,
so I'm more likely to remember it when creating a new screen.
Working on handling how ppf's represent a single label or image in "list"
- Michael ran into this last week. He had put in a blank label name " ".
We could search for that as a special case, so that we know whether or not to
assert. For now, if the list comes back null I try again looking for an ID.
- Added General and Network option tabs. Nothing hooked up on those, yet
Fixed a crash bug when we fall through to choose default renderer. We were calling
into the resolution combo control before it had been created.
Added programmer art for these new screens to annoy Chad :-)
Implemented font size parm in layout file. Worked first try. Always satisfying
Implemented left/center/right alignment for labels
Defined our own LAYOUT_FIXED to save typing
.plan Archive
Please email comments, typos, errors, dead links, and any suggestions to webmaster@mightydrake.com. (Privacy statement)
Copyright © 1997-2007 Mighty Drake, Inc. All rights reserved.
Last modified: January 25, 2003