Do you think I could just leave this part blank and it'd be okay? We're just going to replace the whole thing with a header image anyway, right?
You are not logged in.
This project was inspired by http://www.eeforumify.com/viewtopic.php?id=31334
Big thanks to UgotPwned who ported the Applescript version to C#!
This project allows users to send everybody edits commands in plain English. The reason why this project was not merged into the aforementioned was because I want to be able to send multiple commands per message and to use "if" statements as well as chaining messages in sub-messages. Moreover, Penguin allows a bit more portability because it is compiled into an intermediate language (Iceberg).
It currently exists in AppleScript but it is being converted into C# (which is why the GitHub repo is currently empty). I'm looking for phrases that you would expect to work with Penguin. Very subjective phrases (delete everything except the art) would be very difficult to implement, for example. However, "delete everything except my layer" would be acceptable, because a layer is a valid object. Something like "delete everything that I wrote in the last 30 seconds" would also be appropriate.
Complicated phrases like "please remove all of the grey basic blocks and replace them with blue keys if there are no red keys" are encouraged. Simple phrases are good too. Pretend that you are talking to someone on EE and giving them instructions. If you would like to contribute, simply PM me or post to this topic with a list of phrases.
Planned/partially implemented features:
- Undo (in terms of time, blocks and layers)*
- Fill
- Erase*
- Replace*
- Lines, circles
- Move
- Resize
- Ambiguity helper (what do you mean by "grey?" Grey basic blocks?)*
- If statements (and reverse if statements)
- Cancelling*
- Multiple commands per message (do this and this)*
- Remove unauthorized edits to your creation (within a certain boundary)*
- "Here" (find the current position of the player and use that as the anchor point)
-- Allow the player to move to another location and set another anchor point
- Number-word detection ("fifteen", "one")*
Compiler/language planned/partially implemented features:
- Tokenization of block descriptions (able to recognize descriptions from regular text)*
- Partial tokenization (when a block description is not precise, is misspelled or is separated by a useless word)
- Command extensions (append "+" at the end to add more)*
- Line orphan detection (when a line doesn't end properly "remove") prompt the user to fix it
-- Allow the orphan to be resolved if possible ("replace all of the purple switches with find all red keys that are not here")
--- Here, "with" is an orphan but is then the second expression is resolved and so with is not an orphan
- Useless message detection ("hey bot how are you?") and "make a red line here no nevermind"
- Optimization (combine and rearrange commands to reduce load on server)*
-- Moving blocks off of the map, replacing the same blocks twice, adding the same blocks twice that already exist
- Context aware (using "move these blocks left", "move the left blocks left")
-- Try to know when users are talking with the bot by analyzing messages for commands (could be very difficult)
- Search functionality*
- Chained statements (if this and if this)
- Localizations
- "them", "those", "it", "that" object resolution ("move all of the red blocks left and then replace them with orange ones")*
-- Here, "them" refers to "red blocks"*
- Ambiguous object detection ("move the red keys left and erase the red candy blocks then resize the red ones")
-- "Red" is ambiguous because it could refer to red keys or red candy blocks. However by default Penguin would select the token with matching ambiguity (but would still prompt).
If Penguin is not allowed to access the map, Iceberg's functionality will be limited. For example, the fill command in Iceberg:
FILL:100,232->122 (begin at coordinate 100,232 and fill it with 122 blocks) will be sent instead of being expanded into create block commands. This means that your application will have more work to do.
Last edited by Hexagon (Aug 7 2014 7:24:36 am)
Offline
Have you already started? Sounds like something I would like contribute to.
Offline
could you make an icelandic version it would be nice
could you make an icelandic version it would be nice
I definitely could add localizations (that's actually a very good idea) however I would need translators.
Last edited by Hexagon (Aug 6 2014 2:03:24 pm)
Offline
if you need dutch translation pm me
if you can read this....good for you
Offline
I really like this idea, I'm glad some people are looking to implement it.
The biggest problem I'd find is the lack of flexibility. The need to insert every single phrase (like a command system) doesn't seem appealing to me. "Delete the red that <USER> placed"
What is red? For how long? Do I avoid the rest? what about orange?
"erase/delete/remove/revert/undo/fix what <USER> did/placed/trolled/drew" but for everything is a task for someone with more patience/skill than I. Unless I'm overthinking this.
Offline
I really like this idea, I'm glad some people are looking to implement it.
The biggest problem I'd find is the lack of flexibility. The need to insert every single phrase (like a command system) doesn't seem appealing to me. "Delete the red that <USER> placed"
What is red? For how long? Do I avoid the rest? what about orange?
"erase/delete/remove/revert/undo/fix what <USER> did/placed/trolled/drew" but for everything is a task for someone with more patience/skill than I. Unless I'm overthinking this.
I agree. However this is a very difficult challenge to solve (as most of the "command-words" need to be implemented). It's difficult to tell a computer something vague since it doesn't know English.
There are a few partial solutions to this problem including stemmers (removes the endings from words so less commands have to be specified) and English language parsers (detecting sentence composition and what words are talking about each other and so forth) which help. Crowd-sourcing common commands might help but the command system still has to be used.
Regarding "Delete the red that <USER> placed" in an optimal scenario it would ask for clarification to limit it to a specific block id (by suggesting keywords for you to search for). However this makes the task a little more complicated since if the user just drew red basic blocks the computer should just know that that's red.
Last edited by Hexagon (Aug 6 2014 4:15:07 pm)
Offline
I suppose that's true as well. The user might have something useless like please/bot/now/again or even include extra clauses... though I question why they would try conversation with a bot. (I guess I'm not them)
Offline
I suppose that's true as well. The user might have something useless like please/bot/now/again or even include extra clauses... though I question why they would try conversation with a bot. (I guess I'm not them)
Users can do anything (well, pretty much anything). However if you have an alternate solution I would be interested in it, if you have one.
Offline
Muftwin wrote:could you make an icelandic version it would be nice http://i.imgur.com/1ntnj.png
I definitely could add localizations (that's actually a very good idea) however I would need translators.
If you need Welsh... bah - nobody needs Welsh
Did a bit anyway, even though nobody will use it:
English Welsh Undo Cefn Fill Llenwch Erase Dileu (Cael gwared ar - if you want to remove a certain object rather than general) Replace Newid Line Llinell Lines Llinellau Circle Cylch Circles Cylchoedd Move Hwb Resize Newid Maint Cancel Diddymu Stop Arosiadau Here Yma And a
Last edited by Metatron (Aug 6 2014 4:59:57 pm)
Thank you eleizibeth ^
I stack my signatures rather than delete them so I don't lose them
Offline
As long as there are translators, I can add as many languages as needed. Some of the lesser-used languages may be accessible through a command to activate, however.
There will be a bit of command text to translate (for example "Your search returned <number> results"). The 2000+ block descriptions might take a bit more time (but there is some duplication, which might make it easier).
Offline
[ Started around 1732387266.2901 - Generated in 0.105 seconds, 12 queries executed - Memory usage: 1.57 MiB (Peak: 1.75 MiB) ]