Working on adding a system to load state from a TOML file!
Saving is not yet planned, though. This is for easier syncing with NASA Horizons.
Log in to leave a comment
Working on adding a system to load state from a TOML file!
Saving is not yet planned, though. This is for easier syncing with NASA Horizons.
Log in to leave a comment
Solved!
Who’d’ve thought the real problem was in the far-away terrain collider handler?
Lol.
Lmao, even.
I’m keeping the Verlet integration tho. Δt⁴ error for the price of two Δt² substeps is hella worth it
I made a basic implementation of Velocity Verlet to address the inaccuracy. It seemed to work in the integration test, but the orbits in the produced binary still seemed unstable/spiraling. I’ll need to figure out why that happens.
Log in to leave a comment
I’m having this issue where the vessel just flies away instead of staying in a stable orbit. I guess I’ll try to debug it.
Log in to leave a comment
Finished the speedometer!
What next?
We’ll see!
Log in to leave a comment
Working on the logic for formatting the speedometer!
I also refactored the SI prefix to its own enum
Log in to leave a comment
Working on the UI for the speedometer!
Sorry I’ve been taking kinda a break lately. For some reason I’ve been getting distracted by other stuff.
I’ll try to be more active in the future.
Log in to leave a comment
Added keybinds to altimeter for switching modes! Also, improved the control mode UI a bit.
Log in to leave a comment
Mobile altimeter done!
Log in to leave a comment
Nevermind, a more pressing issue: the altimeter covers too much screen space on mobile!
Now I’m trying to make it more responsive.
Finished the altimeter!
Next I guess I’ll try to hook it up to the menu control mode.
Log in to leave a comment
Implemented switching between reference frames!
Log in to leave a comment
Added display for different selectable reference frames:
Log in to leave a comment
Working on calculating the altitude!
Getting the distance to the centre of the celestial body and getting the sea-level altitude is easy. Getting the ground-based altitude is not quite easy…
Log in to leave a comment
UI done! Time to make logic to update its value.
Log in to leave a comment
Finished the altimeter inner formatting logic! Next, I’ll need to make it actually show up in game.
Log in to leave a comment
Improved visibility and fixed some bugs with the overlay!
Next I guess I’ll try an altitude display.
Log in to leave a comment
The prograde/retrograde overlay now works! I just need to make it clearer and maybe add a needle.
Log in to leave a comment
Added a test for importing icons
Log in to leave a comment
Added a basic svg to png processing build.rs pipeline! Now hopefully I can start using regular ImageNode.
Log in to leave a comment
bevy_vello had issues with Z-indexing, so I’m trying out bevy_prototype_lyon now and sadly it doesn’t appear to have a UI version; just a Sprite version that can’t quite be positioned using Node.
I think I’ll have to make a build script to rasterize SVGs into PNGs, then use that for the icons.
Log in to leave a comment
Made the icons work! Not quite visible at the moment though, so I’ll have to figure out a way to improve its visibility.
I used bevy_vello for this, but maybe I should’ve used bevy_svg instead?
Log in to leave a comment
Working on adding prograde/retrograde markers to the oribar!
Right now I got something scrolling with the oribar. Next I’ll need to actually get the motion of the vessel and use that. Not to mention the SVG icons I need to use for the icons.
Log in to leave a comment
Switched to JetBrains Mono for the oribar instead of WDXL
Added a needle and indicator to the oribar!
Would be cooler if it used a monospace font, though.
Added numbers to the oribar!
Log in to leave a comment
Added a basic rotation indicator that I call the Oribar (Orientation bar)!
It’s based on a similar principle to KSP’s navball but for 2D instead of full 3D.
Log in to leave a comment
Created a GitHub CI pipeline for this project!
It’s now available on https://not-a-normal-robot.github.io/hack-club-space-program/
Log in to leave a comment
Did a round of small refactors and changed the background of the main menu to Surface instead of pure black.
Log in to leave a comment
Fixed some issues with buttons not triggering properly upon click
Log in to leave a comment
Got tab switching working! But it’s a little buggy, so I’ll need to fix some stuff.
Log in to leave a comment
Improved the look a little bit, but I haven’t quite finished the tab switching handling.
Log in to leave a comment
I got article loading working! Next up, I have to get tabs working.
Log in to leave a comment
The main element is now scrollable! Next, time to add some sections and texts.
Log in to leave a comment
I just needed to use Display::Grid on the root element, and structure things a little differently, and now the aside is looking scrollable and responsive!
Next, I need to make the main element scrollable.
Log in to leave a comment
Trying to add scrolling, but it seems it doesn’t work yet. I need to figure out how to constrain the text container’s size somehow.
Log in to leave a comment
Added main and aside parts in the about menu (also responsive)!
The main part is for the texts, and the aside part is for the list of tabs, but I haven’t implemented it; I was focusing on the layout and responsiveness.
Log in to leave a comment
Made the about menu more responsive!
Log in to leave a comment
Apparently I just forgot to add in a camera.
After a bit more cooking, I managed to make a very empty UI layout for the about page!
Log in to leave a comment
I improved my activation detection (pointer click or enter/space on tab-selected button)!
On a side note, I tried to add an about page but something seems to have gone awry… The window no longer updates when I press it for whatever reason.
Log in to leave a comment
Rewritten focus changing code!
Now, the focusable data resource is only updated every time one is removed or added.
It also uses a HashMap and Vec combination for fast O(1) lookups, at the cost of O(n) insertions (which is fine because n is often small-ish)
Log in to leave a comment
Fixed issue in test harness that caused essential systems to not run and tests to fail
Log in to leave a comment
Added an i18n library for better future translations!
Currently, only English is supported, but this will make future translations a lot more feasible.
The library I used is i18n-embed.
Log in to leave a comment
Added tab-navigation + pressing the button using Enter/Space. (Easy to make, but man did it take a while to refactor using a macro)
Also, made the control UI in the game scene use the new fonts since I removed the default font (I’m not gonna use it)
Log in to leave a comment
Working more on the main menu!
I’m trying to figure out how to vertically centre the text in the button, but still make it light up on hover/press.
Log in to leave a comment
Got font loading to work!
Next: Color scheme, title logo
Log in to leave a comment
Main menu functionality done
Next: Fonts, color scheme
Log in to leave a comment
Designing a main menu prototype!
Right now it’s already pretty responsive, but I’ll need to add fonts, functionality, and of course, improve the color scheme
Log in to leave a comment
Finished the control flow for the main menu (and possibly other scenes), but I haven’t added a proper UI for it.
Here’s me switching back and forth between the main menu and the game scene, note how the state resets every time I go to the game scene
(Saving and loading isn’t implemented yet)
Log in to leave a comment
Added camera movements! (+ resetting it)
Log in to leave a comment
Added a way to switch what the camera is attached to!
Log in to leave a comment
Tried to make a multithreaded WASM build, but it’s apparently not supported yet, doesn’t work on Chrome, and isn’t any faster on Firefox.
Oh well.
Log in to leave a comment
Added a loading screen for the web build
Log in to leave a comment
Added a wasm-opt step
Log in to leave a comment
Rewrote the web build script in TypeScript
Log in to leave a comment
First signs of the WASM version working! How exciting!
Log in to leave a comment
Improved terrain colliders a little
rn I’m working on compiling the game to WASM so that’s cool
Log in to leave a comment
Collisions now work! Mostly!
Just need to add a bit more padding so it’s always underneath the vessel.
Log in to leave a comment
Note: Zooming doesn’t scale the physics debug renderer. This is known and it’s a WONTFIX
After a LONG time trying to debug, terrain colliders seem to… acknowledge the intersection and NaN its way out of there. No clue why that is. I’ll have to spend more time debugging.
Log in to leave a comment
Added two more tests; new logic module now has two functions left untested (which I should get to unit-testing soon enough)
Log in to leave a comment
I can’t just feed Rapier the tens of millions of terrain colliders per planet, of course! I’m experimenting a way to detect the range at which a vessel resides, and only generate the detailed terrain colliders at those ranges. No visuals or anything yet, but the tests are going well, for now.
Log in to leave a comment
Terrain rendering finally works! Now time to implement terrain colliders, I guess.
Log in to leave a comment
After more debugging and trying things out, I can confirm the problem is likely to do with the update_lod method for whatever reason.
Log in to leave a comment
Wrote a unit test for something and it seems like that could be the issue!
Log in to leave a comment
The terrain system still needs work… Not quite sure what’s happening here.
Log in to leave a comment
Uhhh what is happening?
Log in to leave a comment
Did quite a bit of work integrating the terrain generator to the mesh.
I haven’t seen its generation yet but all the tests pass. I’ll try to see if the rendering works fine in the actual application. After that I’ll need to somehow handle terrain collisions. (i.e. lithobraking, ha!)
Log in to leave a comment
Worked on the terrain rendering system! Nothing to show yet in terms of render output, but I’ve been making progress on shaping the code for it.
Log in to leave a comment
Refactored the entire terrain code, and the tests still work! (Hooray!)
Okay, NOW I think it’s time to integrate it with the celestial bodies.
Log in to leave a comment
Reworked how tests work!
Log in to leave a comment
Index buffer seems to work well! Time to hook it up to the rest of the codebase?
Log in to leave a comment
To make the index buffer I’ll need to decide on the primitive topology to be used here.
Although TriangleStrip seems to reduce index length, it seems to increase the number of tris drawn. And also it seems to be more complex overall, so I’m going with TriangleList.
Log in to leave a comment
Implemented the vertex index getter! Time to work on the mesh stitcher!
Log in to leave a comment
I think I’ve figured out all there is for generating the LoD terrain, now I just need to figure out a way to stitch them all into a mesh.
For this I’ll need to figure out how to get the index of the beginning and end of each LoD level somehow. Back to Desmos I go!
Log in to leave a comment
Implemented the Desmos algorithm in Rust!
I just need to figure out how to stitch the LoD parts to a single Mesh.
Log in to leave a comment
Made a prototype of the LoD algo in Desmos! Time to put it to Rust I guess.
Log in to leave a comment
Currently thinking a lot about terrain generation and LoDs.
I think I’ll make one with 6 levels of LoD, each being 128 vertices and the next LoD being 16× smaller (therefore 16× finer) than the previous one.
This means the highest one will be sized at 1/16777216 of a revolution, and each vert would be spaced out with 1/128 of that.. This is less than a meter for a Jupiter-sized planet.
Log in to leave a comment
Made a basic control to rotate the camera!
Log in to leave a comment
I did some refactoring and stuff and plan to add basic camera controls! I’m thinking it should be modal kinda like Vim.
Log in to leave a comment
Tried to hopefully reduce the amount of imprecision that happens with the current rail to sv thing, but it ended up making things worse. Oh well.
Log in to leave a comment
Fixed! Apparently I was applying some position/velocity adjustments twice.
Log in to leave a comment
The test revealed a flaw! I’ll have to find the cause and fix it.
Log in to leave a comment
After a lot of thinking and discussing with gpt I think I’ve managed to formulate a good algorithm to update the state vectors of on-rails objects. I’ll still have to write tests for this, though!
Log in to leave a comment
Still working on implementing on-rails movement propagation.
During which time I found this peculiar issue where since I don’t derive Copy on my Orbit structs, some things are just not possible in constant-time.
For this reason I’m adding a copy feature flag to my keplerian-sim orbit library so that users can opt in to deriving Copy.
Log in to leave a comment
There’s nothing wrong with the friction, it’s just that round objects tend to move like that…
Sometimes I’m reminded how much common sense I’m seemingly missing
Log in to leave a comment
The problem? The celestial body’s too small and too massive. It’s like it was a black hole!
Anyways, I’m now using a celestial body akin to the Earth. It kinda works? But the friction seems too low for whatever reason. I’ll have to figure out why.
Log in to leave a comment
Tried to implement Newtonian gravity. I guess it’s a little too strong? I’ll have to figure out what went wrong, because the velocities are extremely high for whatever reason..
Log in to leave a comment
I think I’m done for the day. I implemented writing the “on-rails mode” information. Haven’t done anything with that value yet, though. I’ll still need to test it first before adding more stuff on top.
Log in to leave a comment
Working on writing from state vectors into on-rails information! I decided there can be three types on on-rails state:
Commit still pending, and tests are also yet to come!
Log in to leave a comment
Currently trying to design how I’d implement on-rails and orbits in general (hence the errors)
Log in to leave a comment
It’s a basic countdown project until the end of 32-bit signed Unix time. Handling time and durations is a lot more difficult than I thought, especially because of leap years and irregular month lengths.
Project shipped! It’s available on https://not-a-normal-robot.github.io/EndOfTime/
Log in to leave a comment
nice plz give me vote also and follow me
I gave up and used my own implementation instead—this time, handling leap years better
Log in to leave a comment
yoo thats fire!
nice plz give me vote also and follow me
very cool!
Looks like how I handle the mixed mode was quite naïve and not quite correct, because it doesn’t handle leap years correctly. I’m planning to use date-fns (https://date-fns.org/v4.1.0/docs/differenceInYears) instead to correct for this issue, however, integrating Closure Compiler with NPM packages seem a little more complicated than expected, so I’m trying to modify my build script to account for this.
Log in to leave a comment
Added favicon
Log in to leave a comment
Improved the CSS again
Log in to leave a comment
Improved the CSS
Log in to leave a comment
Fixed mixed mode, it works now!
Log in to leave a comment
Worked on JS micro-optimizations, now it’s at 2660 bytes minified from 2713 (~2% improvement). I guess I’m too much of a perfectionist—
Log in to leave a comment
Got the countdown working partially. There are spacing issues and the Unix counter isn’t ticking up yet
Log in to leave a comment
Basic UI done, functionality incomplete
Log in to leave a comment
Made a basic project template, time to work on it
Log in to leave a comment
Refactored entity creation using a builder pattern. That way I don’t leave out certain things by accident.
Maybe now I can work on adding Keplerian orbit physics?
Log in to leave a comment
Broke up the code into smaller, more manageable files
Log in to leave a comment
After more bugfixes, rigorous code examination, refactoring, and retesting, all tests on the reference frame logic is now complete! Now I should work on integrating Keplerian orbits with it.
Log in to leave a comment
Found the issue! Just needed to make the celestial body KinematicVelocityBased instead of Fixed.
Log in to leave a comment
Okay in the test the collisions work kinda fine but in the binary it barely does anything…?
This is really weird
Log in to leave a comment
After some careful analysis adding dbg! prints and stepping through the code, it seems like it’s got to do with Rapier’s collision detection mechanism. No clue why it’s triggering here, the objects should not have overlapped. In fact, it should never overlap.
Log in to leave a comment
Fixed a bug where rigid-space velocity doesn’t get updated from root-space velocity. Still gotta figure out what’s wrong in this test, though. No clue where it’s getting that number from.
Log in to leave a comment
Fixed that, as well as a bug where root velocity gets applied to the root position but doesn’t use delta-time. Still got more stuff to figure out, though!
Log in to leave a comment
I’ve encountered one of the possibly-many problems I need to solve: I forgot to update/generate the rigidspace position from the root position. Whoops!
Log in to leave a comment
I’ve yet to make the origin-shifting algorithm work, so I’m looking to try to debug it. However, I believe it’d be easier to debug in a more minimal environment, so I’m preparing a custom integration test framework. to step through the simulation and see what’s going on. This is also useful to prevent future regressions. So far, it’s looking great!
Log in to leave a comment
More work on reference frame conversions!
Log in to leave a comment
Got a basic window working in Bevy! I’m new to this, so I’m taking my time reading tutorials and whatnot.
Log in to leave a comment
Refactored benchmarks, fixed documentation errors, and added some missing features. Now the Criterion benchmark reports show throughput amount!
Log in to leave a comment
All checks pass, and keplerian_sim v0.7.0 is now live! https://crates.io/crates/keplerian_sim
Log in to leave a comment
I made clippy stricter, and there were lots of errors, but I’m working through them right now! https://github.com/Not-A-Normal-Robot/keplerian-sim/pull/34
Log in to leave a comment
More tests, more subtle bugs. This time, GitHub Copilot found this bug that slipped through testing, and so I added a testcase for it.
Log in to leave a comment
If you notice the screenshot colors seem washed out, it’s because of KDE’s Night Light feature.
I’m glad I decided to make unit tests. I caught a subtle bug before pushing to crates.io.
Log in to leave a comment
All tests pass! Only the doctests though. I have yet to make new unit tests for the 2D orbit logic.
Next up:
Log in to leave a comment
Before I can work on the game I’ll need to modify my keplerian orbit library (https://crates.io/crates/keplerian_sim) to have specialized 2D orbit structs. It’s currently very much in the experimental stage at the moment.
Log in to leave a comment
Hmmmm, it posted 3 of the same image. Whoops!