Shipped this project!
Made huge progress, was basically unusable before. But now you can craft and mine and stuff
Made it so you actually need the correct tool of the correct tier to break blocks, and made it so certain tools actually break blocks faster (client was stupid and didnt know this, so i have to tell it :c). But now its actualyl kinda playable? You can break trees and get wood, craft wooden tools then progress to stone. Though you cant go further than that cause we dont have furnaces so you cant get iron.
Log in to leave a comment
Implemented major parts of player syncing and changed how entity syncing works:
Log in to leave a comment
Implemented a entity system with incrementing entity ids (player gets a entity id now, and its sent to the client in the login (play) packet). Also added item drops if you mine blocks in survival, and they simulate gravity and measure distance to player, and if player is close enough the player will pick up the item.
Log in to leave a comment
Added way better world generation! There are bigger diffrences in areas, so there can be both deep oceans and high mountains. Also added trees, grass and flowers. There are also caves and ores generating below ground, with deepslate below y=0. There is also a minor issue where worldgen is pretty slow but ill fix that in the future.
Log in to leave a comment
Implemented basic worldgen:
Log in to leave a comment
Added temp and food rations. If the temp is under 10c, sleeping will take 10hp and if its under 5c you will loose 3hp per block. If you are out of food you will loose 5hp per day. So in total u can loose up to 24hp per day
Log in to leave a comment
Added messages to the terminal. You cannot send anything but you can recieve messages from hq. When you dismiss a message it goes to the archive where it can be viewed later.
Log in to leave a comment
Implemented:
class <name> extends <name>, an extended class will have all the methods the parent class has, unless overwritten. But the class will be able to access all original functions using super (as shown in the screenshot, the class overwrites init but calls the original init with super.init)
Log in to leave a comment
Added a “new game” button to the main menu, which will wipe your save and start a new game (there is a warning popup to confirm or cancel). Also added a bed where you can sleep to progress to the next day. To make this better i also made can_interact return a string, which will be displayed under the crosshair instead of the generic “E to interact”. So now there are labels like “E to pick up”, “E to sleep”, etc.
Log in to leave a comment
Created the computer/terminal system which will be used for system reports, comms, and more base managment stuff.
Currently it has a login page, main menu page, and systems reports page.
Log in to leave a comment
I have been trying a lot to optimize the server and fix some critical bugs, but its just not working. I have improved some bad code but the server keeps crashing with random errors that dont make any sense. So its currently not working but ill try to downgrade to 1.21.10 or 1.21.9 and see if smth works
Log in to leave a comment
Implemented a backup battery system: The battery will charge 3%/block while the generator is powered, and discharge 10%/block if not. When the backup battery is being used all lights turn red, and when its empty the lights turn off and doors take longer to open (and more stuff will be implemented later)
Log in to leave a comment
Improved the interaction system and created fuel cans.
Fuel cans can be picked up, and can be used to refuel the generator.
Btw the “e to interact” text wont show when you look at the generator without a fuel can, cause that would otherwise be pretty confusing.
Log in to leave a comment
Implemented a basic small room with lights, and a test object. You can interact with the test object, which is a test for the interactable system. Also gave the player a flashlight
Log in to leave a comment
Created the structure of the game, along with working saving and loading.
Currently the world is just a simple ground but it will become more advanced soon!
Log in to leave a comment
I am working on overhauling and improving a lot of parts of the site! Currently i have:
Log in to leave a comment
Added back fancy errors to the runtime. They were inititally removed cause i wasnt sure how to implement them, but ended up adding a vec with spans where the index matches instructions. So i can fetch span X to get span for instruction X. Also fixed some minor bugs
Log in to leave a comment
Implemented:
arr[0][0])
Log in to leave a comment
Implemented:
import "std/<name>"
in and not in comparators
Log in to leave a comment
This is a huge update affecting most parts of the language :O
HTTP:
Strings:
.trim().to_lower().to_upper().starts_with(s).ends_with(s).chars()OS:
.pid().uid().gid().getenv(k).setenv(k, v).unsetenv(k)FS:
.exists(p).mkdir(p).rmdir(p).remove(p)Misc:
k in v and k not in v comparatorslet a = { "b": 1 } for exampleinput() on the web idesleep(ms)
Primarily a math update, but i also rewrote the entire repl to have way better UX, and also implemented syntax highlighting in the repl.
Math additions:
Log in to leave a comment
Added:
.split(""), .len() and .replace(a, b) functions on stringsa.max(b) and a.min(b) on floats and integers.join("") on arrays to join into a string"abc"[1] equals b
In addition, nightly rust is no longer required for installing modu via cargo or contributing to modu
Log in to leave a comment
I was originally trying to make modu a compiled language too, but it didnt end well. I tried to do it via embedding code with a simple runtime. it worked but was incredibly bloated.
In addition it would severly limit platforms modu could be built for, as i would have to go through the pain of compiling the runtime for each arch and os, along with modifying modu to include those runtimes.
I have decided to scrap this idea, but the code will remain on the “building” branch.
Log in to leave a comment
Added a title with file path and size and added a cursor that can associate bytes with ascii and is now used to move up/down:
If cursor is on top visible row and u move it up u will reduce the offset, and if its at bottom u will increase the offset, aka scroll in file
Log in to leave a comment
Implemented:
And:
from n = x..y to n in x..y
Log in to leave a comment
Move some stuff around on the package page
I have been working on a bunch of site improvements
Log in to leave a comment
Fixed a bunch of small bugs/inconsistencies in modu and it’s docs. And finally released modu v2.0.0
Log in to leave a comment
Implemented FFI, still same imlementation as before but im looking into making it better. Also implemented the built in cryptography library, and fixed some bugs and examples. Have decided to ship modu 2.0 without file io, and some of the math package missing. But this will be added back in 2.1 or 2.2. As i have implemented everything back, all integration tests pass! HTTP tests dosent work cause httbin is down rn 😭
Log in to leave a comment
Implemented:
Log in to leave a comment
dude i love your project, im also building a lang!
Implemented the http package again, along with the json package. You can already see advantages of the new parser, with the long chained expressions as seen in the bottom of the screenshot. Also implemented objects/json again, and made the functions a little better. Like instead of json.stringify(obj) its obj.to_string()
Log in to leave a comment
Because the parser for modu is kinda shit, i have begun the rewrite. Currently it can parse “let x = 1;” or any other int or identifier. But i also added really fancy error messages.
So i was originally just gonna implement some package improvements, but i found so much wrong in the language. I ended up:
Log in to leave a comment
Implemented for loops, and infinite loops, along with break to stop infinite loops and to prematurely exit for loops.
Infinite loops are as easy as
loop {
print("kaboom");
}
And for loops are as easy as
for n = 1...5 {
print(n);
}
Log in to leave a comment
Just did a bunch of bug fixes and some QoL stuff (support numbers like 1_000_000, make syntax highlighting support \n \t etc, etc). Released Modu v1.0.0!!!
Overhauled FFI to be way better
Old:
import "ffi" as ffi;
ffi.call(path, "hello_world");
print(ffi.call(path, "one"));
print(ffi.call(path, "add", 5, 2));
print(ffi.call(path, "string"));
ffi.call(path, "print", "test");
New:
import "ffi" as ffi;
let lib = ffi.load(path);
lib.hello_world();
print(lib.one());
print(lib.add(2, 5));
print(lib.string());
lib.print("test");
I have decided to revive this old ass project! Started by fixing a couple of bugs, updating packages, and releasing that as v0.6.1
Log in to leave a comment
MODUUUUUUUUUUUUU YESS CYTEON I NEED THIS THANK YOUUUUUU
Implemented:
And:
Log in to leave a comment
Log in to leave a comment
Added the ability to have multiple monitor types. And implemented (in addition to http(s) monitors): TCP, UDP and ping
Log in to leave a comment
Make some small QoL fixes:
Log in to leave a comment
Make a lot of stuff sync to reduce async overhead, cause my code had a lot of stuff that didnt need to be async. Also fixed registry order as that was unpredictable ending in chat getting messed up. Screenshot shows an example of change in one packet. Also includes some work on trying to optimize the server.
Log in to leave a comment
Made some basic stuff work. Tho its still kinda broken cause the mc api keeps changing things up?? So it works on dev and not prod. But its not anything breaking, tho your ping might mess up packet order its fine just reconnect again
Implemented chatting. It was a pain cause the docs are kinda lacking so i just had to try some random values for the chat type field until it worked loll.
Implemented the packet for sending player info updates, only implemented adding player, and making a player listed in the tablist. But easy to expand with just adding to the enum.
Made a log module that works as a drop-in replacement for all the old logging code, but also saves the logs to the logs/ folder. Also implemented breaking and placing blocks, but placing blocks is currently using stone as an placeholder. Breaking and placing blocks also modifies the chunks on the server and are saved, and will persist if you restart the server.
For this devlog i did:
So this is sadly a huge devlog, but i spent so long debugging the data packets :(
This devlog adds the following
For the next devlog im going to make sending actual blocks and just not air, which shouldnt be too hard.
Upgrade packets to protocol 773 (1.21.10), and temporarily remove packet 0x44 (player_info_update).
Added sending server type to client, as shown in top right.
Also implemented sending the game event indicating client should start waiting to get chunk data