1 block placement/removal timers
3 removal timing depending on the tool/block combination
6 composite entity animations
8 complex entities are made up of parts which have their own local
9 transform that can be animated (like e.g. an arm or head)
13 with background now being a thing, a padding might be nice
14 that or maybe separate bg from fg rendering
16 it may also be feasible to get rid of SDL_ttf and use freetype
17 directly to eliminate the unneccessary surface creation
18 ftgl might also be worth looking at
26 merge IO counters, so number of operations per frame is kept
27 low, no matter what exactly is done
29 store some kind of byte order mark?
31 world and player names should be normalized so they can safely
36 definitely needs throttling for the internets
38 players stats (who's connected, their ping, and game-relevant
39 things) should be sent to clients
41 some method for authenticating a player might be nice
43 maybe stale and inexistent chunks should be visualized (e.g. by
44 drawing a semi-transparent box around them)
46 make a chunk data counting a little safer
50 (clientside) networking and disk IO are prime candidates for threading
54 select or create a world with configurable parameters
58 pathfinding, better turning behaviour
62 occlusion/neighbor light mixing is implemented, but still linear
63 this could be solved by using a pre-interpolated light texture and
64 mapping light levels to coordinates on that
66 there's a bug where a chunk's model is not updated if its neighbor
67 changes border light levels
68 I kinda mitigated it a little for direct neighbors during linking, but
69 it still can happen in (hopefully) rare corner cases
71 propagation through semi-filled blocks is wonky. I worked around it by
72 having the light propagate into solid blocks, but feels like this
73 could cause some weird behaviours
75 entity lighting is now derived from block light levels
76 it's not interpolated and the calculation is very basic, so it
77 has some unexpected effects
81 now implemented as optional gravity emitter per block type
82 let's see how that pans out
83 maybe players should be given the option to switch between
86 I had a NaN position while experimenting with (directional) gravity
87 blocks recently. I checked the gravity code and it seems solid, so
88 might be something I overlooked or, what more probable, it triggered
89 some NaN condition in the collision code. Needs investigating
91 This may be related to the HUD locking on an entity. If the entity is
92 teleported to a NaN position, the ray intersection test could give a
97 when blocks are not just a solid rock of color, attributes may
98 become interesting. like labels on signs and contents of
101 transparency (blocks and entities)
103 transparent blocks because awesome
105 world generator that is not boring
108 still needs way more block types and structure generation
109 a minimum distance from origin could be interesting as well, to ensure
110 the spawn vicinity doesn't contain bloks with would be useless at the
111 beginning (if there even is such a thing), also it would encourage
113 biomes seem too small, maybe that will become easier to tune when
114 there's a little more diversity between them
115 chunk generation takes too long, it's incredibly annoying
116 should look into speeding it up and executing on a different thread
117 compute shaders might be another approach, though that would require
118 opengl 4.3, block the gpu, and generally doesn't lend itself well to
119 threading (cpu wise). It also requires servers to load GL. maybe not
120 such a great idea after all
124 need a way to find a suitable location to spawn new players in
125 I imagine a "random block" function of ChunkIndex could be nice
126 (also for use with the AI spawner)
127 also, finding a spawn position for a player must no fail. after a
128 certain number of tries, the world must change to safely accomodate
130 chunk generation could be adjusted to make a little more room near the
131 origin (since that's where the usual spawn point will be), but that's
132 not strictly necessary and might overcomplicate the generation
133 if all fails, the spawner has to modify the world
134 how much space has to be cleared and how to make sure the spawning
135 space connects to "open space" I don't know yet, it's all a little
138 sprite/particle system
140 these could help make the world seem more alive
144 items representing both blocks and non-blocks (such as tools, weapons,
145 armor), with a simpler physics simulation than entities, much like the
147 they can be picked up by entities, so those should have one or more parts
148 in their skeleton to render them when they're "held"
149 players' inventories have to be changed so they select an item rather
151 item IDs could be the block ID for blocks, and anything from 2^16 up for