Even if it is not a game mechanic, there is no question that it is intentional, even just as an easter egg. The fact that it has been publicly announced, and that there is "validation" code involved, proves that it's a deliberate feature. Therefore, it can be compared to using a cheat code that presents a debug menu. If accessing a debug menu through a cheat eventually led to ACE, it might make for an interesting Youtube demonstration, but it shouldn't be considered a legitimate world record in any category.
Obviously, code that is incapable of controlling the underlying platform in any way whatsoever is not what the ACE term was intended for. This code will have no visible effect other than modifying a database, which only indirectly affects what is displayed on the screen through the normal operation of the game engine.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
How is there no question involved?
As the creator, I know there is no question, but how are regular players out there supposed to know that?
Where has it been announced?
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
If you stored some Lua or .net IL in the database, and that there are enough bindings to turn the game into something else, I'd say it is ACE. Code is code is code, whether it is CPU opcodes, VM bytecode or interpreted script.
Just putting or deleting data sounds more like memory manipulation, unless you hack your SQL interpreter to access stuff outside its jail (UPDATE val = 80 FROM ram WHERE address = 2753577)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
Technically, this thread is the announcement. Anyone who reads the first post (and by definition the rest of the thread) and plays the game when it's released is going to know that there's an intentional ACE-like exploit. Admittedly it's a niche community and could only be a very small fraction of the people playing the game, but it's still there in public.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family.
Now infrequently posting on Bluesky
Besides, running an interpreted scripting language in a tightly controlled sandbox environment, and even with some commands deliberately filtered out, does not constitute "arbitrary code execution" in my books. You can't do anything you want.
Thanks for your condescending tone. Since you seem to have trouble with reading comprehension, I've readded a bit of context above. If you'd kindly reread it, you'd notice that I wasn't talking about SQL, but about the ability to alter game values - and that alone is not turing complete.
That being said, SQL92 is NOT turing complete. Several database vendors support extensions (like stored procedures) that make it turing complete, but that's not true for every SQL implementation. For a simple embedded SQL implementation in a game engine, I'd assume it to not be turing complete unless stated otherwise.
Anyway, simulating a turing machine inside the game is different from taking control over the game. There are also videos of people simulating turing machines using minecraft blocks and triggers. While awesome, I think that simulating a turing machine within the game is different from gaining control over the turing machine that's running the game. The latter is what we know as ACE runs, the first one is different enough that it'd deserve its own name.
For that matter, "turing completeness" isn't necessarily as descriptive as many people seem to think. It's a highly mathematical term, and it's so low-level that there are many, many things that are "turing complete" yet basically unusable as an actual programming language.
XSLT is turing-complete. Conway's Game of Life is turing-complete. Magic the Gathering is turing-complete. That doesn't mean, however, that they are actually usable for computing anything.
(The thing about turing-completeness is that it assumes an unlimited amount of resources. Even seemingly trivial operations or rules can become turing-complete if the amount of resources/amount/space/memory available is unlimited. The thing is, with many such things, you would need craploads of those resources to do anything useful, and it would take like the age of the universe to do it.)
Most importantly, though, being "turing complete" simply deals with computations. It doesn't say anything at all about what you can do eg. with the hardware the program is running it. For instance, being "turing complete" doesn't mean that you can eg. draw a pixel on the screen or play a sound. In fact, you aren't even guaranteed to be able to write a certain value at a certain memory address. It only means that you are able to perform a given numerical computation and have it in some form that can be interpreted, somewhere.
It's more practical to estimate how easily you can express a program with the thing, not if it's theoretically capable of doing it (given an infinite amount of memory and time).
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Samsara wrote:
Nach wrote:
Where has it been announced?
Technically, this thread is the announcement. Anyone who reads the first post (and by definition the rest of the thread) and plays the game when it's released is going to know that there's an intentional ACE-like exploit. Admittedly it's a niche community and could only be a very small fraction of the people playing the game, but it's still there in public.
Announcement for what?
plays the game when it's released
What game?
If I take your idea to its logical conclusion, we much now reject ACE for every single Windows submission, because we can point to this thread and say it's intentional and not ACE.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Joined: 11/13/2006
Posts: 2822
Location: Northern California
Nach wrote:
Announcement for what?
plays the game when it's released
What game?
If I take your idea to its logical conclusion, we much now reject ACE for every single Windows submission, because we can point to this thread and say it's intentional and not ACE.
Okay, if you want to get pedantic, it's not an announcement. It's just public information.
take your idea to its logical conclusion
What idea?
All I said was that you just told a group of people that you're making a game that may or may not include an intentional exploit. Where did I imply that every Windows game has this intentional exploit?
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family.
Now infrequently posting on BlueskywarmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Samsara wrote:
Okay, if you want to get pedantic, it's not an announcement. It's just public information.
Public information about what exactly?
Samsara wrote:
take your idea to its logical conclusion
What idea?
That some vague details should be used to disqualify some random game from using a certain technique.
Samsara wrote:
All I said was that you just told a group of people that you're making a game that may or may not include an intentional exploit. Where did I imply that every Windows game has this intentional exploit?
You wrote:
Samsara wrote:
and plays the game when it's released is going to know that there's an intentional ACE-like exploit
What you're saying can be understood in one of two ways:
1) Somehow people are going to magically know which game this is regarding, so they'll know it has an ACE-like exploit.
2) People now know there is some game out there which contains an intentional ACE-like exploit, and therefore every game which meets the criteria discussed in this thread (Windows game) must be suspect.
Since people magically knowing from this thread what is being referred to is illogical, especially considering that the people here have no idea which company the game is being made by, what it's about, or anything else, nor any games I was involved in till now, the second explanation is much more viable, even though that argument also seems absurd, but less so.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
I'd say that the number of games that run on SQL, allows the player to inject SQL, contains code to filter out certain SQL statements, and display "You - SQL" in the credits is quite low. And even if all the details posted in this thread are completely made up, the same arguments apply to any game that is found to have an intentional backdoor if such a backdoor is used in a TAS.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
HHS wrote:
I'd say that the number of games that run on SQL
It's quite popular in cell phone games these days.
SQL is also probably used way more in games than you might think. It's not like they advertise that they do so.
HHS wrote:
allows the player to inject SQL
SQL injections is still one of the most common bugs in existence. If a game is running on SQL, programmed poorly, merges some input somewhere from a user, SQL injection possibilities are quite likely.
HHS wrote:
contains code to filter out certain SQL statements
Again another common SQL practice is to prevent certain categories of functionality to be locked out.
HHS wrote:
and display "You - SQL" in the credits is quite low.
I asked if it should do that, I didn't announce that it does so.
HHS wrote:
And even if all the details posted in this thread are completely made up, the same arguments apply to any game that is found to have an intentional backdoor if such a backdoor is used in a TAS.
Which still doesn't justify referring to this thread as an announcement for some game.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
I'd like to thank those who posted in this thread in giving criteria and discussing concepts for what is considered executing arbitrary code and what isn't.
I reviewed all your input, and extracted from it the crucial concepts that were discussed that had considerable logic to back it up. From amidst the discussion, it was quite interesting to see what ended up being the distilled key points. Please see: Wiki: Nach/ArbitraryCodeExecution.
Thank you all!
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Nach was posing a hypothetical question to inspire debate, without actually telling us it was hypothetical, a) to get us to be more honest, and b) because he's kind of a jerk that way. ;)
Or maybe he was telling the truth! Who can say. Well, besides Nach of course.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Kurabupengin wrote:
Can I play it?
You want to play a game which is under development and barely playable?
Also, why are you looking forward to a game which you know nothing about, not even the genre?
If you're just interested in playing some game because it's made by Nach, then there's Maze Master (instructions and discussion) which is one game I told people about that I made which you can play right now.
Kurabupengin wrote:
Or its just the actual TASing thing for Windows? I'm all confused right now...
The "TASing thing" for Windows is HourGlass, and no, that's not a game.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
We definitely need to be improving and expanding that page, as most players have no clue how to achieve this.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
That article reads like it expects you to have a lot of context that isn't in the article itself. Suggest the following modifications (I don't have a wiki-capable account):
1. How does code execution work?
Each system has an "instruction pointer" that points to the current portion of the program that is being executed. This is a location in memory that you will need to track down. The contents of that piece of memory are an instruction; for example a 1 might mean "add these two values together", and a 15 might mean "load this value from storage". Depending on the system, the instruction pointer will interpret different values as different operations. Thus you will need to know what operations the system supports and how those operations are represented in memory, so that you can figure out what exactly the system is doing.
2. How do I execute arbitrary code in this game?
It might not be possible. To execute arbitrary code, you need to convince the instruction pointer to point to a section of memory that is under your control. By controlling that section of memory, then, you control what operations the system performs. Ultimately, you usually want to get the instruction pointer to point to the area of memory that represents the controller's inputs. Once you have achieved this, you can write any program you like by simply changing your inputs; different inputs represent different operations.
3. Executing RAM
ACE requires you to be able to move the instruction pointer. This is where glitches come in, and will thus be different for every game. If you can corrupt the instruction pointer, then a common result is that the game will crash -- because the pointer is pointing to an area of memory that does not represent a valid operation.
However, it may be possible to carefully arrange memory so that the location the instruction pointer jumps to is a valid operation. For example, perhaps the pointer happens to jump to the middle of the part of RAM that describes the positions of the sprites on the screen; by changing which sprites are active and where they are, you could get different results from the glitch. Many games have an inventory system; if you can convince the instruction pointer to jump into the part of RAM that represents the inventory, then most likely by carefully arranging said inventory, you'll be able to achieve ACE.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Derakon wrote:
I don't have a wiki-capable account
Fixed, please help out.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Done. I'm not an ACE expert of course, and my understanding of exactly how consoles function may be incorrect, so I'd appreciate a proofread by someone with more low-level experience.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.