Just a hidden scratchpad.
- Investigate audio delay on Windows
- On a second thought, not as bad as I expected
- Was probably due to other applications taking control of the sound
- Exiting other apps and installing nahimic maybe helped
- Linux is still leagues ahead but w/e
- On a second thought, not as bad as I expected
- Zoom semantics (for the last time)
- FoW and FoV are different things
- Fog of war is occlusion
- Field of view determines the viewing size
- Obviously fog of war is clipped by the field of view
- But field of view settings are still effective even if fog of war is disabled
- Maps can specify both FoV size and if FoW is enabled
- There’s also FoW angle and FoW occlussion
- Technically could switch both
- FoW and FoV are different things
- arbitrary upscaling (only UI left)
-
verdict: use zoom on gameplay, let’s render GUI to a separate fbo and stretch it
-
as for the game literally nothing else is required except zoom=2
- will partially solve the resolution advantage problem
- note that we’ll have to adjust UI positions too, just zooming in won’t do
- fastest will be to stretch it with an fbo, as we won’t have to rebuild ui fonts
- do we really have to use an fbo though if we already virtually render it in 1920x1080?
- what about mouse position?
- will have to first scale the get_window_size value
-
- Fist fighting could work by spawning an invisible fist melee item but only during attack
- What if we have an invisible item without space etc that is only visible to melee system and drawer?
- but you also need to infer collider or no?
- What if we have an invisible item without space etc that is only visible to melee system and drawer?
- Default spawn generation for FFA-like modes
- later, GunGame will be team-based
- The “Race” mode for surf maps could count how fast someone entered the final portal
- E.g. 12000 entering velocity = +12 score, 1000 velocity = +1 score etc
- This way players could compete within a single loop
-
reverb area
- Do not hold name map in solvable
- Pointless to sync over the network
- serves no purpose logic-side as entity ids can serve identification
- Only callouts should have it
- however callouts can just have a flavour allocated
- Alright maybe specific_names will come in handy
- Right now it’s only used to map entity ids to nicknames
- But we shouldn’t draw it like that
- Yeah but let’s leave it like that for now, no time for this
-
black stroke for stamina/health circular bars because they’re invisible on brighter maps
- Show a tooltip with some basic info when hovering resources in filesystem view like the initial size e.g. 32x64
- length for sounds etc
-
Melee clash should: a) happen more often; b) and cancel damage
- Merging static colliders
- Purpose
- Performance: Less overhead for visibility system
- Although lights filter duplicate vertices, there would still be less raycasts if bodies were merged
- Physics precision: a wall-touching character will always hit the edges between two bodies, pretty annoying
- Weren’t much of a problem until now so it won’t be important until next MVP I guess
- Performance: Less overhead for visibility system
- Instead of a full-blown geometry editor, let’s auto-detect static colliders with identical materials that touch each other
- When should it be done?
- We thought of post-inference in the cosmos but you have no guarantee that some constituent entities won’t be reinferred on their own for some reason (e.g. there could be some script)
- Therefore it should be done on Editor->Cosmos conversion stage
- There we have more civilised ways of determining whether two nodes can be truly merged
- When should it be done?
- and then let the user compose complex shapes with just the primitives they come up with
- That way we don’t force precise geometry editing on the mapper
- and this is even easier on the mapper
- Purpose
- Enter while filtering with ImGuiTextFilter could always select the target
- E.g. go to node on scene
- But leave this for later as it might be too automatic of a behavior
- We never even used this filtering field before, people will just click on scene mostly
- We might need to rework the lights to use two radiuses
- But once we’re able to recreate cyberaqua etc
- Yeah I think a total rework for the light system will be necessary
- There’s no point making workarounds now because we’ll replace it with two 50%/100% falloff parameters
- and this will solve pretty much everything
- We’ll just tell people to place lights without changing defaults
- Except for radius because it can stay like this
- We might add half_radius too
- More intuitive than 50%_falloff and anyways we cant put % in the prop name
- Yeah for now let’s just disable editing of attenuations altogether
- Maybe we’ll even end up with just this model
- The rest works nicely, it’s only important that we can edit radius
- and cutoff alpha for rudimentary “intensity” scaling
- Make throwing headshots more consistent by considering e.g. the center of the rattle, the velocity of the rattle and head center
- Actually not the center of the rattle
- Whenever a bullet/thrown item is spawned, register current trajectory
- Except for homing missiles, not sure how headshots should be handled here, the old way could work
- Actually it could work - if it’s homing (so changed trajectory) never register the headshot, only on direct hit
- Except for homing missiles, not sure how headshots should be handled here, the old way could work
- Whenever a bullet/thrown item is spawned, register current trajectory
- All headshot/ricochet detection will benefit from it because there’s no measure that is more accurate
- Except for ricochets on the homing missiles, we should calculate it by the current velocity etc
- Even though realistically once it starts to “home” there won’t be any ricochets remaining
- Except for ricochets on the homing missiles, we should calculate it by the current velocity etc
- On ricochet, we’ll just have to update the trajectory
- Actually not the center of the rattle
- Entity types to add later once we won’t break abi
- CALLOUT WITH ITS NAME IN THE COMPONENT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Plain sprited bodies but with arbitrary polygons per-entity, obviously
- Dynamic decorations but non-organism like, we should have a specific entity for an organism
- Pointless for them to be processed just like static animations
- Filters window
- Visible
- (Checkboxes) Backgrounds Physical Foregrounds
- Selectable
- (Checkboxes) Backgrounds Physical Foregrounds
- Visible
-
When resizing, might be a good idea to determine edges based on total aabb of selected entities
- honor playtesting spawns
-
stronger highlight for icons? hover/activated is almost invisible
- Grenades could/should have very low restitution against player bodies
- Laser should switch to the knife/grenade being thrown when it is done with a gun in another hand
- Actually just disable the second laser then because there are both now
Editor final MVP (post MVP) once we can ditch old maps
- Deprecate ruleset maps.
- Rebuild arena when changing mode
- This will be necessary anyway with modes that can alter rebuild behavior (like enabling destroyed environments for zombie mode)
- Then pick only one mode
-
remove fy_minilab_reloaded-only clause from project selector where it’s scanning for official areas
-
Ensure all official floors have some footsteps set
- Full illumination maybe per entity too for foregrounds
- Otherwise we’d need two types of ferns because cyberaqua has a full illumination one
- wtf, warmup_theme shouldn’t be a flavour id but a sound effect input
- It actually needs to be a flavor because it’s synchronized through the network so it needs to be an entity
- it can’t be a sound effect
- However later we’ll just allow sound decorations to be entities, pointless to have invariants here (?)
- Remember it’s sent through the network in that case, although it’s just a few bytes
- We’ll need to entitize at least gain and pitch to be able to honor these modifiers in sound node and theme properties
- Well, fortunately we’ll easily be able to do this
- It actually needs to be a flavor because it’s synchronized through the network so it needs to be an entity
-
search for TODO in editor generally
- Markers should have letters per-entity just like factions
- we can only set them per-invariant right now, there are bombsite_dummy_b etc, this is bad obv
- Renames for weapons!!! We should really decide once and for all about some names so that they’re future-proof
- Best to avoid two-word names except in rare cases
- We can use some polish names because they’ll be sounding interesting to foreign players
- elon_hrl -> rocket_launcher (we though
- Good PR because it’s then obvious to anyone new to the game
- Warx fq12 -> warx (there’s no other single-word intuitive name for an automatic shotgun)
- datum_gun -> datum
- ao44 -> revolver
- actually let’s leave it at ao44 because we’ll use “Revolver” for something stronger
- hpsr -> awka
- lewsII -> lews (there’s no I anyway)
- amplifier_arm -> amplifier
-
Sounds should have per-entity sound effect modifiers (we implement it in editor already)
-
Resizing animations
- Watch out for MAX_IMAGES_IN_INTERCOSM
- Let’s not allocate this statically
- Check what happens when we overflow the texture size
- with some giant gif for example
- we can later implement the optimizations like separating atlases
- AIR_DUCT -> VENT in official resources
- We can’t do it now because it’s gonna break maps
- Let’s make sprite’s special effect a boolset
- and not just have one effect speed multiplier
- for now one will just implicitly override another
- Move render invariant to component, instead of allocating flavors for each override
- WE STILL NEED AN OVERRIDE FOR physical->non physical.
- Entire render component could fit into two bytes
- Will even be faster to calculate render layer because won’t have to refer to flavor
- When we componentize render, we can still have editable defaults in the resource
Others
- Reset properties to default under Right-click
- Could be easy but arguably not needed right now
- Most of node properties won’t have the concept of default
- Resources, maybe, still they have the reset button so one can always check and undo
-
Review the TODO: comments especially inside editor sources once we’re close to MVP
- Atlas
- FIRST into neon maps and diffuse
- Literally even neons have separate drawcalls for foreground, dropped items and
- Then trivially separate into items/background stuffs/foreground stuffs
- Since we know these will always be drawcalled separately
- We control rendering, it’s not like unity so we should really be good to go
- And boom you have tripled the amount of textures we can contain
- Equip z prawej w jak w ceesie najlepiej
- equip load pasek bardzo widoczny nad wszystkimi slotami
- W winter stories czy czymś takim elementem gameplayu jak nie masz ammo jest rzucanie melee i zbieranie z podłogi z powrotem
- jak w duelach
-
More camera modes for Spectator
- Multiple official servers
- Picking best
- Do this once we have pinging implemented, which we want with the list of community servers
- Consider a tab for “official” and “community” in browse servers
- Actually maybe no because it’d be nice to have it condensed and compare best pings quickly
-
“Favorites” tab
- Quick play
- From servers that have any players, find the one with best latency
-
Make server save RCON changes to the config
- Inventory improvements
- When a melee weapon is involved in akimbo, pressing its corresponding button results in a throw
- When two melee weapons are wielded, pressing its button results in both thrown at once
-
“Are you sure you want to quit?” from the ingame main menu
- fix vim’s premature build successful
-
implement a keycombo to dump and open current logs (multiple clients)
- Nerf PRO90
- less bullets please
- Make the bomb a lot lighter
- Fix bomb planted reward
- Game Guides
-
Recon grenade
- We have to renew that certificate or people will be unable to update the game
- somehow it still works
- as it’s done over ssl
- Randomized tips
- Stay still to regenerate stamina faster.
- Double-tap R to drop the old mag for a faster reload. Near-empty mags are dropped automatically.
- Melee blows are stronger when you run.
- Electric Shield lets you live longer, but slows down your movement.
- Config folder with delta configs
- like in linux
- sorted by filenames
-
It would be nice if we didn’t crash on loading a corrupted map, at least if we manage to hit an ensure before sigsegv
-
Pulse “your own” color for a funny effect
-
Fix owner tracking for grenades as they get deleted and the death summary can’t know whose that grenade really was
- Sounds for grenade throwing
- Flashbang out
- Throwing frag
- Frag out
- EMP
- Interference!
-
maybe don’t save the last launch unless in debug
- problem: footstep smokes might still be visible when we artificially increase zoom
- well the client itself knows everything anyways
- so we can force the zoom to be exact
- if someone has more than 1920x1080 they technically have the advantage but the footsteps would still be hearable
- one could still see some distant items thrown but come on
- if someone has more than 1920x1080 they technically have the advantage but the footsteps would still be hearable
- ImGui popup for progress on loading atlases
- the imgui atlas itself will load quickly enough
- Initial popup about the zoom change
- or scale automatically to the server’s fog of war size?
-
Consider implementing a radius range for item pickups
-
Shouldn’t we always calc reloading movement to show context-lessly?
- Force proper drawing order of attachments as this really looks bad on the rocket launcher
- At least on guns?
- Lag estimates for other players
- send a byte for count, and a byte for each player
- they can be consecutive and we don’t have to include ids
- the order of existent ids implicitly known
- can be sent over the solvable stream
- later we could introduce advantages for players with higher ping, although may not necessarily be good idea
- send a byte for count, and a byte for each player
- Detect when the initial state is being sent to optionally display progress
- Possibly by returning some info from ReceiveBlockData struct
- Properly implement bots
- Now they can break the client logic
- large block sending augs api
- asynchronous: deliver_large_data
- large_data_delivered() const
- always one large data is sent at a time
- enum-less variants of enum_boolset and enum_map
- useful for quick mapping users in an array
- So that we can change tickrate dynamically, timing logic can, instead of steps, simply hold the floating point (double) values of the seconds passed
- alternatively hold unsigned long longs?
- also store last_fixed_delta for easy cosmos::get_fixed_delta access
- Usability fixes to editor
- Setting specific names to entities
- Complex instantiations
- I struggle to see any that are necessary before DM
- even manual transfers arent that necessary
- Guns with magazines already
- For now expose transfer GUI?
- I struggle to see any that are necessary before DM
- enum_boolset begin and end should probably return enums
- simpler json i/o
- no need for for-eaches
- nice exercise for iterators
- When joining a game, allow choosing the flavour of the character
- Each might have completely different properties or animations
- Effectively implements a class
- Arbitrary pasting of entities
- Vastly useful for importing stuff from testbed maps into existing ones
- Let alone between community maps
- This is pretty complex.
- If we allow pasting across workspaces, we might even have to copy actual asset files.
- Won’t matter until after deathmatch stage
- Surely?
- The editor will have to construct the command tree, like
- paste_flavours + paste_entities, if no requisite flavours are found inside the project at the time of pasting
- the clipboard will have both the entity and flavour
- the editor’s clipboard can actually become…
- paste entity flavour + paste entity command, stored, waiting to be executed!
- the move itself won’t need to be stored
- paste entity flavour + paste entity command, stored, waiting to be executed!
- paste_flavours + paste_entities, if no requisite flavours are found inside the project at the time of pasting
- Cut is just copy + delete
- Vastly useful for importing stuff from testbed maps into existing ones
- Allow to change the tickrate in the non-playtesting?
- This will be a session setting, really
- We’ll just restart on re-tick
-
Overwrite notice in editor
-
Refactor: conditional log macro
-
Always initialize the hotbar with some values if it is not yet initialized
- Commands refactor: separation of undo and redo state
- redoer and undoer objects
- each has only the required information
- redoer returns an undoer
- redo state is always the same
- redoer and undoer objects
- Balance colliding bullets so that damage to be dealt is subtracted from the stronger bullet
- Possibly reduce trace size then
- Local setup should record session live
- This is really important in the face of bugs.
- Or just get rid of test scene setup for now and let it by default launch a scene in editor that records inputs
- Fix rendering order of dropped gun attachments
- Also make it possible to always render them under?
- consider having entity guids in components instead of entity ids for simplicity of network transfers
- question is, won’t we anyway be sending the whole pool state?
- it’s just several bytes overhead per entity
- there ain’t really that many and it will be greatly useful
- question is, won’t we anyway be sending the whole pool state?
- Fill new workspace with test scene essentials
- This would prevent image ids in common state from being invalid
- Probably less checks to make, in GUI as well
- Can make those the first in test scene image enums so that we can stop importing images after some point
- This would prevent image ids in common state from being invalid
-
copy gfx and sfx folders on save as…
- let particle definitions be split into the invariant and variant parts, like components
- pro: better cache coherency
-
templatize some dangling memory stream arguments
- in go to dialog, make selection groups appear as the first
- later we might just make a variant of several types instead of entity_guid in match vector
- fix saving of the editor view state when the work is saved to some non-untitled location
- notice that, we might later introduce some caches for selections to improve performance
- e.g. only always calculate the selection’s aabb and rotation centers once
- we might also want to encapsulate setting panning cameras and selections to have stacks
- where we’ll able to set modification flags easily
- therefore let’s do it when we get to these stacks.
- because camera & selection state isn’t all that critical
- and untitled work for testing is always saved anyway
- because camera & selection state isn’t all that critical
- we can just always write the camera to disk?
- it’s bad though as it incurs disk activity every time
- and selection state isn’t that small
- we could either set an “is_modified” flag or track it in history
- not much modification points for selections, so quite viable
- notice that, we might later introduce some caches for selections to improve performance
-
pass display size and implement augs::get_display
-
some hint for windows unicode in imgui: https://github.com/ocornut/imgui/issues/1060
- finish work with atlas and sound regeneration
- regenerate only seen assets
- always load diffuse map with the corresponding neon map to avoid unilluminated objects near the camera…
- …even though many diffuse maps nearby have been loaded
- perhaps we won’t really need the separation between diffuse and neon, because maximum atlases will be huge anyway
-
Shake on shooting with a sniper rifle
- Dashing
- Assigned to space, since we don’t have jumping anyway
- pure color highlight system could be used to add highlight the dashing entity
- Gradually increase walking force over time
- The more the speed during dash, the stronger the dash
- Note: drone sound (sentience sounds overall) will be calculated exactly as the firing engine sound
- Sentience humming caches
- These don’t need their playing pos synchronized
- Since mouse motions will probably be the bottleneck of network communication, both coords will usually be able to be sent in one byte
- Range would be 0 - 16
- There would be a bit flag for when it exceeds the range
- Which will actually be often and then we might use two bytes
- mouse motion should never really exceed 255
- will also make it harder to use aimbots that instantaneously change mouse location
- mouse motion should never really exceed 255
- Which will actually be often and then we might use two bytes