Share your repls and programming experiences

← Back to all posts
[GAME] Askew MAJOR UPDATE — Age of steel!
fuzzyastrocat (1511)

In this new version of Askew, you can build new structures, use new tools, craft new items and much more!

New features

Here are the main new additions to the game:

  • You can show/hide the chat with the h key.
  • You can see all crafting recipes by clicking on the < in the upper-right and then selecting a category.
  • New items and resources! Steel, ovens, steel walls, ash, workbenches, roofs, picks...
  • Some items require that you are near other items to craft them. This is indicated by an item with a + in the recipes menu. (For instance, to craft a wooden wall you must have 30 wood and be standing right next to an already placed workbench.)
  • There are now multiple tools! You start off with a saw, which can be used to saw down trees and do other miscellaneous tasks. To get stone, you'll need to craft a pick, which can be obtained with 20 wood and being next to a workbench.
  • To switch tools, just click on the desired tool in your inventory.
  • Improved anti-hack! People hopefully have gotten tired of uselessly spamming the server anyway, but if you still are thinking about it please don't.

Tips

  • Getting a workbench set up is essential since almost everything now requires being near one. Getting a pick is also very helpful to craft more interesting items (you'll need stone).

  • You can obtain ash by extinguishing (removing) a fire.

  • Steel walls are more difficult to build, but they're also more difficult for others to tear down.

Enjoy! If you find any bugs please report them!

KNOWN BUG: If you craft too many types of items your inventory overflows. I'm working on a way of fixing this (dropping items).

IMPORTANT: Open the game in a new tab! If you don't, you'll end up spawning in the middle of nowhere, because I've implemented a security system to only allow players from the site itself.

Comments
hotnewtop
DynamicSquid (4629)

Hi, quick question about lang dev. In a bytecode interpreted lang, does each function have its own stack? Or is there just one global stack?

fuzzyastrocat (1511)

@DynamicSquid This depends on the architecture. If you're using a stack-based VM, then there's only one stack and you keep track of the "frame base" (bottom of the current stack, whether that be global or function or etc) to "create" a new stack for function calls. In a register-based VM (or even in a weirdly made stack VM), you could in theory design it so that each function gets its own stack, which will make life easier, but that will be inefficient allocation-wise.

Whippingdot (553)

bRuH this is one of the first games I saw on repl talk and it is DOPE still. I LOVE IT. Please work on it more. It is godly

AJDevelopment (151)

me after figuring out how to turn:

me after doing it for 1 hour:

angrydoge (474)

I see you made a anti embed feature

StringentDev (202)

Make it mobile friendly please

fuzzyastrocat (1511)

@Lethdev2019 The nature of this game doesn't lend well to mobile devices. It requires many keys (and will require more in the future), so half the device's screen would be taken up with buttons to represent the keys and that wouldn't be nice.

TroyLilgeberg (8)

question are you gonna update this any more?

MichaelCheung_M (0)

This game was actually pretty POG
BTW there is a bug where it won't load any trees or rocks in repl, so you have to open the game in a new tab for the scenery to load in.

fuzzyastrocat (1511)

@MichaelCheung_M That's not a bug that I can fix, it's a bug with repl.it.

peternielsen112 (37)

Ummm it isn't working very well - only a 'saw' in my hand and nothingness as far as the eye can see any suggestions no error message shown...

fuzzyastrocat (1511)

@peternielsen112 Hmm, probably an issue with your browser or system since I can't seem to replicate it. Perhaps try again, maybe the server was down for a sec?

fuzzyastrocat (1511)

@peternielsen112 Open it in the new tab, see if that helps. If not, then it's something with your system.

peternielsen112 (37)

@peternielsen112 Ohhhh I fixed it. Just open in new tab

DynamicSquid (4629)

Fuzzy I just thought of a new language idea. What if a language was low-level like C, but also had a lot of support for metaprogramming?

Python and Ruby have support for metaprogramming, but they're high level. Lisp is low level and has metaprogramming, but the syntax isn't the best, and I want some features of C mixed in.

Would that be a good idea?

fuzzyastrocat (1511)

@DynamicSquid

Lisp is low level

wut

Now, yes, that would be cool. The reason it doesn't exist is because metaprogramming (I'm assuming you're talking about things like Python's eval, not macros) only really works well in an interpreted language. Why? Well, because that self-evaluation function has to run the whole interpreter/compiler from within itself. That's easy with an interpreter (since interpret is probably just a function in your code), but with a compiler? You now have to emit instructions in the executable to run the compiler executable with some kind of dummy file (or allow the compiler to take stdin input) and then run the compiler's executable output. You can see how that can get complicated.

And, more importantly, the new executable will be unable to interface with code that's in the main file (so x = 1; eval("x = 2"); won't change x) which is removes a lot of metaprogramming's power.

DynamicSquid (4629)

@fuzzyastrocat Ah okay. Wait so Lisp isnt low level?

fuzzyastrocat (1511)

