Activity

Seven

Finally actually finished the conveyors. Apparently they still didn’t work properly as of my last devlog. The solution was the reversal of one multiplication statement. When trying to rotate vectors in Godot, if you want to rotate in all axes, you need to multiply by global_transform.basis, but apparently THE ORDER THAT YOU MULTIPLY IN MATTERS. Why? WHY? Thats not how I was taught multiplication works.
Either way, before, it was Vector3(0,0,-1) x global_transform.basis and
the fixed version is global_transform.basis x Vector3(0,0,-1)
I think im mostly done with awful vector math. Well, I still have to make more belts and make machines, but I don’t have to figure out the math as much.

0
Seven

Three hours to make a conveyor belt. I swear im not inflating. This was really hard. I tried so many things. I eventually came around to the realization that the only way to do this was to get the total direction of conveyors acting on a package, and apply speed based on that. Before I figured that out I tried so much else. I tried checking when an object leaves and enters a conveyor, but that doesn’t work because objects enter a new conveyor before leaving the last one. I then tried applying the motion directly, while it was on the belt, but that didn’t work either.
I tried so many other things that I can’t even remember now, and came across some wild issues. I’ll attach some videos of me accidentally sending boxes to NAN. (you can still see them because Godot panics and just keeps showing them where they were)

Also I had to use a bit of AI to figure out how to apply the motion properly, because you need to maintain physics, while applying motion. Sorry, but at least theres only like 3 lines of AI code.

Also I love 4.6. Only wish is for editor level plugins or git support. Apparently the Forward+ renderer compiles to web as well now? Didn’t know, but it let me.

1

Comments

Seven
Seven 3 days ago

I attached the wrong vid for the first one lol
sorry, click to the second video

Seven

Conveyor belts are hard. Really hard.
Thats all i’ve been doing this whole time (aside from basic project setup)
The problem is that I basically need a moving platform under the conveyors, but that doesn’t work because a platform ends. So I first tried using gravity, as seen in the video below. That meant that it constantly accelerated to really high speeds while on the conveyor. Next I tried using force applications because I am using rigid bodies for the packages. That didn’t work either. I’m out of ideas so I’m posting this devlog.
I also got some basic player movement done, and setup a testing level.

0
Seven

Shipped this project!

Hours: 6.92
Cookies: 🍪 105
Multiplier: 15.17 cookies/hr

This was admittedly more work than expected. I had to find a parseable CVE source, and had to fight with Slacks SDK. I learned a bunch about slack bots, that I am using for more personal projects, and learned about the suffering that is building an installer for a program. And this was a simple installer too.
I may update this in the future, with features like DM support, but that’s the future, and I want to work on other things right now.

Seven

Making an installer for a program is really hard apparently lol.
I started by writing it in python, then decided to switch to bash for some reason I can’t remember now.
I started with the basic logic (whats your bot token, what channel), and then moved on to installing dependencies. Apparently this is kind of annoying to do in an automated capacity, and doesn’t like to be consistent.
Things I had to fix and work around:

  • Some distros don’t have Python Venv installed, had to add that to the installer
  • Had to fix the apt command several times
  • Echo doesn’t support formatting, had to change to printf
  • Had to fix a pip requirement I missed
  • Had to fix the .env file creator like 3 times (I needed to use ai for this, sorry)
  • Had to fix the crontab creator twice (also needed ai help with this)

Moral of the story is that I don’t know what I’m doing in bash and I should’ve just made the thing in python.
Also because the fastest way I can get the new versions of the installer to my linux machine was to commit them to github, there are like 10 extra commits from this madness.

Attachment
1

Comments

Seven
Seven 6 days ago

Wait
The photo of it working didn’t upload. Sorry everyone, the bot works check the slack channel listed in the demo

Seven

Small changes to the remote nodes, they now actually broadcast the data to a predefined web endpoint.
A bunch of work on the central node. It now is a functional flask server, and can register devices in a mysql database upon request. This was a ton of work for me, because I have never built any sort of website, nor do I have experience with mysql.
I also got the very start of the resource transmission working.
The central node also has the capability to reject the device registration, should a device with that name already be registered. This is the type of thing that I will implement for use with the remote node installer, where it will try to pick a name, and tell you if it worked or not.
The video below is what I have working so far for the device registration. The program shown at the start is a mysql database GUI, which has been very helpful. (sorry for music in background)

