Criticism is needed for the idea of a large project

Dear colleagues! I am glad that you do not fall into pessimism for long. And the love of hacking and the success of the Scratch community convincingly show that children are thirsty for SUCCESS. So we need to give them a harmless option for achieving success. And the creation of games (namely creation, and not just pure programming!) gives such PUBLIC success. And the popularity of ROBLOX, which is not loved by our teachers, is a striking example of this.
Therefore, based on the requests of my students, I am starting the following project:

  • 2D platformer-sandbox, similar in gameplay to Terraria.
  • The Main Character of the Game can "look behind the seamy side of the World" and go into development mode.
  • The game world is a simulation based on the actor model.
  • Each next quest can be completed in two ways:
  • get offensively low points, no matter how dexterous your movements and mouse clicks are, if he does not look into the code.
    -- get high scores by studying the inside of this game world, which is a computational model of everything that exists and happens in this world. To do this, the student needs to write his own additions to this world.
    -- the student can only supplement the educational simulation with his creativity. Changing its existing actors is prohibited and impossible.
    -- after completing the quest, the Player receives a link to the next episode on a separate web page.
  • of course, it is necessary to show where on the Internet you can get free pictures and sounds, for those of them who are more interested in building a plot and, accordingly, the interaction of actors in the model.

My children liked this idea, and how do you like this idea?
By the way, I am not a programmer at all, I am a school teacher, so I really count on your constructive criticism and useful ideas.
:heartpulse:

Sounds like a fun project. Get kids to (help) implement it! Maybe the kids who took your course last year.

I don't know anything about Roblox or Terraria so I don't think I'm the best person to help with design questions at this stage. Maybe once you run into issues with the implementation I'll be able to help. :~)

sounds interesting!

Seems like we are the opposing forces? :)

maybe this should be in Requests to the Community ?

it sounds very interesting, and like it might take awhile to make. good luck!

terraria is like a 2d version of Minecraft but with more content (and more difficult)

roblox is a 3d community driven game

It does not sound like a recipe for success - rather, it is an enormous amount of work.
Every aspect of your idea is a complex problem by itself - tile engine, at least minimal physics engine, interaction model...
I'm afraid that you want to create a 2D Roblox engine in Snap.
The simplest way to build a very complex project seems to be the two-stage approach ie. Unity, Minecraft, Roblox app acting as a server, driven/scripted by Snap! program with some kind of communication (TCP, WebRTC, MQTT)

If you want success (or to reach the "low-hanging fruits") for your students, ask them to recreate simple, single-scene games and expand them with hi-res graphics, levels, network mode, 2.5D and so on.
Simple games mean Frogger, Pac-Man, and Asteroids to name a few.

To see my point:
Missile Command


high-res remake

Other candidates


PSST
download
Jetpack
download
Scorched earth
download
Gravity Wars
gwscreen
Lunar/Moon Lander
73988iC787FA18B8D47EFB

Wouldn't mind a modern Gravity Wars or Scorched, not gonna lie.

My issue is the idea that it's too complex, and yes and no, but for a teaching tool for a class of students, it's actually a brilliant idea, and even a group communicating by the forums.

The simplest way to build a very complex project seems to be the two-stage approach ie. Unity, Minecraft, Roblox app acting as a server, driven/scripted by Snap! program with some kind of communication (TCP, WebRTC, MQTT)

By adding a complexity layer, calling it a Tile Engine and a Physics Engine and then saying the best way to do this is with someone elses tools... you're basically telling people it's not worth their time and basically saying from on high "You're not good enough, give up" and they're listening to you, loud and clear.

Let's be clear, to start with, a tile engine in snap! is just a list of lists, and then adding properties to each tile in those lists. Defining if it's a Wall/Door/Secret/Air, and then figuring out how to get snap to draw it and how to interact.

