working on optimizations
[QuestHelper.git] / Development / tasks.txt
blobd45d87627eac7acde378806e54a562e9cb8da13d
1 What I want:
3 * Break code in to mostly separate modules, rather than the tangled mess I have now.
4 ** Collecting data on objectives.
5 ** Collecting data on the world.
6 ** Figuring out how to travel through the world.
7 ** Figuring out how to complete an objective.
8 ** Figuring out how to complete groups of objectives.
9 ** Figuring out what needs to be done by user and/or party.
11 * Code distribution:
12 ** Will distribute using Git.
13 *** I think Git requires some special inconvenient environment in Windows. But I have no sympathy for Windows users, so it's all good.
14 ** Supply instructions for submitting patches.
15 ** Build scripts to create the generated files.
16 *** Have all scripts written in Lua, no Makefiles/C Compilers and stuff most people can't use.
17 *** Have scripts be platform independent.
18 **** Right now, they'll probably only work in Unix like environments. But again, no sympathy for Windows users.
19 **** Requires sha1sum and convert (part of ImageMagick) programs to be installed and in the path.
20 ***** The path requirement will be yet another thing that's going to inconvenience Window users.
21 ** Need to be more friendly to Windows users.
22 *** Supply instructions for setting up an environment that the build scripts will run in.
23 *** Make sure the scripts will actually run.
25 * Documentation:
26 ** Code needs to be commented.
27 ** Functions need to be documented.
28 *** Will probably write script to read the source code to extract documentation from the comments.
30 * World Data Collection:
31 ** Should track the locations and boundaries of zones. (The areas that appear on the mini-map, not the maps you can view)
32 *** Will allow routing and pathing inside instances, although it will be extremely granular.
33 ** Should track where these zones link together.
34 *** Inside instances, should track the time it takes to transition between zones and use that for routing, since we can't use positions.
36 * Objective Data Collection:
37 ** Should adjust weights based of the added positions based on their range from the player.
38 ** Should track containers items come from.
39 ** Should track how killing a monster affects reputation.
40 ** Should have ability to create exceptions.
41 *** Exceptions will probably have to be done automatically.
42 *** Some items are created from spells or other items.
43 *** Some event objectives require having an item gotten elsewhere.
44 ** Locations for things be translated into terms of the above zones.
46 * Objectives API:
47 ** Balanced objective creation/deletion.
48 ** Ability to add new objective types.
49 *** For use by plug-ins.
50 *** Types will need to be ref-counted by the objectives using it, so removing a type won't break them.
51 ** Ability to remove objective types.
52 *** Virtual table for objective and the functions; want only an extra single entry in objective table.
53 ** Remove category from objectives, all objectives of the same category will share the same virtual table.
54 ** No more closure functions, they waste memory. Will be part of the virtual table effort.
55 ** Remove routing/pathing data from objectives. Will probably put it in a table, keyed by the route it belongs to.
56 ** Scan the player's trade skills, to see if they can make required item.
57 ** Support Sub-objectives, objectives should be able to create their own objectives while figuring out how to complete themselves.
58 *** If there are multiple ways to complete an objective, something clever is going to need to to done with routing to make sure it only includes the bits that are needed.
59 *** Quests will need to become such an objective, with its objectives actually becoming sub-objectives.
61 * Graph API:
62 ** Ability to relink a node multiple times, with different distances, have it route using the shortest distance.
63 ** Ability to remove a distance, and have the node switch to best remaining distance that was previously added.
64 ** Balanced link addition/removal
65 ** Balanced node creation/destruction.
66 ** Make the player into a node.
67 *** Will probably necessitate the ability to move nodes.
68 *** Will make it easier to support the Hearthstone and teleport spells.
70 * Frame/Texture API:
71 ** Menus and menu items shouldn't be tracked separately, the individual frames they're composed of should be tracked and recycled.
72 ** Devise some API for assembling windows and menus and whatnot out of the recycled frames.
73 ** Menus need to be made to completely inside the screen; right now they spawn under the cursor, but this might not be desirable if the cursor is near the edge of the screen.
74 ** Need to create some graphical user interface for configuration.
75 ** Should create a Quest Minion, similar to the ones in UberQuest and MonkeyQuest.
76 *** Will be able to automatically hide quests that aren't immediately needed.
77 *** Will be able to sort quests by how likely you are to do them.
78 *** Will be able to show the objective progress of other users, in addition to your own.
80 * Sharing:
81 ** Should be able to enable sharing with only friends or guild members.
82 ** If a peer doesn't know where an objective is, they should be able to ask the peer that submitted it.
83 *** The peers answer shouldn't be recorded, I want peers to discover these things independently on their own, replicating data from other users will only create bias.
84 ** All peers should have the same route.
85 *** Should be calculated from the same starting point.
86 *** Hearthstones and teleport spells shouldn't be used, unless everyone has them.
87 **** If somebody has a portal spell on the other hand, then everyone should effectively have them.