0
Seven

Project setup among other things.
Got the remote node data gatherer code made. Now I have a function that gets all the relevant info(for now) about a system. That was the easy part. I’m honestly going to keep doing the easy stuff, like finishing the remote nodes, before even starting the central node. Is this a bad idea? Yeah, probably. Am I going to do it anyway? Yes.

Screenshot is all data extracted. Also I have discovered psutil, and I love it.

Attachment
0
Seven

updated the readme, fixed a bunch of bugs. Added proper and nice formatting to the messages. Attached the slack part to the main script, so it is now in a functional state. Updated the readme with install instructions, despite them being mostly useless to other people, because the slack channel is currently not configurable. I think my next task is to make a nice-ish installer, so people can run it themselves. (even though I also plan to add dm notifications in the future as well)
(sorry for no photo of bot working, need to get back to working on this, aswell as annoying install things I fixed)

Attachment
0
Seven

Made the CVE parser and maybe have a functional change scanner. I literally have to wait for a new critical CVE to get published to test it though.
I rewrote the slack part of it to let me just send messages whenever.
The part that checks for new CVEs is pretty simple. It checks if there is any difference between the stored previous list, and the current list. It then checks how many new CVEs there are by looking for the old first CVE in the new list. It then gets all the data from the new CVEs, and posts them to slack. This is all in theory as I can’t really test it until a new critical CVE is published.
Also the CVE data extraction hasn’t been implemented yet. I’m almost finished, but I want to format it with nice markdown.

Attachment
Attachment
0
Seven

Got the setup done for the slack bot. I found a source that provided CVE data in a very simple format, literally just json directly from a webpage. (its json.securityvulnerability.io. the root url there also has more interesting CVE stuff)
I started on the logic that pulls the CVE data and checks if it has changed. My current plan is to use cronjob and check every 20 minutes. Currently I’m working on finding the total number of changes in the cve list.
Also because Python is Python, the requests module outputs the json as a string, with single quotes. That’s technically not allowed, and as such the json module doesn’t work on it. So I store json in plaintext and parse it as a dict. Also I discovered ast.literal_eval and its amazing.

Attachment
0
Seven

Just some nice finishing touches. Got it actually running in O(1) time. Made some nice error checks for common things like not entering your question or API key. Also added word wrapping to the output text, because it got messy fast before.

Attachment
0
Seven

Got all of the UI logic bugs and errors sorted out. All I have left to do are some finishing touches like making it actually run in o1 time. Also should add some checks so that you have to fill out all required fields.
API key field is blacked out in post for obvious reasons

0
Seven

I apologize for so much being in one log. I accidentally forgot to press add devlog, and as such, here is two devlogs in one devlog.

Log 1: 1hr, 30mins
Made it actually work. Its got a basic text interface for now, but I’m going to try and learn Tkinter. There are three modes, the first is instant, and I won’t spoil it, the second runs your query through python eval, and the third contacts hackclub AI. Unfortunately you need your own Hackclub AI API key tho.
Log 2: 1hr, 21mins
Made the gui. Current issues are annoying logic problems with tkinter callbacks. getting lots of weird errors due to tkinters horrible variable and callback system. Got to fix all of them.
Also yes i’m aware the UI is hideous. Its tkinter, what did you expect?

Attachment
0
Seven

A long time spent trying to fix the previously mentioned vector math. The issue was trying to get the end of a raycast even when it’s not hitting anything. After trying and failing to do it dynamically using the raycast’s target and transforms, I just gave up and put a marker3d at the end of the ray. I get the marker’s position, and thats the end of the ray. The video below is of the problem, where the ray doesn’t quite line up with where I am looking. The little red flares are where the math said I was looking.

0
Seven

Got the railgun’s beam almost completely done. When shooting at a solid object, it appropriately goes from your camera to the point. When you point up, away from solid objects, it somehow gets harder. You’d think that I could just get the length of the raycast I’m using, and get a point that far away in the direction the player is looking, and draw the beam to that spot. I tried that. It doesn’t work. I don’t know why, but for some reason part of the spawning process that spawns it at the midpoint is breaking. I think it’s related to me getting that point. I’m not sure. The amount of time I have spent on this one tiny function is unreasonable. its probably half of the time for this log

Attachment
0
Seven