If you don't move those tiles at all, you have a maze game like Chips Challenge
If you move those tiles from left to right, you're making a platformer like Mario
If you move them from top to bottom you've got a SHMUP like 1942 (SHoot eM UP = SHMUP)
If you project those tiles Isometrically you've got a game like Diablo.
If you cast a ray from the player you've got a First Person Game like Wolf3D
If you cast that ray from behind the player and draw them too, you've got a third person game like MAX PAAAYNE! (Not a 90's game, couldn't think of one from the same era, they mostly came later)

Yes, there is far more to it than that, but you're not making a AAA game, you're teaching them, via snap, how to break down the problems inherent in building a game. Once they get that handle, then you can show them that stuff in a "real" language, to compile for hardware to sell for, but that's also the point you have to show them what snap! isn't, but that isn't the goal here, or a goal at all.

Yes, they are complex, but they're not complex enough that they can't be broken down into units and taught and that's what snap! is for! That's exactly what snap is for!

Snap isn't a game engine, but what it can teach is how to build the tools to make a game engine and all the hidden parts underneath. You're not going to be making a AAA game with snap, but you can show people what goes into one.

Assuming Unity is a gold standard is a bad idea, because not only is it not, it rips off end users something shocking.

This is brilliant.

Yes, exactly! Snap! isn't an X but can teach how to build an X for a very wide range of values of X. That's it's pedagogic virtue. That's why, imho, a Small Language Model written in Snap! is better than an interface to ChatGPT. (The latter can be good, too, but not as good.)

Does it? I don't know anything about it, really, except that they don't charge me money to play Wordle.

No, it's not what I said. It is just what you hear or feel, for whatever reason.
I've just said, based on my real-life experience, that you should solve problems in a pragmatic way and not to prove anything. Talking to the truth, I'm getting angry that you guys encourage kids to make pointless and futile efforts, which quickly leads to frustration.
Let's say you create a simple neural net by hand. Implement perceptrons, carefully craft the activation function, and do all the math. However, it's not a valuable foundation and does not give you any better long-term understanding of the complex AI concepts and usage. You may even lose the view of the forest behind trees. Using the proper tools, say the TensorFlow, you may load the MobileNet or YOLO model and immediately start to build and test something. Who will be more gratified - the one with the handcrafted net to infer a 3x3 dot pattern or the one that created a smart doorbell or a "magic" talking mirror ("Nice to see you, mom")? And who will promptly see the limitation, like overtraining of the net?
Also, shouldn't we reach further standing on the shoulders of predecessors instead of reinventing the wheel repeatedly?

But the Beetle Blocks is rendered by a native library, not with a turtle graphic. So the urge for pedagogic value is relative. And the value of the 3D rendering is lower than ability to experiment with the extruded shapes. I call this a pragmatic way.

A second thought: choosing the right tool to do the job is a crucial life ability.


As for the simple, tile engine performance

I realize you're responding to @callietastrophic, not me, but I'll answer for myself anyway: You're right, I overstated my case. I should have said that it's important both to use existing good tools and to learn the basics of how the tools are made.

In a simpler time, in the early days of wysiwyg editors, such as Word Perfect, I used to use the down-to-earth example of non-programmer users who didn't understand why they had to give a Save command to make their edits permanent. (Users of non-wysiwyg editors, such as Emacs, generally didn't have this problem because the explicit verbs (commands) made the existence of the program itself as an intermediary more salient to them, whereas wysiwyg users felt themselves to be directly manipulating the text. This is the soft underbelly of wysiwyg.) If you give that non-programmer user enough programming experience to get how the computer's main memory is different from disk, they're more likely to remember to save, I claimed.

(Digression: Today you have Google Docs and you don't have to save. I hate this! It makes it hard for me to revert a possible change, because I'm not in control of the point to which reversion would happen. Preventing the user losing their work is virtuous, but I prefer the Emacs (or Microsoft Word) style of saving incremental backups separate from the official current saved text, even though that requires a slightly more intricate mental model of the editing process to recover a backup.)

Anyway, I think the same is true about building a LLM in Snap!. I wouldn't try to do real work with it, but having built one, when I use ChatGPT I'm less likely to spout pundit nonsense about runaway computer intelligence destroying the human race.

