An open world action adventure game with HTN-based AI
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
7.4 KiB

------------------
Todo
------------------
Minimap
HUD Minimap is difficult to use with regards to rotation (needs better view cone)
Instead of doing this weird shit, just render the world and have UI create icons for player
and things
Minimap noise doesn't match world
Scaling is completely wrong between WorldResource position and noise sample
Actually, this doesn't seem to be the problem
Minimap is extremely slow
Player Movement
Get full body instead of floating arms
Combat System
Animations
This is going to be tricky. Procedural would be cool, but difficult. At least shoot for
procedural impact effects
Could do UI only for now to experiment with timing
Sound
Can start with simple sounds: blood hit, sword hit/parry, sword swing
Milestones
Goal #1: Minecraft-quality
Goal #2: Minecraft but with strategy (this can be the stopping point for now)
Goal #3: Something closer to Chivalry instead of Minecraft
Consider spawning Game Logic-only colliders which anchor to Unreal bones for combat. These colliders
could be made into ragdoll colliders on true impact or somehow tell the thing it collided what the
force and direction is so the animation can react. Here's a perfect feature for this:
https://docs.unrealengine.com/latest/INT/Engine/Animation/PhysicallyDrivenAnimation/
Add player HUD UI - Only needs Minimap, Need bars
Debugging
Fix debug text over AgentCharacter for combat test
Make it possible to e.g. hover over agents and inspect their values as soon as the game starts up.
Future Features
Cereal integration
Position vs GlobalPosition
As soon as possible, I need to decide if I need Chunk XYZ with Position XYZ
This depends on whether I ever want to support really large worlds
How large? I'd have to do the math (yes, the monster math)
Agents
Goal retrying needs rethinking (goal retry status is forgotten once goal completely fails)
After extended period of time, PlanComponentManager is constantly trying to unsubscribe things
Fix Agents having unpredictable Need levels on second Play In Editor (I'm guessing the above Pause
Galavant loop will help with this)
Replaying in editor seems to do strange things with needs/timers. Are things being reset properly?
Also noticed manhattan distance for movement doesn't stop them. Resource positions might be borked
Pickups sort of working, sometimes they aren't picked up, Actors are being destroyed strangely
Possibility that pickup actor is falling through the floor
(invisible other component hitting KillZ?) YES, it's KillZ
Development/workflow improvements
Automatic apply UEngine patch script
Need something to free mouse
AGalavantUnrealFPCharacter::ToggleMouseLock() doesn't work
LogMeshReduction: No automatic skeletal mesh reduction module available
Need Projectile impact sound
------------------
Doing
------------------
Collision detection for combat
Projectile impact doesn't harm entity
------------------
Done
------------------
Visual Studio Code integration
Finish hooking up sounds
Landed sound doesn't trigger
Use animation notifications instead to get timing perfect
Hook up ragdoll physics for deaths/unconscious
Figure out how to actually make animations in Blender (try Unreal .fbx export/import)
Note on .fbx import/export: I had to add the following to SSlateFileOpenDlg::GetFilterExtension:
if (!FilterExt)
return false;
(this is fixed on 4.17 now)
Add game control keybinds
Escape closes
P toggles Galavant pause/play game time
Pause/play might not work (component managers / agents behaving strangely, maybe after resume)
What does agent component manager do with triggers once plan is done? How to know plan is done?
statics don't work well with hot reloading
Need some sort of system which makes it easy to tell static shit to reload?
Just be careful, don't do static initialization without making it lazy initialization
Soak test editor - after ~1 hour it was looking pretty glitchy
This is an Ubuntu/Nvidia driver issue, I think, so I wouldn't worry about it
Save Jamfile documentation to repository
Clean way to manage Galavant -> Character interactions (e.g. how to properly handle ragdoll)
UnrealCharacterComponentManager (make something which can do Unreal character stuff via
observing Agents etc.; this also would be where debug text on hover etc. could go instead
of inside AgentCharacter)
Compile Unreal in Full Debug and see if it's usable
or, figure out how to compile the engine but not editor and run the game standalone in full debug
or just compile the GalavantUnrealLib in full debug and see if that does the trick
The best option should be Editor is compiled in development and full debug and GalavantUnrealLib
is compiled in full debug. Use regular development editor when things are going fine. Either
way, I should get the game standalone version working (if it has faster startup than unreal
engine and comparable times to hot-reloading, it'd be valuable)
For certain normal Editor GenerateProjectFiles should be DebugGame instead of Development
(development has no/shitty symbols)
https://forums.unrealengine.com/development-discussion/c-gameplay-programming/37587-debug-game-editor-and-devlopemt-editor-difference
Get standalone full debug game working
Some sort of resource system
Could be something like ResourceDictionary<key, ResourceType> resources
then things could stuff in things from load or even hard coded (via resources["new thing"] = {})
Combat System
Input
Make callbacks in player character which talk to combat system/do things. For now, maybe
make this step control timing and pull it out into combat later
Spawning very, very broken
Seemed to see multiple actors spawned for a single berry
Actor cloning issue; see ActorEntityLifetimeManagement error. Walk back and forth to
spawn/despawn entities
Actually important: Put Entity integration into AActor!
Finish lifetime management
Only call ActorOnDestroy if it wasn't previously marked for destruction (in Actor.h)
Current lifetime management doesn't prevent segfault. Wait until agents all group up for repro
UnrealMovementComponent segfault
https://wiki.unrealengine.com/How_To_Prevent_Crashes_Due_To_Dangling_Actor_Pointers
https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/SmartPointerLibrary/WeakPointer/
Remember to put Galavant-specific UE code into a patch or something
Agent goals are broken after refactor
May be fixed by actually hooking in HTNPlan to FindFood goal def (update: not fixed)
Put HTN Tasks etc. in resource dictionaries? Who owns them?
Spawning very, very broken
Segfault every time you replay in editor on scene component thing
Oh god, now too many things spawned! Forgot to add new AActor pointers to tracking...
Sublime "syntax" tag for build systems
Test PlanComponent event stuff
It seems to have broken things
Logging broke as shit
https://answers.unrealengine.com/questions/435366/linux-crash-in-stdstring-destructor.html ?
Chunks are fucked
HUD Minimap rotation indicator doesn't work right when pitching the camera
Added coloring for errors, but I'm not sure it works
Added UnrealMovementComponent Actor/Character spawning
First time you run the game or after hotreload it doesn't spawn anyone
This seems to have gone away
Added TrackActorLifetime, which is untested
Is this executed when pending kills will be sitting around, or right after cleanup?
Added EntityPlayerSharedData, which is untested
Added Interact to player, but does not seem to work