Thanks for the suggestion, this is the very first suggestion I've gotten, so I'd like to ask you if it's okay for me to mention your username in the follow-up video to give you some credit for the suggestion, or maybe if you want you can stay anonymous as well it's fully up to you. Thank you for the suggestion once again I really appreciate it.
this is awesome, reminds me of making an ascii rpg game on my website back in the day, and like yours each "tile" was with a span tag for color and was all in the same doc, being updated as fast as it could, which was still very, veryyyyyy slow lmao, this also needs enemies / animals
I made a dungeon generator that would load a console app in. A grid of 0 for air, 1 for floor, 2 for wall, 3 for door. Doors could be NSEW as long as they were at the boundary of the grid. Then Walls would randomly stretch and place as long and ensured an enclosed randomized shape. Then made branches from a hub to split out, with each room numbered and branched. I had it adjusted to keep rerolling the room and size till it fit or had to readjust the doors if all else failed. But i created loopback rooms that could turn around and go back to hub room. Or shortcuts to other branches etc. i also had chests, moving platforms, mini arenas(diamond shaped platforms floating in the mid of a room), etc and a floor pathfinder that shot out to make sure the room was technically playable from walkable space/jump space. But anyone can do it based on those parameters right there. I translated it to Unity where i did tiles like minecraft but it seemed to make my pc lag a bit on bigger generation(they were panels so i didnt cull edges yet ) so i was reworking it to make the rooms wall connected as one mesh instead of a dozens of little meter tiles.
since only the code generating it has to fit in 1 megabyte, you can actually have arbitrarily large worlds- possibly even infinite procedural (or at least billions) where everything generates in chunks. the program should store 9 chunks at a time (3x3) and show the equivalent of 4 chunks at a time (2x2), where the camera freely pans to center the player within the screen. every time the player leaves a chunk, 3 unload and 3 load on the other side to replace them, so the final effect is free unbounded movement. The program can use large save files to store the terrain text, or just store any player changes to the chunks. taking a lesson from terraria, you don't need a second layer for caves if you just have cave-like biomes, and you can fit an incredible diversity of biomes if you're willing to make them large and far apart.
I've actually already implemented a way for generating new biomes, I don't know if it's as sophisticated as your suggestion, but we did land on the same idea when it came to making the caves into their own biomes and not into a layer. If you're curious on what I've come up with, feel free to check out the next video I'll upload of the game, thanks for the comment and suggestion as well.
Ok, one big idea I was playing around with in my head and that this could be perfect for is a sandbox game, with conservation of matter and energy. Like, when something rots, it releases nutrients into the soil with rain and insects and corpse eating animals, gases into the air and so on. When you smash an object, the total sum parts of that object remain as scrap. Of course, this would need to be suuuper simplified compared to reality, but I believe a game where you can be certain that nothing is lost, where everything can be made from the very beginning coul be very interesting.
7:25 You have no idea how weird it was to see the laptop I am currently using to watch this video suddenly appear within the video. Consider me quite amused.
Thanks for the suggestions, those are both cool ideas, I'm swaying more towards adding structures if I'm being honest. Thanks for the comment as well, I appreciate it very much.
Actually when I was brainstorming about the visuals for the game I was torn between two ideas, first is that everything would be letters, I thought that could be interesting, the second idea was to still use a font but rather than everything being letters I would replace the characters with actual sprites, maybe I'll include a gamemode you know where there are actual sprites. But still once I finish the game I'll make sure that all the game files are public you know so if you want costum textures all you have to do is just switch the font the game uses, that'd be cool you know same as how people make texture packs for minecraft. Thanks for the comment as well, I appreciate it.
@@lurple_ no i mean i will end up writing 6 different files for functions and then realizing that all of it is built-in but im too stubborn to get rid of my files
Make some perlin noise and attach the whites and blacks to shades of green, simulating hills Maybe you could also add a cave system, adding a whole new level to the world
It'd be real cool to see the ability for like depth, or kinda textures, so everything isn't just one character. For example; making items, like if you were to add a bow use ➶ for an arrow, and like a death be shown by this 🕱 , adding fish that swim in the water animated by 𓆟 to 𓆝, adding a minimap and generation as you walk outside the area, where the map shows your groups of placed items as a symbol like a house, ⌂. Better yet, you could use the same text, just make the font be graphics instead, and you can limit yourself to how many characters are typable, and you can add this font for regular text! Just an idea to keep mostly the same system, but add some pixel and vareity. Overall, I love this so far, and would love to see when it's avalable! :D
That's definitely a good idea, I did kind of pigeonholed myself by only limited myself to 26 characters, so I might include those characters you've typed, the only problem is that I've made the font and if I'll be able to draw like every item at the fonts scale, which is quite small. Thanks for the comment as well, and I'm happy you've liked my project so far.
@@lurple_ you could also like take the 26 characters and Instead of making them letters just draw the graphic you'd like, keeping the old font for text boxes and such
I love the game! if I were to reccomend something it would be to have the letter of the item under the slot. I also would like the idea of the ability to have rougelike features, like leveling up to get specific things. Some npcs would be wicked cool too! I'm just spitballing ideas, but I'd love to know your opinion!
I'm happy you liked my project, that could be cool the letter of an item be under slots rather than the outline, and I'm quite a fond of adding rougelike elements, and there'll be some nps for sure at some point, that maybe spawn at some structures like minecraft or spawn randomly in the word, haven't decided on that yet. Anyways thanks for the comment, I appreciate it.
If you wanted to make ot more survibal oriented you could add the need to drink the water. You could also make cows that act like a player does in water, but slower(moving in random directions) that respawns every few minutes.
Add red berry bushes, that give you food every now and then. adding this also means hunger would need to exist, but im sure its going to be fine for you
That's probably a better way of going about it, I didn't really look into what language would output files with the lowest amount of storage, I just went with html, css and js, cause I've had experience with them and they don't take up all that much storage as well.
I cant belive that this video is this underrated. i suggest you to make game centered to the screen and to add hunger bar that can be regained by water or apples you got what i mean. Great video. sorry for my english.
in world gen, while iterating on the cells deciding what to do you could have a small prob for the cell to be a tree or a water block, then (maybe keeping track of the water blocks) iterate on all of them and give them a chance to spread to the near cells, so something like ggtgwtg could become ggtwwwg or ggtgwwg and so on. this should give you something more organic instead of an hardcoded river or 2x2 zones. but still really impressive, i would’t be able to do something like this (im more of a C guy than js)
That'd definitely make the world more dynamic, I'll definitely look into doing stuff like that later down the line, thanks for the idea though (and honestly c is a very good language my second favorite language is c#, so I'm a big fan of the c family, but still js is just too good to be true in my mind)
Ive been trying it for a while. (Dwarf Fortress - like game in python). I will go ahead and warn you that using charts for items (ex. 145 instead of 'wood') is super helpful on space saving, and one of my biggest regrets.
One of the main things to create a survival game, is something you need to survive. You need thirst, hunger, health, berry bushes, fruits from trees, and maybe zombies, poison, disasters, and a goal like survive a month, build a helicopter as rescue, or any other Ideas
sugestion: you can have an inventory and place seeds that turns to trees etc. it would be really good. I am making an server on a raspberry pi zero 2 W thats running minecraft, I like the concept and if you can host it in servers and like, have smaller servers that hosts the game (the small servers player cap can be 2 16 or 32 but I suggest you to use 8 since its fun. its lightweight and it is really interesting)
Thanks for the suggestion, actually I've already implemented seeds that turn into trees in the next video, and also very interesting project you got going on, best of luck on it. And thank you so much for the comment, I appreciate you.
wow! thats a rlly cool game tbh, i want to see it be expanded with more stuff! maybe add a open world, since rn its kinda limited since there are limted resouces in the world, anyways gl with the project :>
I know that my expectation it's my own problem, but when your hear that somebody make game in hard memory limitation he'll not use high abstracion layer language like JS. I mean what the point to use here chars to show graphics if in hardware level there is no differnce for your browser betwen letters and color blocks? Also using browser for rendering it's like a cheat, cos u don't need to think about size of render libs and know how graphics realy works to make this game.
I decided to use js, because I find it to be the most enjoyable language to program in and because I have the most experience with it, I didn't do extensive research about making games that take low amounts of space, I didn't write my game engine, I didn't make something from scratch. I suffer from immense amount of imposter syndrome, no matter what I make or how I make it I know deep down that I don't know anything, that anything I make is worthless, even right now when people tell me in this comment section positive things I still question myself to the point that it's destroying all the little resemblance of confidence I might have. So just like many developers I find myself to not to be a real dev because I'm not making everything from scratch, I didn't invent browsers, JavaScript, I didn't write my own compiler for this project, so I get your perspective very well, I also don't think what I'm doing is development, I'm just trying to follow up on a silly idea I came up with, I'm not writing a very clean code, but that's okay, because I'm not a real dev, I'm just someone who wants to make something cool, so I'm sorry I don't meet your expectations, I don't meet the expectations set by me either.
@@lurple_ As I said, my expectations are my problem. Every program, every algorithm has a place to be and every one is possible, especially for pet projects. After all, programming, in my opinion, is the same art as drawing or music, and in art we do not know the boundaries, we can just comparatively say that one thing is better than another. Anyway, your video infected me with the idea, now I want to make a similar sandbox for DOS in pure 8086 assembler and dos software interrupts. Whether I can do it and how long it will take is another matter. But when your work inspires someone else, it already means something.
That's all I could ask for, for my projects to inspire people, I'm happy my video had that type of an effect on you, I think you should go for it, and try to build your project your way, with your vision and yours artistic choices, I wish you nothing but best of luck. Thanks for the comment.
Sort of, it is intended to be a sandbox at the end of the day, and basically it's going to come with the browser I made at the start which you run and that loads the games for you.
Can you increase the number of zombies in the difficulty options?! At least until you go to PvP server. It looks somewhat easy with few zombies around, there is no danger
Maybe for the next version use AALib to do ASCII 3D graphics. Also, if you're not going to activate Windows, which is a good choice, why not top it off by installing Linux?
I've checked out AALib it can output some really cool looking stuff, you know I might just consider using Linux, I've always used windows my whole life, but still you know Linux gives you just so much control over everything, plus it's litterly the hackerman os so very tempting.
The funny think is i had the same idea. But I thought of it 1 year and a half and i just wanted to make symbol sandbox game. And I begun making like when the idea stroked to me. 😀
@@lurple_ No worries, it is just funny that someone the same style. 😀👍 And about my game, well maybe cool, but the controls arent comfortable(i made it on python and convert to exe,and if you want to do something,like move right, you type "d" then enter, that's why the controls arent comfortable 💀). And your idea (to make a game less then megabyte) cooler than just make a retro styled sandbox game. Sorry if other comment sound offensive 🥲.
The point was that, I took away all the components that made it resemble a browser, which in-turn made it just a program that runs the game files, the game is written in html, css and js, these are used for web development, so I had to use a browser to run the game, but I didn't want to make a browser game so, I made my own one, to turn a browser game into a desktop executable one.
The server I wrote in Rust is under 1 MB. Since when a MB became a lot for a dynamically linked executable? How I made a PNG that is less than ONE gigabyte! (exploding head emoji) (exclamation point) (exclamation point)
Actually it does adjust to the world size, the rivers width interpolates between a minimum and a maximum value, minimum being how many tiles are on the rows of the world and the maximum just being the row amount times 3, so basically the smallest sized river stills stretches across the whole world no matter the world size. But still thanks for the suggestion and for the comment.
Really great video and a game with a lot of potential, will be following the project! For my suggestion, you could try adding enemies. I know it's not super easy but that's the fun of it, right?
I'm glad you found the video and the project enjoyable, I'm happy to hear that. Thanks for the suggestion as well, you're right adding enemies will definitely be a bit of a challenge, especially making them follow the player, but ofc I agree with you that it'll still definitely be fun to implement and make for overall a better game. Thank you so much for the comment, and one more thing would it be okay for me to mention your username in the follow-up video to credit you for your suggestion?
I just liked the style of just text you know, I thought it was interesting looking, but someone did suggest to use a sprite for a new thing I've implemented, which I'll showcase in the next video, if you're curious. Thanks for the comment.
Around 3:33, you're making it way too complex. It's just + or - world_row. The current formula is basically "world_row + offset - offset" which is equivalent to just world_row. Not sure if you've fixed this by now since this is an earlier video but it immediately jumped out to me.
Additionally, for the WaterReaction code, if you abstract the player movement into its own function then you can just call it instead of essentially mirroring the code. For example, function playerMove( delta_x, delta_y ) or playerMove( direction ), whichever you prefer, and then the window keydown event can also call it. And instead of having a for loop replacing every tile (though I'm aware later on you use a similar loop to make the colors vary slightly), you can set the world children pIndex first, then update pIndex, and then set the new world children pIndex afterward. Even further, if you have several places changing both innerText and style color, you can probably move them to a dedicated function to set both at once, saving a bit of time writing.
Sounds fun. Actually other viewers have taken up to themselves to remake the game in their chosen environment or language. So far there's 5: Thumby, C, MicroBit, Direct2D and Unity versions of the remakes.
Saying this is under a megabyte is like saying Minecraft alpha 1.1.2 is under a megabyte because the client jarfile is 897,054 bytes, completely disregarding the Java libraries it depends on, and the Java runtime that it depends on. Chromium is fucking huge, and if you're going through this trouble of making your "own" web "browser" (which, again, is just Chromium), you might as well just ship your game as a multi-hundred megabyte non-portable Electron "app" with 7,000 JavaScript library dependencies bundled in.
Yes, the title is pretty deceiving. I expected some low C level shenanigans with WinAPI interactions to get a super lightweight app or something like that. Wrapping the game in a C#/.Net web view is also pointless because it is not different from using the local browser. Still, I don't want to sound mean and must state I respect the game and work done, it is just the mis-presentation that bothers me.
It is under a megabyte, all the files that make up the game, the game is under a megabyte, I never said the "launcher" or the "browser" was, that's not part of the game, because it's not a necessity, you can run the game in any browser you want, I'm not hiding any libraries or dependencies as well, the game is in fact under a megabyte, I don't really understand your argument.
@@lurple_ A web browser is a *huge* dependency, and is absolutely part of the game. If you can run it in any browser you want, how about NetSurf? I think it's one of the few that even get close to your 1 MB claim, but on my system the NetSurf binary is about 3.5 MB, without counting the libraries and kernel facilitating it.
I feel like this is actually a slightly trickier case than a Java or Electron based application. The library used for this game is WebView2, which is part of all Windows 11 installs, and was installed in an automatic update to most Windows 10 PCs, so I would count it as a system library. Once you start questioning whether WV2 should count as part of the application size, you need to look at other system libraries too. Is it cheating to open a window at all, because you add a dependency on User32.dll? Maybe the only
also how about giving a bit of life to the world and making the rivers letters change colours between different shades of blue, so it looks like its flowing
I wrote the logic for that at some point, but I decided to remove it, I don't fully remember the reason of why I removed it, I think I didn't like how much the colors interpolated, it would go from a dark blue to a very light cyan color, that was on me though for implementing it poorly, but I'll look into it once more and make the different shade of colors more close to each other like how it is for the grass. Thanks for suggestion as well.
I'm happy you found the video good, I actually bought a new microphone between this video and the next installment. So your comment aged well hehe, thanks for the comment, I appreciate your words.
I definitely can, but there isn't much in the game right now and there are some critical bugs I need to fix, so I'll hold off on the supplying a download so far, and yes I'm planning on adding enemies and progression, to get an actual game loop going, so it actually becomes a real game.
Since you had to develop a new font anyway, you should have made glyphs that represent what they are in the game. Would have been an interesting touch, though I guess it would have been a lot more effort.
Hehe I'm happy you found the project cool, and best of luck at work. Also if you're curious there is a discord server as well for the game (there's currently 45 people, and the cool thing is 5 people deicded to remake the game in their own programming language/environment), if you'd like to join feel free to check out the post I made on the channel with a link to it. Thanks for the comment once more.
@lurple_ just to let you know a system level programming language like C c++ zig or odin will let you do this with ease I am working on a 2d game engen with odin it has a tilemap tilemap editor partical system 2d physics a atlas generator it is at 3458 kb and it is do to using raylib, box2d and inbeding the images into the exe code is just small good vid though
I'll try to explain the reasoning behind my thinking: The reason we write: (p % 30) is because it helps us find the amount of distance between the player and the first tile in the row that the player is standing on, so if we minus the player index the distance between it and the first tile in it's row it will move him to that first tile, than we add 30 to it (30 being the amount of tiles that are in each row) because it will move the player to the first tile of the row that's above and than we minus all of this once again: (p % 30) (the distance which the player was from the first tile at start) just so we move him horizontally back to that tile, but since we moved him up by one row it gives us the effect of him moving up. I apologize if my explanation was confusing, I'm not very good at explaining stuff, I hope I was able to convey my thinking well to you, thanks for the comment as well.
@lurple_ ( world_row + (pIndex % world_row)) - (pIndex % world_row) = world_row, so pIndex -= ( world_row + (pIndex % world_row)) - (pIndex % world_row) equals pIndex -= world_row question was why do you do all of this instead of just pIndex -= world_row and also why do you move him to that first tile and then back to the initial tile? it is what you said in your reasoning.
I agree with the quality, I definitely need to and I will invest in a better one soon, and I apologize for rushing so much, I have a very low self-esteem so it's difficult for me to listen to my voice so I just record myself doing the voiceovers only once even if they come out not too well, I guess I have to work on myself in that regard. Thanks for the comment, and pointing out the flows, I agree with all of your points.
I actually bought a new mic, I'm sure you'll be able to notice that in the latest videos, and yeah I don't like my pronunciations as well, I'll try to work on them. Thanks for the comment.
I'm planning on making more videos on the project soon, I'll be sure to mention in the next video if I make a discord server as well, so be on the look out for that.
What I expected: A c program that runs in the terminal
What I didn't expect: A web browser?!?!?!?!?!
Yeah, it was a silly idea for sure.
eventually life comes around and everything becomes dwarf fortress
text based games are so back. we don't need any of that fancy "graphics" stuff, only IO
@@halfsine
DF got an UI with fancy graphics tho.
@@diadetediotedio6918yeah but only after it released on steam
game devs of the 80's : «You made a game that fills almost one whole megabyte? How many sprites or levels are in?»
Good old times
Suggestion: Trees can be harvested for seeds without chopping them. These seeds can then be planted to grow more trees, making wood renewable
Thanks for the suggestion, this is the very first suggestion I've gotten, so I'd like to ask you if it's okay for me to mention your username in the follow-up video to give you some credit for the suggestion, or maybe if you want you can stay anonymous as well it's fully up to you. Thank you for the suggestion once again I really appreciate it.
@@lurple_ Oh yeah it's fine if you credit me, thanks!
Some sort of cave system that puts you in another "layer" that lets you get minerals would be cool!
I think that'd be cool as well, I'll definitely look into implementing that.
Thanks for the suggestion
@@lurple_ No problem!
this is awesome, reminds me of making an ascii rpg game on my website back in the day, and like yours each "tile" was with a span tag for color and was all in the same doc, being updated as fast as it could, which was still very, veryyyyyy slow lmao, this also needs enemies / animals
I made a dungeon generator that would load a console app in. A grid of 0 for air, 1 for floor, 2 for wall, 3 for door. Doors could be NSEW as long as they were at the boundary of the grid. Then Walls would randomly stretch and place as long and ensured an enclosed randomized shape. Then made branches from a hub to split out, with each room numbered and branched. I had it adjusted to keep rerolling the room and size till it fit or had to readjust the doors if all else failed. But i created loopback rooms that could turn around and go back to hub room. Or shortcuts to other branches etc. i also had chests, moving platforms, mini arenas(diamond shaped platforms floating in the mid of a room), etc and a floor pathfinder that shot out to make sure the room was technically playable from walkable space/jump space. But anyone can do it based on those parameters right there. I translated it to Unity where i did tiles like minecraft but it seemed to make my pc lag a bit on bigger generation(they were panels so i didnt cull edges yet ) so i was reworking it to make the rooms wall connected as one mesh instead of a dozens of little meter tiles.
Nice man that sounds really impressive and awesome, well done.
since only the code generating it has to fit in 1 megabyte, you can actually have arbitrarily large worlds- possibly even infinite procedural (or at least billions) where everything generates in chunks. the program should store 9 chunks at a time (3x3) and show the equivalent of 4 chunks at a time (2x2), where the camera freely pans to center the player within the screen. every time the player leaves a chunk, 3 unload and 3 load on the other side to replace them, so the final effect is free unbounded movement. The program can use large save files to store the terrain text, or just store any player changes to the chunks. taking a lesson from terraria, you don't need a second layer for caves if you just have cave-like biomes, and you can fit an incredible diversity of biomes if you're willing to make them large and far apart.
I've actually already implemented a way for generating new biomes, I don't know if it's as sophisticated as your suggestion, but we did land on the same idea when it came to making the caves into their own biomes and not into a layer.
If you're curious on what I've come up with, feel free to check out the next video I'll upload of the game, thanks for the comment and suggestion as well.
Ok, one big idea I was playing around with in my head and that this could be perfect for is a sandbox game, with conservation of matter and energy.
Like, when something rots, it releases nutrients into the soil with rain and insects and corpse eating animals, gases into the air and so on. When you smash an object, the total sum parts of that object remain as scrap.
Of course, this would need to be suuuper simplified compared to reality, but I believe a game where you can be certain that nothing is lost, where everything can be made from the very beginning coul be very interesting.
7:25 You have no idea how weird it was to see the laptop I am currently using to watch this video suddenly appear within the video. Consider me quite amused.
multiple layers of terrain generation would be really cool (eg: enter a cave entrance to be teleported into a unique cave)
Cool. One idea could be adding simple structures, like an abandoned house or small ruins.
Another idea might be having an underground layer
Thanks for the suggestions, those are both cool ideas, I'm swaying more towards adding structures if I'm being honest.
Thanks for the comment as well, I appreciate it very much.
you could add a pixelated character model and so much more as own font
Actually when I was brainstorming about the visuals for the game I was torn between two ideas, first is that everything would be letters, I thought that could be interesting, the second idea was to still use a font but rather than everything being letters I would replace the characters with actual sprites, maybe I'll include a gamemode you know where there are actual sprites. But still once I finish the game I'll make sure that all the game files are public you know so if you want costum textures all you have to do is just switch the font the game uses, that'd be cool you know same as how people make texture packs for minecraft.
Thanks for the comment as well, I appreciate it.
If I had the exact same tools I would still manage to make the game 1.9 terabytes from my inefficient coding
Nothing wrong with some classic old spaghetti code from time to time
@@lurple_ no i mean i will end up writing 6 different files for functions and then realizing that all of it is built-in but im too stubborn to get rid of my files
Make some perlin noise and attach the whites and blacks to shades of green, simulating hills
Maybe you could also add a cave system, adding a whole new level to the world
Adding depth would definitely elevate the world and caves as well, thanks for the suggestion.
0:52 you can actually simply set dock of webview to fill in properties
Oh thanks for the hint, I didn't know that actually.
It'd be real cool to see the ability for like depth, or kinda textures, so everything isn't just one character. For example; making items, like if you were to add a bow use ➶ for an arrow, and like a death be shown by this 🕱 , adding fish that swim in the water animated by 𓆟 to 𓆝, adding a minimap and generation as you walk outside the area, where the map shows your groups of placed items as a symbol like a house, ⌂. Better yet, you could use the same text, just make the font be graphics instead, and you can limit yourself to how many characters are typable, and you can add this font for regular text! Just an idea to keep mostly the same system, but add some pixel and vareity. Overall, I love this so far, and would love to see when it's avalable! :D
That's definitely a good idea, I did kind of pigeonholed myself by only limited myself to 26 characters, so I might include those characters you've typed, the only problem is that I've made the font and if I'll be able to draw like every item at the fonts scale, which is quite small.
Thanks for the comment as well, and I'm happy you've liked my project so far.
@@lurple_ no problem man, I genuinely love what you've made and wanna play it
@@lurple_ you could also like take the 26 characters and Instead of making them letters just draw the graphic you'd like, keeping the old font for text boxes and such
I love the game! if I were to reccomend something it would be to have the letter of the item under the slot. I also would like the idea of the ability to have rougelike features, like leveling up to get specific things. Some npcs would be wicked cool too! I'm just spitballing ideas, but I'd love to know your opinion!
I'm happy you liked my project, that could be cool the letter of an item be under slots rather than the outline, and I'm quite a fond of adding rougelike elements, and there'll be some nps for sure at some point, that maybe spawn at some structures like minecraft or spawn randomly in the word, haven't decided on that yet.
Anyways thanks for the comment, I appreciate it.
@@lurple_ no problem, awesome project man
If you wanted to make ot more survibal oriented you could add the need to drink the water. You could also make cows that act like a player does in water, but slower(moving in random directions) that respawns every few minutes.
Thanks for the multiple suggestions, they're cool ideas.
something like Accessories and armor like shoes that make you faster or flippers that allows you to swim in water,
and armor that reduces damage.
Cool idea, thanks for the suggestion.
You should add a mode where instead of letters its just colored blocks so that its more visible
Sure, thanks for the suggestion.
Add red berry bushes, that give you food every now and then.
adding this also means hunger would need to exist, but im sure its going to be fine for you
No way, algorithm cooked!
You can add one more line of numbers under inventory which will change based on current selected item and its quantity
i just realized how much i miss windows after seeing this video. linux is better, but i used to love how windows looked. gonna find a solution
should remake it in C or C++ as a terminal application so the actual game would be under 1MB.
That's probably a better way of going about it, I didn't really look into what language would output files with the lowest amount of storage, I just went with html, css and js, cause I've had experience with them and they don't take up all that much storage as well.
@@lurple_ in C the actual runtime and all dependencies would be under 1MB
For example edge WebView is massive.
I cant belive that this video is this underrated. i suggest you to make game centered to the screen and to add hunger bar that can be regained by water or apples you got what i mean. Great video. sorry for my english.
in world gen, while iterating on the cells deciding what to do you could have a small prob for the cell to be a tree or a water block, then (maybe keeping track of the water blocks) iterate on all of them and give them a chance to spread to the near cells, so something like ggtgwtg could become ggtwwwg or ggtgwwg and so on. this should give you something more organic instead of an hardcoded river or 2x2 zones. but still really impressive, i would’t be able to do something like this (im more of a C guy than js)
That'd definitely make the world more dynamic, I'll definitely look into doing stuff like that later down the line, thanks for the idea though (and honestly c is a very good language my second favorite language is c#, so I'm a big fan of the c family, but still js is just too good to be true in my mind)
"Activate windows" lol
great video for 150 subs
Thanks, glad you enjoyed.
Sounds like a fun challenge! I am thinking of doing my own super small game
Ive been trying it for a while. (Dwarf Fortress - like game in python). I will go ahead and warn you that using charts for items (ex. 145 instead of 'wood') is super helpful on space saving, and one of my biggest regrets.
add some animals that walk around randomly that you can kill with a sword for food
Thanks for the suggestion, I'll be sure to implement some animals and add a sword item as well.
One of the main things to create a survival game, is something you need to survive. You need thirst, hunger, health, berry bushes, fruits from trees, and maybe zombies, poison, disasters, and a goal like survive a month, build a helicopter as rescue, or any other Ideas
sugestion: you can have an inventory and place seeds that turns to trees etc. it would be really good. I am making an server on a raspberry pi zero 2 W thats running minecraft, I like the concept and if you can host it in servers and like, have smaller servers that hosts the game (the small servers player cap can be 2 16 or 32 but I suggest you to use 8 since its fun. its lightweight and it is really interesting)
Thanks for the suggestion, actually I've already implemented seeds that turn into trees in the next video, and also very interesting project you got going on, best of luck on it.
And thank you so much for the comment, I appreciate you.
@@lurple_ Thanks for the comment, I hope this project becomes the next sandbox game (since the new ones are absalutely hot garbage)
wow! thats a rlly cool game tbh, i want to see it be expanded with more stuff! maybe add a open world, since rn its kinda limited since there are limted resouces in the world, anyways gl with the project :>
I know that my expectation it's my own problem, but when your hear that somebody make game in hard memory limitation he'll not use high abstracion layer language like JS. I mean what the point to use here chars to show graphics if in hardware level there is no differnce for your browser betwen letters and color blocks? Also using browser for rendering it's like a cheat, cos u don't need to think about size of render libs and know how graphics realy works to make this game.
I decided to use js, because I find it to be the most enjoyable language to program in and because I have the most experience with it, I didn't do extensive research about making games that take low amounts of space, I didn't write my game engine, I didn't make something from scratch. I suffer from immense amount of imposter syndrome, no matter what I make or how I make it I know deep down that I don't know anything, that anything I make is worthless, even right now when people tell me in this comment section positive things I still question myself to the point that it's destroying all the little resemblance of confidence I might have. So just like many developers I find myself to not to be a real dev because I'm not making everything from scratch, I didn't invent browsers, JavaScript, I didn't write my own compiler for this project, so I get your perspective very well, I also don't think what I'm doing is development, I'm just trying to follow up on a silly idea I came up with, I'm not writing a very clean code, but that's okay, because I'm not a real dev, I'm just someone who wants to make something cool, so I'm sorry I don't meet your expectations, I don't meet the expectations set by me either.
@@lurple_ As I said, my expectations are my problem. Every program, every algorithm has a place to be and every one is possible, especially for pet projects.
After all, programming, in my opinion, is the same art as drawing or music, and in art we do not know the boundaries, we can just comparatively say that one thing is better than another.
Anyway, your video infected me with the idea, now I want to make a similar sandbox for DOS in pure 8086 assembler and dos software interrupts. Whether I can do it and how long it will take is another matter. But when your work inspires someone else, it already means something.
That's all I could ask for, for my projects to inspire people, I'm happy my video had that type of an effect on you, I think you should go for it, and try to build your project your way, with your vision and yours artistic choices, I wish you nothing but best of luck.
Thanks for the comment.
how can I play the game?
where?
and wait did you just made text-based minecraft?
Sort of, it is intended to be a sandbox at the end of the day, and basically it's going to come with the browser I made at the start which you run and that loads the games for you.
Can you increase the number of zombies in the difficulty options?! At least until you go to PvP server.
It looks somewhat easy with few zombies around, there is no danger
There isn't an options menu yet, but I'll make sure to include difficulty slider once I add it to the game.
Thanks for the comment, I appreciate it.
that code gives me anxiety
underrated video
Nice 100 subs!
It's really awesome thank you everyone
You should probably make the text in the thumbnail bigger, even if just slightly. It was impossible to read, for me at least.
Maybe for the next version use AALib to do ASCII 3D graphics. Also, if you're not going to activate Windows, which is a good choice, why not top it off by installing Linux?
I've checked out AALib it can output some really cool looking stuff, you know I might just consider using Linux, I've always used windows my whole life, but still you know Linux gives you just so much control over everything, plus it's litterly the hackerman os so very tempting.
The funny think is i had the same idea. But I thought of it 1 year and a half and i just wanted to make symbol sandbox game. And I begun making like when the idea stroked to me. 😀
Oh damn, sorry to steal your thunder man, I bet your version would look very cool as well, best of luck on it.
@@lurple_ No worries, it is just funny that someone the same style. 😀👍
And about my game, well maybe cool, but the controls arent comfortable(i made it on python and convert to exe,and if you want to do something,like move right, you type "d" then enter, that's why the controls arent comfortable 💀). And your idea (to make a game less then megabyte) cooler than just make a retro styled sandbox game. Sorry if other comment sound offensive 🥲.
but how large is the browser?
I'm only counting the actual game files that make up the game in the challenge, I'm sure the browser surpasses 1 megabytes by a lot.
@@lurple_ then what was the point in your custom """""browser""""" if you could as well just use chrome
The point was that, I took away all the components that made it resemble a browser, which in-turn made it just a program that runs the game files, the game is written in html, css and js, these are used for web development, so I had to use a browser to run the game, but I didn't want to make a browser game so, I made my own one, to turn a browser game into a desktop executable one.
I you could get some autoscrolling/paging working, I did a game like this in python (was a dungeon crawler). Have fun!
I think that'd be the right step, right now it seems quite limiting the world just being what you see on your screen.
Thanks for the comment as well.
The server I wrote in Rust is under 1 MB. Since when a MB became a lot for a dynamically linked executable?
How I made a PNG that is less than ONE gigabyte! (exploding head emoji) (exclamation point) (exclamation point)
the river was generated by a bunch of tiles being water in a row rught? you should make it adjust dynamically to the size of the world
Actually it does adjust to the world size, the rivers width interpolates between a minimum and a maximum value, minimum being how many tiles are on the rows of the world and the maximum just being the row amount times 3, so basically the smallest sized river stills stretches across the whole world no matter the world size.
But still thanks for the suggestion and for the comment.
Really great video and a game with a lot of potential, will be following the project! For my suggestion, you could try adding enemies. I know it's not super easy but that's the fun of it, right?
I'm glad you found the video and the project enjoyable, I'm happy to hear that. Thanks for the suggestion as well, you're right adding enemies will definitely be a bit of a challenge, especially making them follow the player, but ofc I agree with you that it'll still definitely be fun to implement and make for overall a better game.
Thank you so much for the comment, and one more thing would it be okay for me to mention your username in the follow-up video to credit you for your suggestion?
@@lurple_ Sure!
wait so if you made your own letters... why didnt you just make actual sprites? maybe to reuse text on inventory
I just liked the style of just text you know, I thought it was interesting looking, but someone did suggest to use a sprite for a new thing I've implemented, which I'll showcase in the next video, if you're curious.
Thanks for the comment.
ROCK
Around 3:33, you're making it way too complex. It's just + or - world_row. The current formula is basically "world_row + offset - offset" which is equivalent to just world_row. Not sure if you've fixed this by now since this is an earlier video but it immediately jumped out to me.
Additionally, for the WaterReaction code, if you abstract the player movement into its own function then you can just call it instead of essentially mirroring the code. For example, function playerMove( delta_x, delta_y ) or playerMove( direction ), whichever you prefer, and then the window keydown event can also call it.
And instead of having a for loop replacing every tile (though I'm aware later on you use a similar loop to make the colors vary slightly), you can set the world children pIndex first, then update pIndex, and then set the new world children pIndex afterward.
Even further, if you have several places changing both innerText and style color, you can probably move them to a dedicated function to set both at once, saving a bit of time writing.
if you used a custom font , why you dont use a font with pixel arts of the tiles?
That's definitely an option I can go with
Suggestion: Buy(or emulate) a C64, write the same game in basic and use just some kilobyte. Should be very easy. Done things like this with 12 ;P
Sounds fun. Actually other viewers have taken up to themselves to remake the game in their chosen environment or language. So far there's 5: Thumby, C, MicroBit, Direct2D and Unity versions of the remakes.
Saying this is under a megabyte is like saying Minecraft alpha 1.1.2 is under a megabyte because the client jarfile is 897,054 bytes, completely disregarding the Java libraries it depends on, and the Java runtime that it depends on. Chromium is fucking huge, and if you're going through this trouble of making your "own" web "browser" (which, again, is just Chromium), you might as well just ship your game as a multi-hundred megabyte non-portable Electron "app" with 7,000 JavaScript library dependencies bundled in.
Yes, the title is pretty deceiving. I expected some low C level shenanigans with WinAPI interactions to get a super lightweight app or something like that.
Wrapping the game in a C#/.Net web view is also pointless because it is not different from using the local browser.
Still, I don't want to sound mean and must state I respect the game and work done, it is just the mis-presentation that bothers me.
It is under a megabyte, all the files that make up the game, the game is under a megabyte, I never said the "launcher" or the "browser" was, that's not part of the game, because it's not a necessity, you can run the game in any browser you want, I'm not hiding any libraries or dependencies as well, the game is in fact under a megabyte, I don't really understand your argument.
@@lurple_ A web browser is a *huge* dependency, and is absolutely part of the game. If you can run it in any browser you want, how about NetSurf? I think it's one of the few that even get close to your 1 MB claim, but on my system the NetSurf binary is about 3.5 MB, without counting the libraries and kernel facilitating it.
I feel like this is actually a slightly trickier case than a Java or Electron based application. The library used for this game is WebView2, which is part of all Windows 11 installs, and was installed in an automatic update to most Windows 10 PCs, so I would count it as a system library. Once you start questioning whether WV2 should count as part of the application size, you need to look at other system libraries too. Is it cheating to open a window at all, because you add a dependency on User32.dll?
Maybe the only
also how about giving a bit of life to the world and making the rivers letters change colours between different shades of blue, so it looks like its flowing
I wrote the logic for that at some point, but I decided to remove it, I don't fully remember the reason of why I removed it, I think I didn't like how much the colors interpolated, it would go from a dark blue to a very light cyan color, that was on me though for implementing it poorly, but I'll look into it once more and make the different shade of colors more close to each other like how it is for the grass.
Thanks for suggestion as well.
@@lurple_ maybe make it like a flowing current? like making a letter go upstream and leave a fading trail behind it?
@@kanaboiarumas9659 interesting that could lead to some interesting results, I'll definitely try to implement that
Enjoyed watching this video xd
audio quality needs to be improved a LOT. other than that, good video
I'm happy you found the video good, I actually bought a new microphone between this video and the next installment.
So your comment aged well hehe, thanks for the comment, I appreciate your words.
hey can you supply a download? but I would suggest adding some threats and progression
I definitely can, but there isn't much in the game right now and there are some critical bugs I need to fix, so I'll hold off on the supplying a download so far, and yes I'm planning on adding enemies and progression, to get an actual game loop going, so it actually becomes a real game.
@@lurple_ great!
remake Minecraft under 1 megabyte
Now that'd be epic.
Thanks for the comment, appreciate you.
Since you had to develop a new font anyway, you should have made glyphs that represent what they are in the game. Would have been an interesting touch, though I guess it would have been a lot more effort.
Your comment has aged pretty well, in the later videos, I did end up including sprites rather than only letters.
Thanks for the comment.
@@lurple_ I had no idea there were newer videos :O I'll have to jump into this rabbit hole after work. It looks like a really cool project.
Hehe I'm happy you found the project cool, and best of luck at work.
Also if you're curious there is a discord server as well for the game (there's currently 45 people, and the cool thing is 5 people deicded to remake the game in their own programming language/environment), if you'd like to join feel free to check out the post I made on the channel with a link to it.
Thanks for the comment once more.
U GO BROOO
i thought that thumbnail was github tbh
Are you trying to make the game file take less then 1 mb or take less then 1 mb of ram
Game that in total takes up less than 1 mb of storage, not ram.
Hope I could clear up some confusion, thanks for the comment.
@lurple_ just to let you know a system level programming language like C c++ zig or odin will let you do this with ease I am working on a 2d game engen with odin it has a tilemap tilemap editor partical system 2d physics a atlas generator it is at 3458 kb and it is do to using raylib, box2d and inbeding the images into the exe code is just small good vid though
ah, but the operating system is greater than 1 megabyte ☝️🤓
3:36 Why do you do "p -= (30 + (p % 30)) - (p % 30)", that just results in "p -= 30"
I'll try to explain the reasoning behind my thinking:
The reason we write: (p % 30) is because it helps us find the amount of distance between the player and the first tile in the row that the player is standing on, so if we minus the player index the distance between it and the first tile in it's row it will move him to that first tile, than we add 30 to it (30 being the amount of tiles that are in each row) because it will move the player to the first tile of the row that's above and than we minus all of this once again: (p % 30) (the distance which the player was from the first tile at start) just so we move him horizontally back to that tile, but since we moved him up by one row it gives us the effect of him moving up.
I apologize if my explanation was confusing, I'm not very good at explaining stuff, I hope I was able to convey my thinking well to you, thanks for the comment as well.
@lurple_ ( world_row + (pIndex % world_row)) - (pIndex % world_row) = world_row,
so pIndex -= ( world_row + (pIndex % world_row)) - (pIndex % world_row) equals pIndex -= world_row
question was why do you do all of this instead of just pIndex -= world_row
and also why do you move him to that first tile and then back to the initial tile? it is what you said in your reasoning.
Fun video :)
I was gonna play on a minecraft server but it's down rn so idk what to do
Step 5: 🎙️ improvement next time
I got a new mic between this video and the follow-up one, I think it's a major improvement.
Thanks for the comment.
Very dwarf fortress like
I'm glad that's visible in the game, old version of dwarf fortress before the steam version was a big inspiration for the game
Bitmap graphics?
You could do this by adding more glyphs to the font
Bro please activate windows its like 5 bucks😭
I refuse
idk try make it 3D
How about 4D?
You know you can make better games using Unity.. right?? Its much simpler and faster
That's definitely an option. I just happen to hate myself a lot hehe.
Thanks for the comment magneto.
Activate windows
I refuse
@@lurple_ I fear you. Subscribed so you don't kill me.
Good, that was a sensible decision.
Terribly low quality mic. You talk so fast that you skip and mutter some words, making it harder to understand you. You don't need to rush bro
I agree with the quality, I definitely need to and I will invest in a better one soon, and I apologize for rushing so much, I have a very low self-esteem so it's difficult for me to listen to my voice so I just record myself doing the voiceovers only once even if they come out not too well, I guess I have to work on myself in that regard.
Thanks for the comment, and pointing out the flows, I agree with all of your points.
@@lurple_ it just takes practice :)
i could understand you fine :)
You need a better microphone for sure and/or work on your accent/pronounciation. Uncomfortable to listen to. Sorry.
I actually bought a new mic, I'm sure you'll be able to notice that in the latest videos, and yeah I don't like my pronunciations as well, I'll try to work on them.
Thanks for the comment.
also, do you have a discord server? id like to join and help/be influenced by these kind of ideas/creativity
I don't have one yet, but I'd be open to making one
@@lurple_ if you do i’ll be happy to join. Again nice video, hope you’ll post updates on this project
I'm planning on making more videos on the project soon, I'll be sure to mention in the next video if I make a discord server as well, so be on the look out for that.
Hey I've just made a discord for my project, I made a community post with a link to it, feel free to check it out if you like.