What are Large Language Models? - LLM AI Explained - AWS * Open AI's GPT-3 model has 175 billion parameters. Its cousin, ChatGPT, can identify patterns from data and generate natural and readable output. While we don’t know the size of Claude 2, it can take inputs up to 100K tokens in each prompt, which means it can work over hundreds of pages of technical documentation or even an entire book.

I'm not running away crying loud ... but it's just a matter of the scale.
The brain has ~10^11 neurons, ~10^14 synapses :link: List of animals by number of neurons - Wikipedia and the approximated performance of 1 exaflop. Computers with such power are available right now.
Any inferences you make about AI, based on the "proof of concept" projects, may not apply to the scale of the commercial data centers.

Oh, I'm not saying they won't get smart like us, just that they won't then rise up and exterminate us. (And I confess to hoping that it'll take something cleverer than an LLM to get there. I like to think that humans have understanding, not just huge correlations.)

No, it's not what I said. It is just what you hear or feel, for whatever reason.
I've just said, based on my real-life experience, that you should solve problems in a pragmatic way and not to prove anything.

Sorry, you're right, I did bend what you said a little bit.

Talking to the truth, I'm getting angry that you guys encourage kids to make pointless and futile efforts, which quickly leads to frustration.

This however, I agree with, but I'm coming from a different angle.

You're thinking that we should continue on the shoulders of giants, but all I'm saying is those giants don't exist in the way you think they do and Unity and Unreal are definitely not the right choices anyway.

So, I picked those games because aside from 1942, I played them all. I was thinking of 1943, the sequel that made it down to australia in the 90's. I did see 1942 cabinets, but I was specifically thinking of 1943 and the animation of the player plane doing an extremely smoothly animated dive bomb in the attract reel, something you couldn't actually DO in game, but that's why it was on the attract reel, because I still specifically remember that animation lol.

Aside from the joke (and in-joke) about Max Payne, strictly because I really can't think of any third person ray-caster tile engine games. All the examples I recall are using primitive 3D and that is currently beyond snap!'s scope. Currently.

All of them, even Mario, were written by kids/young men experimenting with limited hardware, most of which was purely guesswork in the first place. PC's in 1992 were meant to be for businesses, wholely and solely mathematic logic, they weren't designed for Wolf3D and yet, a kid figured it out and did it, and that kid, John Carmack, proceeded to shape and drive way computers were made for around 15 years, the reason we have the machines we do at the moment isn't solely because of John, but our general purpose devices are general purpose because of that.

The problem is, when Carmack left games, a lot of companies jumped into the space and started selling 3rd party tool kits, like Unity and Unreal (Ok, Unreal was already there, but they flourished without John in their way) and the underlying assumption that making games is hard and that they do the work for you.

Which is what I've been saying for a long time, we treat programming as a whole, as if it's still the 80's and no-one knows what they're doing, which isn't even remotely true and hasn't been for a while.

Kids have access to godot/scratch/snap/unity/unreal and yet, where is this generation's John C? They have these toolkits around and yet... nothing? Why?

Because they're being told it's too hard. They're being told to use unity, they're being told that digging further is unnecessary because those are solved problems.

Which means that no-one's exploring anymore and we're teaching kids the wrong lessons.

The reason we need to teach people the underlying mechanics is because they'll learn more doing it, and you can use snap! to demonstrate these things visually as well. You can get them to think about it themselves and teach them that way, instead of assuming Unity is a good idea. (It is not)

Like, I'd do this myself, but I'm all talk, because the one thing John Carmack did right, is leave all his work open source, so you can (If you can read text code) see how john went from tiles and rays to BSP Geometry and beyond...

Except, as I keep saying, the code he wrote is written for toasters and arguing with those toasters to produce things they weren't designed for, so you can't really implement those in snap because snap doesn't use or understand 486 logic, because at a minimum it doesn't NEED to, kids aren't using 486's any more so we don't need to understand DOS and memory management.

Which isn't to say that's a bad idea, that kind of baseline is still a very good idea, but it isn't EXPLAINED in modern terms, because it gets handwaved away as a solved problem. Which is endemic to computation as a whole.