I made a cool looking railgun effect that emits light. Admittedly, I did have to use AI to help with the light placement and shaders. I have no idea how shaders work. Next step is getting it to line up with the player as they shoot it.

0
Seven

I got some material development done, and started on the shooting mechanics. I’m not really finalizing any sort of art style, partly because I suck at that. I did play around with some global illumination, but I can’t figure out how to make it work with dynamic objects. I configure the VoxelGI correctly according to the docs, but it doesn’t work. I also discovered a bug in my implementation of bunny hopping, where you can get ridiculous velocities. (see the video)

Attachment
0
Seven

Got the motion system pretty close to a finished state. The actual values of speed, jump, and gravity will probably change, but I have a movement system I’m happy with. As seen in the video, when in the air, the player has momentum, but has some control over it.
Also I discovered that for some reason, the Wakatime extension for Godot on my laptop doesn’t work properly, so I’m missing like an hour. Thats probably my fault for configuring it wrong tho.

0
Seven

Sad movement things. I am having an issue where the player’s movement speed is directly tied to the speed they move at while pressing the keys. This is good for most games, but I want to make it so that the speed can be higher than the regular speed. This is kind of annoying to implement, because of the way Godot has you do local motion. In the third video, you can see the problem, where I increase and decrease the movement speed, and the player slows down with the movement speed. In the other two, you can see my failed attempts at fixing the problem. Also happy new year!

0
Seven

Just project and basic setup. Got a player with half done movement code. Its pretty bad, and i’m going to rewrite a bunch of it, but it exists. Also got some nice dev textures from kenney.nl

Attachment
0
Seven

A bunch of things happened. I made a detector for Sinytra Connector in crash reports. I also made the function necessary to get the modlist from a Neoforge crash report. It was a lot of annoying regexes. Here look at the one I ended up with:
\s*(.+?)\s*?|(.+?)\s*|([0-9a-z_]+?)\s*?|([0-9a-zA-Z-.+]+?)\s*?|Manifest:.*
Like what is that. Anyway, tomorrow is probably the rest of mod list extraction, which will hopefully be easier.

Attachment
Attachment
0
Seven

I made a detector for the Improved Crash Reports mod, and got the info from it. I made some tests for that as well

Attachment
0
Seven

Restructuring, improving readme, general QOL things. Not much. Also added pytest tests to find out when I break things

Attachment
0
Seven

I forgot to add crash report parsing to forge. oops. done that

Attachment
0
Seven

I have now finished the basic data extraction for all major mod loaders. I can detect crash reports vs. regular logs. Next is going to be finding extra info from crash reports, like other mods providing improved reporting data, and common issue mods like Sinytra Connector

Attachment
0
Seven

Made detectors for both fabric and quilt crash reports, and got the same basic data as the regular logs. I had to change how the files are loaded and passed in the main script, because it was causing the line numbers to be off by one for some reason. Just closed and reopened the files and it works now. I also had to change the initial file extension regex, because it didn’t work properly

Attachment
Attachment
2

Comments

Seven
Seven about 1 month ago

Oh I also made a small function to check if a provided file is a crash report or not

Seven
Seven about 1 month ago

So apparently I didn’t have the fabric data extraction nailed down, but I do now

Seven

Got the Forge detection done, and reformatted the data gatherer a little bit

Attachment
Attachment
0
Seven

Got the neoforge stuff all sorted out hopefully. I also got the fabric detection and version detection done. Going to do forge and quilt, but thats probably it

Attachment
0
Seven

Got Java version detection and minecraft version detection working properly. The only problem is that all of this is useless now that I have looked at a newer Neoforge log. I was basing all of this off of a 1.21.1 log, which spits out a lot more info than the new ones. I am going to have to use the modlist to detect neoforge versions

Attachment
0
Seven

Got a new Neoforge version detector, but now I’m onto Minecraft version detection. Detecting Neoforge’s version was easy, but the MC is in two different places, and I have to check both. Although I think the Neoforge version system might be derived from the MC versions, so I’ll have to check

Attachment
1

Comments

Seven
Seven about 1 month ago

Idk why theres two identical images, but I guess there is now

Seven

Sadly, I’m going to have to write a lot of Regexes for this project, good practice tho. I made a detector for the Neoforge mod loader, that as I type this I realize is not guaranteed and will need to be changed. I also made a checker for the inputted file extensions, so you can’t enter anything other than a .txt or .log.

Attachment
0