Todo List

Member Engine::AITrainer::AITrainer (std::string track_filename)
special mutate for the first iteration?

Member Engine::AITrainer::car_score (unsigned int car)
For good competitive AIs, rank is more important than speed. If it knocks all rivals off, it can take as long as it likes to finish.

Member Engine::Audio::attach_source (SoundSource *source)
The mapping between Audio::SoundSources and OpenAL sound sources isn't scalable. Try using a fixed number n of OpenAL sources and switching to the loudest n Audio::SoundSources. Try about 30. On my system, having many sound sources causes an error. Having more than a few causes terribly low refresh rate.

Member Engine::GameObjects::Car::Car (Physics::World &world, btTransform start, InputDevice *input_device, unsigned int car_model, const btVector3 &plane_normal, const btScalar &plane_distance, const btVector3 &start_point)
Get a proper starting position.

Member Engine::GameObjects::Car::get_bounds () const
Maybe testing a bounding box transformed is better than testing the axis aligned bounding box of a transformed axis aligned bounding box.

Member Engine::GameObjects::Car::get_sensors (float results[NUM_SENSORS]) const
direction and distance to nearest booster(s).

direction and distance to nearest other car(s).

See if the scales can be removed once the AI is good enough.

See if any sensor can be removed once the AI is good enough.

Member Engine::GameObjects::Car::posttick ()
better lap detection. We count it if the car is within 17 units of the start/finish line. It is fiesable that this is wrong in some cases (e.g. on a mobius stip this would count the lap twice.)

Member Engine::GameObjects::Car::posttick ()
recycle some vertical momentum as forwards momentum

Member Engine::GameObjects::Car::posttick ()
do this smoothly for anolgue input.

Member Engine::CarCamera::update_occlusion_tester (Track::OcclusionTester &occlusion_tester, btScalar aspect) const
The front plane is actually 0.03 units infront of the camera.

Member Graphics::CubeMap::CubeMap (std::string filename_base)
Cubemap loading not quite right, but not used yet anyway.

Member Track::DataCheck::DataCheck ()
The installation prefix, in autotools, might not be /usr/local. Find the path properly.

Member EditorWindow::assemble_ui ()
make icons for top/front/side

Member EditorWindow::on_action_edit_lighting ()
Provide timestamp of event to present.

Member EditorWindow::on_action_file_test ()
This doesn't happen for all errors, but should happen for more.

Member EditorWindow::on_action_help_wiki ()
This doesn't happen for all errors, but should happen for more.

Member Engine::GameScene::GameScene (std::vector< std::pair< InputHandler::iterator, unsigned int > > input_devices, const Track::Track &track)
Replays should save the version since they are not compatible with other versions. Any minor tweak in game mechanics, car paramaters, or courses will break the replay. We don't actually want compatibility, a replay from an old version does not reflect what is possible in a current version, so it is meaningless.

Member Engine::GameScene::GameScene (std::vector< std::pair< InputHandler::iterator, unsigned int > > input_devices, const Track::Track &track)
Don't make cameras for AI cars.

Member Engine::GameScene::GameScene (std::vector< std::pair< InputHandler::iterator, unsigned int > > input_devices, const Track::Track &track)
In a replay, give one view of a car, and allow switching the car that is visible.

Member Engine::GameScene::draw ()
only recalculate this when the screen size changes or on the first run.

Member Engine::GameScene::draw ()
'player' is only going to work if the human players (with cameras and viewports) are before all the computer players in the car list. Otherwise the HUD will refer to the wrong car.

Member Engine::GameScene::take_input (InputReport &report)
Give some sort of warning for low batteries. We need direct wii remote support first.

Member Engine::InputDeviceAI::poll ()
Blend with some more manual behaviour as the car approaches the boundary of the nav mesh. This behaviour should check all directions, not just forwards. It should help most with narrow paths. Possible solution: Pick slide based on left and right sensors to move towards the middle. Weighted blend for slide between neural network using minimum sideways distance. Pick stearing based on front left and front right sensors towards middle. Weighted blend for stearing based on minimum distance on forward diagonals. Pick acceleration based on forwards and backwards sensors towards biggest space. Weighted blend for acceleration with neural netowrk using minimum y distance. If the car is facing backwards, replace steering.

Class Engine::InputDeviceJoystick
Add support for horizontal menus.

Class Engine::InputDeviceKeyboard
make keys configurable.

Allow also WASD for the menu and arrow keys for steering.

Member Engine::InputHandler::init ()
check for notifications from new usb & bluetooth devices

Member Document::InsertRemoveEdgeIdentifier::remove (Track::Track &track) const
When objects can be placed on the edges, check there are none.

Member LightingWindow::set_lighting (const Track::Lighting &lighting)
set widgets

Member Engine::LoadScene::update_logic (unsigned int milliseconds_elapsed)
Let a player pick the number of AI players?

Member Track::MeshFaces::copy_faces (const MeshFaces &other)
smooth shading: calculate and use vertex normals for curved objects.