i'm not sure what you mean by this. you absolutely do still need to understand memory management if you want to significantly speed up your code, and many principles from the rest of computing revolve around it. likely the most important bottleneck in graphics rendering is sending data from the cpu to the gpu, so much so that you can get hundreds of thousands of times better performance just by optimizing this. if you don't understand memory management, you likely won't understand how to pack the data efficiently for this.

why point out a project entirely revolving around getting the best performance possible out of a machine, say these things shouldn't be handwaved away, and then immediately start handwaving?

snap also seems entirely against this. performance in snap isn't particularly good, the ways to optimize performance often change, and when kids go on the forums to try and learn lower level details they get told to stop talking about javascript.

this is absurd to say. how exactly is anyone supposed to control whether they're idolized or not? there are tons of massive technological innovations well before then and up till now that just aren't idolized like this. how would any kid nowadays get even the best and widest appealing games known by the general public?

what would you even mean by "this generation's John C"? if you want wide appealing impressive games and other projects, i suggest toby fox. if you want impressive feats on limited hardware, there are tons of teenagers that work on and make chiptune and demoscene projects. if you want a shift in how computing is done nowadays, it's very hard to find the ages of people working on open source projects, but dominic szablewski did make qoi, which got little response. i imagine any teenager who can't even sign up and pay for a domain name and blog would have a much harder time sharing any projects they made regardless of any inherent quality, and even if it did get well known, it's still unlikely the public in general would know about it.

why not mention ken silverman? they were very young when they started the build engine before doom even released, and the build engine was itself released not long after, with far more capabilities than the doom engine and completely different internals.

why point out a project entirely revolving around getting the best performance possible out of a machine, say these things shouldn't be handwaved away, and then immediately start handwaving?

I mean, on the very next line I did say explicitly that... so that's a little disingenuous.

What I mostly meant, is a lot of the code for Wolf3D is focused on extendable memory and what to do if the machine didn't have enough, or had too much that it freaked out, whereas, while memory management is still important, you're not wondering if you're going to load the wrong sector.

there are tons of teenagers that work on and make chiptune and demoscene projects.

I mean, as a demoscene watcher for a while, unless I'm looking in the wrong place, most of the major sceners are all my age or older? Mind, I haven't really been a part of the scene in a while and only really during the 2000's, I occasionally check back in, but mostly for party updates and if anything cool has popped up? If you've got people I should look into, let me know.

I was always in awe with the 64kb scene. I at some point want to try and put werkkzeug in snap, but that's written in C++ which I hate more than C lol.

why not mention ken silverman? they were very young when they started the build engine before doom even released, and the build engine was itself released not long after, with far more capabilities than the doom engine and completely different internals.

Because I'm only using a subset as an example, not broad strokes. Like if we're going to mention brilliant coders, what ever happened to Corrine Yu? She was better than Sweeney and Carmack and Silverman ever were. Or Stevana Case?

Perhaps the reason you're not seeing as many young heroes these days is that the low-hanging fruit has been eaten?

I don't even think we've gotten far enough off of the ground to even see that there's low hanging fruit. We've made it a way off the ground somewhat, with a little bit of clever scaffolding we found lying around.

I also think people are desperately trying not to notice the scaffolding we're using is made of duct tape and string and that the tape has lost its adhesive and the string has frayed and everything's about to fall apart, and the kids that found the scaffolding in the first place are nowhere to be seen.

I'm a cynic.

I'm actually an optimist, and would much prefer optimism over cynicism, I would also much rather just do what I want rather than complain about it on forums.

I'd much rather actually be able to implement the thing I mentioned earlier instead of using as an example, but I don't need to know how EMS works to port wolf3D over because we don't freaking use it anymore.

Maybe if I was porting dosbox over to snap, but that's still c++ which I still can't read.

It's why I'd much rather just drop the wolf3D source into snap and have a lexical analyser turn it into blocks I can run, but I also know that's beyond Snap! scope. I'd do it myself, but I really can't read text. I just can't.

Can you ask ChatGPT to do that for you? ;~)