-
Notifications
You must be signed in to change notification settings - Fork 3
/
TODO
114 lines (91 loc) · 4.04 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
TODO
======
UI
---
* Need a method to select spot to create/drop entities.
* Pop-up menu showing possible interactions with an entity
* Entity information dialog.
* Make use of the stacking attribute. -- Eris stuff required?
Threading
---------
* Lots of multi-core machines now.
* Main problem areas: Open GL and Eris
* Could thread model loading (easy ?) load in background and notify when its available. What do we do in the mean time -- PlaceHolder nullmodel?
* Could thread eris polling (hard!) -- lots of accesses to Entity objects.
Entity Scripting
----------------
* Embed LUA into Sear
- Can eventually replace action handler and even current scripting interface?
* We will probably want some way of handling time driven proccesses. Ie. each frame we will need to call some update/tick functions to advance a script further. We will probably want to be able to dynamically register/unregister particular scripts so as to not bog down performance too much.
* Create some event handlers for specific events to control specific behaviour.
- E.g. creation event could randomise head texture.
* Possible events?
- Change of appearance
- Change of mode/action
- Change of status
* Might want to change default model/textures depending on attributes
- Tree texture for seasons
- Tree model depending on age/height
* Might want to control certain behaviour, e.g. how fire is rendered on a burning entity.
* Equipping an item might require triggering of certain animations and model selection.
* We can also have scripts for certain events.
- Explosions requiring mutliple artifacts to be rendered temporarily
- "magically" create object could require a "poof of smoke"
General
-------
* allow multiple terrain entities
Render Queue
------------
* Loop through each object and update the animations
* Loop through each object and check visibility
* Loop through each object and get all the meshes to render
- Encode required transform and re-check visibility
- Add to a priority queue and sort by texture, states, transparency etc..
* Render the queue
TextureManager
* Implement reference counting for textures so they can be unloaded when no
longer required
CameraSystem
* Create new camera types (e.g. top down, orthographic etc..)
* Create smooth transitions between camera's
* Finish moving graphics code into appropriate places
* Make greater use of vertex buffer objects
* Support more OpenGL extensions.
* Implement shadows (Volumes/Maps)
* Implements Per-Pixel lighting and associated techniques
* Move OpenGL code into one object. Aim is to allow the "drop in" of other Render objects using another system such as DX
* Add wavy grass effects
* Add foot prints
* Add weather effects
- Query weather entity
ModelHandler
* Needs to be able to instatiate objects independant of entity (e.g. for mercator forest)
* Needs models to query and check for updates from associated world entity's
Media
* Improve media efficiency
* run meshes through poly reductioner ?
* Make textures smaller
General
* Add an oct tree or other space partitioning system.
- Provide basis for collision detection code
- Reduce number of entities to render
- Can link nodes to an "indoor" engine
- Use to provide distance info for rendering options
* Improve Sound/Music System
- SDL_mixer (or maybe SDL sound subsystem) doesn't clean up properly
- Currently using SDL_mixer. It is adequate for now, but a much better alternative would be to use openAL, www.openal.org
* Create a file handling class
- Allows memory mapping if appropriate
- Allow file access from archives
- transparent access bewtween file system and archives
- Store type/position/emissive info about each light source
- Determines light priority order (render N most appropriate light sources)
* Improve scripting engine
- Character manipulation
- Animation control
- Init special effects
* Allow character portraits
* Cally improvements
- Make model heads turn to face the way the camera is looking
- Allow skinning
- Improve animation/mesh changing