-
Notifications
You must be signed in to change notification settings - Fork 12
/
todo.txt
142 lines (118 loc) · 8.14 KB
/
todo.txt
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
- Bug when running in single player:
src/base_vector.cpp:200: FATAL: Index 31 out of range: <0; 31)
/home/nadult/freeft/game Grid::add(int, Grid::TObjectDef<void> const&)
/home/nadult/freeft/game Grid::update(int, Grid::TObjectDef<void> const&)
/home/nadult/freeft/game game::EntityMap::update(int)
/home/nadult/freeft/game game::World::simulate(double)
/home/nadult/freeft/game io::GameLoop::onTick(double)
/home/nadult/freeft/game io::MainMenuLoop::onTick(double)
/home/nadult/freeft/game ???
/home/nadult/freeft/game fwk::GlDevice::runMainLoop(bool (*)(fwk::GlDevice&, void*), void*)
/home/nadult/freeft/game main
- Segfault in server (on the client as well):
libfwk/include/fwk_vector.h:145: Assertion failed: inRange(idx)
Backtrace:
src/base.cpp:210 (anonymous namespace)::assertFailed (file=<optimized out>, line=<optimized out>, text=<optimized out>)
src/grid.cpp:103 Grid::add (this=<optimized out>, object_id=<optimized out>, def=...)
src/grid.cpp:154 Grid::update (this=0x7fa9140009a8, idx=46, object=...)
src/game/entity_map.cpp:90 game::EntityMap::update (this=<optimized out>, index=46)
src/game/world.cpp:153 game::World::simulate (this=<optimized out>, time_diff=0.016737945000386389)
src/io/game_loop.cpp:76 io::GameLoop::onTick (this=0x2ee9100, time_diff=0.016737945000386389)
src/io/main_menu_loop.cpp:185 io::MainMenuLoop::onTick (this=0x1a8d0c0, time_diff=0.016737945000386389)
src/game.cpp:35 main_loop (device=...)
src/gfx/gfx_device.cpp:186 (anonymous namespace)::GfxDevice::runMainLoop (this=0x7ffd9917d9c0, main_loop_func=0x51f2a0 <main_l...
src/game.cpp:142 safe_main (argc=<optimized out>, argv=<optimized out>)
src/game.cpp:157 main (argc=17, argv=0x8abce60)
Backtrace:
src/base.cpp:211 (anonymous namespace)::assertFailed (file=<optimized out>, line=<optimized out>, text=<optimized out>)
...libfwk/include/fwk_math.h:988 fwk::Box<fwk::float3>::Box (this=<optimized out>, min=..., max=...)
...libfwk/include/fwk_math.h:986 fwk::Box<fwk::float3>::Box<fwk::float3> (min_y=0, max_x=0, max_y=<optimized out>, max_z=<optimized ...
src/game/entity_map.cpp:42 game::EntityMap::updateOccluderId (this=0x7f04e00009a8, object_id=<optimized out>)
src/game/entity_map.cpp:91 game::EntityMap::update (this=<optimized out>, index=41)
src/game/world.cpp:153 game::World::simulate (this=<optimized out>, time_diff=0.017741714999829128)
src/io/game_loop.cpp:76 io::GameLoop::onTick (this=0x1618670, time_diff=0.017741714999829128)
src/io/main_menu_loop.cpp:185 io::MainMenuLoop::onTick (this=0x13f37a0, time_diff=0.017741714999829128)
src/game.cpp:35 main_loop (device=...)
src/gfx/gfx_device.cpp:186 (anonymous namespace)::GfxDevice::runMainLoop (this=0x7fff6065b940, main_loop_func=0x51f2a0 <main_l...
src/game.cpp:142 safe_main (argc=<optimized out>, argv=<optimized out>)
src/game.cpp:157 main (argc=15, argv=0x59a6340)
Trace/breakpoint trap
Generating GDB backtrace
libfwk/include/fwk/list_node.h:36: libfwk/include/fwk/list_node.h:36: Assertion failed: node.empty()
src/sys/assert.cpp:76 fwk::assertFailed (file=0x54c7c7 "libfwk/include/fwk/list_node.h", line=36, text=<optimized out>)
libfwk/include/fwk/list_node.h:36 fwk::listInsert<Grid::Object, &Grid::Object::node, fwk::Vector<Grid::Object> > (container=..., list=..., idx=<optimized out>)
src/grid.cpp:153 Grid::update (this=0x7f7e00235a38, idx=0, object=...)
src/game/entity_map.cpp:90 game::EntityMap::update (this=<optimized out>, index=0)
src/game/world.cpp:153 game::World::simulate (this=0x7f7e00235950, time_diff=0.017303550001088297)
src/io/game_loop.cpp:76 io::GameLoop::onTick (this=0x5f14300, time_diff=0.017303550001088297)
src/io/main_menu_loop.cpp:185 io::MainMenuLoop::onTick (this=0x1f13e00, time_diff=0.017303550001088297)
src/game.cpp:35 main_loop (device=...)
src/gfx/gfx_device.cpp:186 fwk::GfxDevice::runMainLoop (this=0x7ffe5fc0d028, main_loop_func=0x50c0b0 <main_loop(fwk::GfxDevice&, void*)>, arg=0x0)
src/game.cpp:140 main (argc=1, argv=0x7ffe5fc0d328)
- Server doesn't inform client that it's closing?
Potential problems with libfwk updates:
- intersection(segment, something) returns parameter within range (0, 1)
previously FreeFT expected (0, segment length)
- min/max -> vmin/vmax for vectors
- Rect/Box related code
- ...
- DOWNSCALE, remove unnecessary features
- use unique_ptr in UI & HUD
- use FColor instead of Color (unless it's being sent or stored, where memory matters)
- for(auto i : index(vec))
Must-have: ----------------------------------------------------------------------------------------
- THINK: do we want to still support devices without OpenGL ES 2.0? libfwk requires that, but in this
game it's not really needed
- Better targeting, which should work in 3D (if user wants to aim at a wall)
- Displaying hit percentage close to cursor
- Action cursors
- When user clicks on PC icon, camera should center on the PC
- Notify Client that Server has disconnected
- Mutants cannot use rifles, add classes specific to mutants with heavy weapons
- findClosestPos could return multiple points, if for some reason on of them is unreachable
(think this through). Problems arise when were trying to get to some door when lot's of AI's are running around
- Constructors with Stream (or XMLNode, or other stuff) should be explicit
- think about handling orders on client / server and replication
- Think about visibility system; What player should see when he's dead, etc.
Is this systeam really such a good idea?
Nice to have: -------------------------------------------------------------------------------------
- In release build some bugs (no sound file, etc.) should be handled silently or, logged to a text file
- Player cannot run with a minigun?
- Better camera work
- Add baselib as submodule ?
- Add shotguns
- Network security (at least against hostile packets)
- convert should be run automaticly by game or editor. Some text file should also be created
with information about file format versions, so that when .sprite format changes, the game
won't crash, but will re-create all sprites automaticly.
- Blending in/out entities when getting out of/into invisible occluder
- Possibility to explode dead bodies if they are not yet exploded :D
- Add damage_def class which is defined in xml:
damage="bullet(10) fire(100)"
damage_mod="all(1.5)"
damage_res="all(0.1) fire(0.2)"
- Verification of resources on client side, because they might be different than on server side
- Sounds should be played in the middle of entity
- Add looped walk / run sounds
- Add limit on number of attacks per second for given weapon?
- When projectiles are being shot vertically, their angle could be altered a bit
- If the last interactor with a door was a player, then he should see when the door closes
- When player is moving in one direction for a very short distance, he shouldn't rotate
- Sound blockers (floors, walls)
Refactoring: --------------------------------------------------------------------------------------
- Perform color operations on float4, use Color only for storage
- move EntityWorldProxy, EntityRef to separate files?
- make EntityWorldProxy::ref() const
- make Entity access functions both const and non-const (it's ok to do them with const-casts)
- If sprites are kept in a big pool, then PSprite is no longer required and sprite doesn't have to inherit from RefCounter?
- use rects in drawQuads
- ?? Make rects and boxes store position and size, not min and max
- Normal Inheritence for items
- Use shared_ptr<> instead of Ptr<> ? (safety issues in multithreaded environment)
- Use optional<> instead of unique_ptr<> in some places
Finished: -----------------------------------------------------------------------------------------
- Use librocket instead of my own UI?
Answer: NO: for the editor current UI is good enough, in-game should'nt be based
on standard controls like buttons. Use your imagination!
- Remove event filters from orders (unnecessary)
- Looking through some of the entities (look-through flag?)