@DynamicSquid Definitely not! Lisp was the first high-level language. (Some might call FORTRAN the first high-level language, and at the time it was, but by modern standards I don't consider it a high-level language.)

pazival (3)

@fuzzyastrocat can you restart the game because it is super laggy

TroyLilgeberg (8)

can you reset the world @fuzzyastrocat cause its super laggy

TroyLilgeberg (8)

theres a face in the bushes

JacksonMacGrego (0)

how to play?
what are controls

fuzzyastrocat (1511)

@JacksonMacGrego As I've said to others here: I'd suggest looking at the original post if you're new, that's why this one just lists new additions.

TroyLilgeberg (8)

i think the server broke because there is nothing here.

fuzzyastrocat (1511)

@TroyLilgeberg Should work, I was fixing the origin protocol to not allow forked repls.

SamuelAlexande2 (0)

how do you clear all sructures

fuzzyastrocat (1511)

@SamuelAlexande2 You don't. When the server restarts, the structures will be cleared.

SamuelAlexande2 (0)

@fuzzyastrocat ok thank you very much for the answer but much of the time people spam roofs and since they don't break it just lags. also i just want to give you a bit of support on this game because i really like it and i hope it does well for you

SamuelAlexande2 (0)

@fuzzyastrocat also make a button to drop items

SamuelAlexande2 (0)

@fuzzyastrocat and if you keep getting images of tools lying on the ground it is me sorry i was messing i won't do it any more

fuzzyastrocat (1511)

@SamuelAlexande2 All that is planned. I've been really busy lately and I just don't have the time right now.

fuzzyastrocat (1511)

@SamuelAlexande2 I'd really appreciate it if you wouldn't do that, since it's broken the server.

fuzzyastrocat (1511)

@TroyLilgeberg Probably because something weird happened and the server crashed. It should be fixed now.

tankerguy1917 (174)

this is a really fun game. if i had to make any suggestions, a map with the names of players would be the only one.
Also, sometimes when i try to place an item, it takes it out of the inventory, but doesn't actually place it. it might just be the way i push the mouse pad though, since im on a chromebook

fuzzyastrocat (1511)

@tankerguy1917 The minimap is planned. As for the inventory thing, that's probably a glitch with it not updating to the server properly.

TroyLilgeberg (8)

i went off the world

JasonLiu19 (69)

@JasonLiu19 base to experiment whether or not the base will disappear on reset

RobertFurr (64)

ay, I can finally play this since repl.co sites aren't down

BH13O6 (0)

This is so cool! How'd you make this anyways?

fuzzyastrocat (1511)

@BH13O6 Thank you! I made this with THREE.js, a javascript 3D rendering engine, and socket.io, which allows server and client communication with WebSockets.

IGotGot (0)

try add zombies and swords next this would make the game much for fun XD (tHX)

JasonLiu19 (69)

@IGotGot he will not incorporate violence into any software he makes

fuzzyastrocat (1511)

@IGotGot @JasonLiu19 is right, for this type of software at least. For instance, if I was to make a board-gamey style thing about world war two then yes, it would have "violence", but I'll never incorporate violence into a game where it's on a "personal" level (not strategic level).

DynamicSquid (4629)

Hey Fuzzy, quick question about lang dev if you don't mind :)

So remember our conversation about checking types at compile time for dynamic squids languages? I have an idea.

What if we turn each value into a type, and then just evaluate the expression based on the type to check it?

3 + 2 * 8
INT + INT * INT
INT * INT
INT
perfect!

3 * 4 + "squid"
INT * INT + STR
INT + STR
error!

Same for function parameters as well:

def f(x) {
  return x + 2;
}

f("squid")

STR + NUM;
error!

Like we don't even have to worry about the actual values, just their types.

Would something like that work?

fuzzyastrocat (1511)

@DynamicSquid FOR ASKING THIS QUESTION, YOU HAVE INCURRED MY WRATH err, I mean, sure!

You have just [re-]invented how typechecking works :D

However, don't actually turn the expression into the type — that would be inefficient. Instead, have each AST node have some function, say getType, that returns the type of its expression. (And that getType may call getType on its inner nodes, etc etc, so you get a recursive typecheck like you've described.)

DynamicSquid (4629)

@fuzzyastrocat Oh lol. I guess it's nothing new. How do you do it in Eros?

fuzzyastrocat (1511)

@DynamicSquid If you're asking about how it does the static checks of dynamic types thing, then say so in a reply (I'm not sure exactly what you mean).

In Eros, which didn't originally have an AST, things were a bit more complex. Basically, the parser was implemented as a bunch of recursive function calls, and each function call returned the type of the expression it parsed. It was pretty nightmarish, but it was more efficient at the time. Now, however, Eros uses an AST so it just does it like normal.

DynamicSquid (4629)

@fuzzyastrocat Oh, okay. Wait, is Eros on GitHub?

fuzzyastrocat (1511)

@DynamicSquid Used to be, isn't now since I keep radically shifting the project structure.

DynamicSquid (4629)

@fuzzyastrocat Oh okay. Eros-r-c is the main repl for that right?

fuzzyastrocat (1511)

@DynamicSquid Yes and no. Yes, in that it is the main repl currently. But no, since it's likely to change or get deleted and it's in a really weird transition spot right now (so looking at it will probably cause more confusion than help).

DillonGardner (3)

Do you think it might be possible to add some sort of single player mode? When I have played in the past everything was confusing because I spawned in the middle of some sort of village thing with platforms everywhere

fuzzyastrocat (1511)

@DillonGardner Adding a singleplayer mode would be possible but would require a lot of work which I don't have time for right now. The "village" you spawned in was something other players have built.

pazival (3)

@fuzzyastrocat I played and it had no trees, stone or anything.

fuzzyastrocat (1511)

@pazival That's related to the repl issue.

pazival (3)

The repl doesn't work for Askew. can you give me the link?

fuzzyastrocat (1511)

@pazival That's the real link. repl.it is partially down right now so it won't work until repl.it fixes it.

EshanRamprasad (4)

and I know you just released an update but how many updates do you think there will be and any teasers on what you might add next if you will add something

fuzzyastrocat (1511)

@EshanRamprasad I have no idea how many updates there will be. I have no idea what I will add next.