-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO.txt
163 lines (124 loc) · 7.45 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
Current higher pri:
- Slowing down via key doesn't change particle dt; particles are thus affected by framerate
- Load Music from pak? Need to stream from disk
- Particle with x that tapers to points (anime-style)
- Timestamp-based asset rebuilding; only rebuild changed assets, repack everything else around it
- Assets in pak files according to levels/chunks; all assets in one chunk are loaded at once
- Automatically walk dependency chain to get used assets per chunk / manually specify?
- Need some way of building out levels/chunks automatically, or more easy way to do it manually
- Potentially can export current resources via keypress or something like that; requires pak to have been hit for all tho
-If so, large errors like error textures etc. for when a miss happens (as described in talk). These will have to be stubbed out for final game
- Think about tree structure for asset dependencies, pros/cons
- Better handling of raw vs. DXT images
- Compressor should be multithreaded
- Remove OpenGL deprecated things and re-enable forward compat flag
GL[37190]: glVertexPointer has been removed from OpenGL Core context (GL_INVALID_OPERATION)
GL[37190]: glTexCoordPointer has been removed from OpenGL Core context (GL_INVALID_OPERATION)
GL[37190]: Using glDrawArrays in a Core context with parameter <mode> and enum '0x7' which was removed from Core OpenGL (GL_INVALID_ENUM)
GL[37190]: glEnableClientState has been removed from OpenGL Core context (GL_INVALID_OPERATION)
GL[37190]: glColorPointer has been removed from OpenGL Core context (GL_INVALID_OPERATION)
GL[37190]: glDisableClientState has been removed from OpenGL Core context (GL_INVALID_OPERATION)
- Small-block memory allocator for Lua
- Other memory allocators/uses?
- Particles follow ship with acceleration applied
- Use level editor to create geometry/scenery
- Fix tamerisk board
- Test at 144Hz and see what breaks
Bugs:
- Ship stops suddenly when moving joystick slowly towards center position
- Particle editor breaks after F5
- Fix objsegment partial tiling? Or do I not care?
- Adding to a pak .txt doesn't check that the pak contains said files; just says up-to-date
Possible sound channels:
- BGM
- SFX
- Environmental SFX
- System SFX
- Voice
- Bg voice
- Movie
Overall TODO list:
- Use DSPs for audio fx
- Research FMOD Studio & what I could do with that
- Revisit class predeclaration and add more where possible
- Curve editor via ImGUI
- Resources should be streamed from disk?
- Sound filters
- Fix math for softbody lattice anim so it actually works properly
- Use shaders rather than lattice animations where possible
- Ortho for HUD and text drawing
- Particle systems, objects, etc should be loaded by template, not from XML each time
- Also XML->PAK binary formats to simplify this
- Error checking of parameters in luafuncs.cpp (without breaking everything this time)
Particle System Editing:
- UI should save/load window booleans as config
- Re-add death spawn types (tho prolly on a per-system basis?)
- Add particle support for emitter acceleration
- Add support for seeing particle death spawns
- Add rotation angle for setting rotation based on velocity (so you don't have to image edit for a particle problem)
Lower priority:
- Test sound pitch shifting; current implementation seems to not work for all sound effects as intended
- "Press Any Key" in games is used to determine which controller to use (though this should be stored, which most games don't do)
- UTF code point lookup should use array of direct values rather than binary search? Or hashmap of some sort?
- Use SDL_GetPowerInfo() for laptop battery reminders
- Move all resource loading stuff to IO?
Reasoning behind the engine design (aka why not just use Unity or whatever):
- Robust Lua scripting interface
- 3D either fleshed out more fully (with sub-objects, object demolition) or ripped out
-- Don't want to bother with bones/3D animation; math too complicated. Does this make the 3D too limited?
-- How much do I care about 3D eye candy and does that just make the 2D stuff look like crap?
- Simplified resource managment
-- Paged in with memory mapping if intelligent enough for performance gains
- XML vs. Lua - when to use one over the other? Can XML be removed intelligently?
- Optimization and data-driven programming/design where applicable
- I had a look at Unity; it sucks all the joy out of game development
- Low-level code (the fun part) is replaced with high-level APIs to learn. Learning APIs is not fun, and never will be.
- Actual learning as a whole is removed; you won't learn anything practical from learning Unity
- No programming experience is required in Unity; any old artist can throw something together that will look better. Lack of art skill will become the major limiting factor.
- Unity uses C#. C# is a terrible language made by novices, for novices
- The "portability" aspect is thrown out the window when optimization is difficult. New Unity projects can't be ported to Vita. Old ones could, but were incredibly impossible to optimize (because C#). In essence, using a "more portable" platform prevents actual portability, and optimizing per-system is nigh on impossible. A render method that's fast on one system may be impossibly slow on another, and Unity can't take this into account as well as a well-designed, lower-level engine can (because C#).
Other misc unordered TODO:
- Scene editor / XML exporter
- Intelligently split things into subclasses
OPENGL STUFF
- glNamedBufferStorageEXT()
https://www.opengl.org/wiki/Nomenclature/Direct_State_Access
https://dl.dropboxusercontent.com/u/22111385/crap/renderer.cpp
- glUniformX() functions for sending stuff to shaders
- Load from pakfile only if actual file doesn't exist?
- Better to remove file loading entirely and ONLY load from pakfile
https://dl.dropboxusercontent.com/u/22111385/crap/correlation_lines.vert
https://dl.dropboxusercontent.com/u/22111385/crap/correlation_lines.frag
https://dl.dropboxusercontent.com/u/22111385/crap/gpubase.7z
SafeShaderVar sv[] =
{
{ "proj", as_uniform(proj) },
{ "tex", as_uniform(textureUnit) },
{ "rayExitTex", as_uniform(textureUnitBack) },
{ "samplingDist", as_uniform(vrp.samplingDist) },
{ "stepValue", as_uniform(vrp.stepValue) },
{ "deformTex", as_uniform(textureUnitDeform) },
{ "intensity", as_uniform(vrp.intensity) },
{ "alphaMult", as_uniform(vrp.alphaMult) },
{ "colorTex", as_uniform(textureUnitColor) },
{ "deformMult", as_uniform(vrp.deformMult) },
};
shader->setUniforms(sv);
notes from talk with fg:
- if GL 4.5 if(glDebugMessageCallback) - GL_DEBUG_OUTPUT_SYNCHRONOUS
-- set core profile SDL_GL_CONTEXT_PROFILE_CORE
-- gontext)forward_compatible_flag | sdl_gl_context debug_flag
- "push lines ino std::vector, then do glBufferData and draw that buffer as lines"
-GLM for math
- mat4 for transformations
v' = mat4 * (x,y,z,0) --> transform vector
v' = mat4 * (x,y,z,1) --> transforms point (translate)
m = scale * translate * rot --> rotate first, then translate, then scale
projmat = cameramat * objmat (can be recursive by passing proj to child objects)
Endianness testing:
union { char c[2], short s; } u; u.s = 1; return u.c[0];
Note: On Linux, "xboxdrv" is the driver I had the most success with when it came to gamepad rumble (default driver said it rumbled, but didn't)
@fgenesis | debug.traceback() in a xpcall() handler at least
@fgenesis | so if stuff breaks you know why
@fgenesis | i think my Lua C++ api already does this for C++->Lua calls
Also add lua error stuff to log as well as cmdline, only cmdline if in debug mode