2024
Settings
The game needs a settings menu and then an option to enable and disable debug mode.
We will use the debug mode to switch between enabling and disabling the events, logs, data, ect… through-out the game.
So we extended out the UserSettings
interface within the types.ts
with a couple new variables.
export interface UserSettings {
tooltipItem: UserGenericMenu;
submenuItem: UserGenericMenu;
tooltipNPC: UserGenericMenu;
isStatsMenuCollapsed: boolean;
isSettingsMenuCollapsed: boolean;
debugMode: boolean;
}
Under the Settings
, we want to toggle the debugMode on and off, after we get that setup, we can move forward with updating the different classes to pass around the debug messages?
The initial settings panel will look like this:
const SettingsPanel: React.FC = () => {
return (
<div className="transition transform duration-1000 ease-in-out">
<div className="mb-4">
<h2 className="text-lg font-semibold mb-2">Settings</h2>
<p className="text-sm">Additional settings can go here.</p>
</div>
</div>
);
};
After loading that new settings panel, we can add a new debugMode
that will help us handle any of the debug messages. Now we can go back and extend out the eventhandler.ts
within the @kbve/laser
package to utilize the debug mode and send back any additional information based upon the events that are being triggered.
Stats
We want to move the stats section into its own modular function that we can extend out in the future. The issue that we might run into is the race condition of updating the stats and making sure that they render on time, yet we also do not want to continuously render them. The render should only occur when the stats are changed.
We could try to build a quick progress bar for the stats?
Notification
I was running into this weird bug for the Notification function that we had built.
It turns out that the issue was because there is another Notification
class that already exisits, thus causing some naming conflicts.
For now, the solution was to rename our Notification to INotification
and move forward with the dynamic imports.
eBPF
One of the areas that I was looking to expand the Rust API into was the eBPF
area, maybe integrating the packet level of filtering and management. This would make the multiplayer aspect of the game easier but also allows us to look into the anti-cheat concept a bit more, since we could see all the packets that are coming in and out. Once more, this is just a proof of concept but we can work out the kinks on a later date.
The plan will be to extend out the API to include Aya and some level of eBPF integration, basically our own internal ingress and then we can place an external ingress on top of it via Traefik, all of this bundled into a Kubernetes cluster. I will draw out the map and prepare the next adventure into this field near the end of the summer.
Character There seems to be an issue with loading the characters that are a single sheet, I am thinking that either the image settings are wrong or my configurations for the image are wrong. The best thing that we can do for now is keep track of this frame bug and then come back to it when we finish up some of the core features for the game.
Okay it looks like this is no longer an issue and it was in fact patched. I believe we had an older cache and updating / clearing it all helped resolve the frame issue. Next we will need to start loading in new characters and making sure that we do not run into any issues with that.
Dice One of the future improvements that we could make with the dice rolling is to optimize the disposal of the threejs. I am not too sure what the best course of action would be, maybe instead of removing and then bringing it back, we could find a hybrid approach where the dice can stay ready to be displayed? We could move them off canvas and then move them back in whenever we need to roll them, I believe we can get a better answer to this once we get combat into staging.
2023
- 6:30am - Started to add state management through nanostores into the React Native application.
- 6:41am - Removing the
react-hook-form
from the RentEarth repo because I was having some issues getting it to work with the Tamagui framework. There was a solution to use a 3rd party plugin, but I felt like it might best to step away from that for now and use write something a bit more simple. - 6:50am - Renaming the
/auth/
path to/account/
to keep the same naming convention across the multiple tenets. I should note that I am thinking of renaming the RogueJester to RentEarth and pivoting the gaming to be a bit more focused on this concept. It would be an interesting shift per say, but it seems that the marketing potential is definitely higher with this name. I suppose the RJ is a codename for the project and is not the final title name. I find it interesting how even the name of a video game can help determine its future, at least to an extent that falls under the branding. - 8:27am - The next step within the RentEarth saga will be to build out the state / storage, I am thinking that I might use nanostores library for this, as it also has a very solid task system.
- 10:52am - I created an issue ticket related to the storage situation, it would be called inside of various platforms from React to our mobile apps to Unity. Thinking through how we would go about setting it up, I am also thinking that while we do it, we should also build a proof of concept. I suppose we could look into making it a npm package? That way we could reference it anywhere we would want.
- 2:30pm - Taco bell is a double edge sword and in some cases the most dangerous offering that a person can give. We know how bad it can be for the body but if anyone offers to pick you up some taco bell? Are you going to say no? But that is something that I need to learn and understand. It is okay to deny food, definitely if afterwards you know your friend next to the da pepe will suffer.
Quote
Every time you smile at someone, it is an action of love, a gift to that person, a beautiful thing. — Mother Teresa
Tasks
- [ ]