Member MyQuaternion::getAxis () const
this is in development version of Bullet. Remove this class and use it when released.

Member Track::NearTrack::scan_direction (btVector3 glob, btScalar *results) const
handle crossing very close to a vertex properly

Member Track::NearTrack::set_info ()
Set m_object_coord correctly. It would make it easier to move correctly when the object it is attached to is moved.

Member NewForm::ThemeModelColumns::thumbnail
icons for themes.

Member Track::OcclusionTester::operator() (const AxisAlignedBoundingBox &aabb) const
more testing. It could be outside still, if partially inside two half spaces.

Member Track::Path::conditional_draw (const OcclusionTester &occlusion_tester) const
Some sort of tree data structure would probably be more efficent for establishing viewable static geometry.

Member Track::Path::get_bounding_box () const
return the axis aligned bounding box of the path instead.

Monitor changes to graph, then only calculate when it has changed.

Member Track::Path::get_bounds () const
Some sort of tree data structure would probably be more efficent for establishing viewable static geometry.

Member Track::Path::get_edge_descriptor_internal (const std::size_t index) const
Use a more efficent data structure?

Member Track::Path::get_nearest_segment_connection_handle (btVector3 position, btVector3 normal) const
take into account normal.

Member Track::Path::get_node_descriptor_internal (const std::size_t index) const
Use a more efficent data structure?

Member Track::PathEdge::conditional_draw (const OcclusionTester &occlusion_tester) const
Make Attachment an AABBDrawable, and include attachment in graphics_bounds. Then attachments will not be unnecessarily drawn. Requires monitoring changes in attachments.

Member Track::PathEdge::get_graphics_mesh (std::size_t index) const
write similar functions for the other meshes.

Member Track::PathEdge::get_nearest_s (btVector3 start, btVector3 stop) const
should share more code with is_here. Calculate positions in update?

Member Track::PathEdge::get_nearest_s (btVector3 start, btVector3 stop) const
we only need the position, not the full transformation.

Member Track::PathEdge::get_transform (btScalar position) const
improve up direction.

Member Track::PathEdge::is_here (btVector3 start, btVector3 stop, btScalar radius) const
we only need the position, not the full transformation.

Member Track::PathEdge::update (std::size_t start_vertex_name, std::size_t finish_vertex_name, const Path *graph)
Addititional objects placed on track (e.g. booster, start position)

Member Track::PathEdgeEnd::handle
It could make PathEdge cleaner if the relavent PathVertex was linked to in here. However the graph will then store the connections of each arc twice, and we'ld have to keep it up to date.

Member RacerApp::parse_arguments (int argc, char **argv)
show usage info when given malformed arguments.

Allow picking the number of computer players by command line arguments.

give it a main_loop or callback.

Member RacerApp::parse_arguments (int argc, char **argv)
allow disused controllers by commandline arguments.

Member Track::Texture::load_from_file () const
implement loading paletted images.

Member Track::Texture::load_from_file () const
swizzle.

Member Track::TrackMesh::TrackMesh (std::istream &source)
calculate the maximum bend.

Member Track::EditAssist::VertexRotationHandle::make_delta (btVector3 position) const
In 180 degree case use another handle's direction?

Member View::draw_path (const Track::Path &path)
Find bounds of visible area and set up an occlusion tester.

Member View::draw_path (const Track::Path &path)
use marker size to draw a square around the point regardless of hardware maximum point size. glPointSize is not guranteed to support sizes other than 1, which is too small.

Member View::on_button_press_event (GdkEventButton *event)
I don't like this big chain of dynamic_casts. It should use polymorphism, but we don't want to mix editor UI stuff with the game components so they should be separated better first.

Member View::on_scroll_event (GdkEventScroll *event)
fix scrolling while dragging.

Member View::set_scale (const float scale)
Multiple-view friendly handle lengths.

Member Engine::Physics::World::write_replay_events (std::ostream &stream)
record end time.

Member Engine::Physics::World::write_replay_events (std::ostream &stream)
Record some absolute information so we can correct behaviour of different floating point units making the replay more portable.

Member Track::scan_ai_graph ()
289.0 is used in Car.cpp with the same meaning too. Really we should look at all vertices in the plane, group them by connectivity, then take the group closest to start_point. Then the Car should determine its position the same way.

Member Track::scan_ai_graph ()
Is there some way to remove several edges without checking them multiple times?

Member Track::scan_theme ()
Fix this const_cast abomination. Either load themes in editor mode, or (better) allow both modes to be used interchangably (i.e. draw() is solid, draw(RM_WIREFRAME) is wireframe.)

Namespace Track
Make some Windows equivalent since unistd.h's chdir is a posix thing.

Get Racer at SourceForge.net. Fast, secure and Free Open Source software downloads

Generated at Mon Sep 6 00:41:15 2010 by Doxygen version 1.4.7 for Racer version svn335.