Suggested Some Sort of Programming Module for Educational Purposes

J Young Kim

New Member
Contributor
Design
Rational:

Terasology is a game, and this is a fact. It was built to be an open-source sandbox, where players can add easily add modules to enhance their experience, whether it be the Cooking module to add a cooking aspect to the game or the Rails module, where players can make use of rails and mine carts. However, I believe that Terasology can be expanded to be an educational tool, especially towards those who would want to learn programming. Thus, I propose that there should be a module that adds the aspect of programming into the game that is designed to teach people interested in programming/Computer Science.

Terasology can be a great tool for teaching programming because it has the capability of showing 'instant-success' with coding. For instance, if a player programs a bot to pick up carrots once they are ready to be harvested, the player will be able to see the 'instant-success' of his or her code when the bot picks up the ripe carrots. With this 'instant-success' comes a sense of euphoria of 'It worked!!!' This would give motivation and drive to the player/programmer to learn the concepts of coding (and hopefully create new content for Terasology), thus fulfilling the mission of the educational aspect of the game.

What the Module will Consist of:

Because this module is more for educational purposes than adding a new aspect of playing the game, there will be some aspects of the module that would make the game seem a bit unrealistic (a realistic version can be created as a separate module).
  • Unrealistic Mode (Educational): First of all, no computers or power sources would be required to starting programming. The programmable bots can be spawned into the player's inventory via the command line/terminal. In addition, the module will spawn the player into a world where there are things that the bots can do (i.e. farms, mineshaft, etc.).
    • Module will add: Programmable Bots, pre-made world, an in-game "book" of instructions regarding how to code.
  • Realistic Mode (For Players): Since the idea of automation via programming makes the players' lives easier, obtaining the ability to program should be difficult. The items required to craft a bot would be hard to acquire, a computer would need to be crafted, and a power source would be necessary to charge the bots/computer.
    • Module will add: Programmable Bots, power sources (can be a separate module on its own; can have electrical wires, solar panels, etc.), a computer, and an in-game "book" of instructions regarding how to code
How the Module would Work:

*I will not talk about a realistic mode any further since the main topic is regarding education, but if someone would like a new a post regarding the realistic version, please comment below :D

The module will first have the player spawn in a bot. The player can start programming by right clicking on the bot. This will result in an in-game IDE, which the player/programmer would use to program. The programming language used will be custom made. In other words, the IDE will not use an actual programming language such as Python or Java, and instead will use one that will be created by the developers. Based on the program, the bot will start doing its thing. The player would also have the ability to either turn on or off the bot.

The bot will have a light on the top of it. When the light is off, it means that the player did not turn on the bot, or the bot simply has no script. When the light is red, that means that there is a syntax error, and the IDE will display the syntax error at the bottom of the IDE. When the light is green, that means that there is no error and the bot will execute the script.

The Programming Language:

The programming language will have a module that the player can import. This module will have many pre-defined methods for the player to use when coding. For advanced programmers, the player can decide not to import any module, and straight up code all the methods.

The programming language syntax should follow a similar style to Python (https://en.wikipedia.org/wiki/Python_(programming_language)), since it's more-user friendly to new aspiring programmers (Java syntax may turn off the learners with the semi-colons and curly-braces). For a quick crash-course regarding what the Python syntax is: The Python syntax relies on white space (indentation) for code. For instance, in a for-loop, every line that's indented below the for-loop statement is a part of the for-loop. For more information, please see https://en.wikipedia.org/wiki/Python_syntax_and_semantics.

The programming language will be very "English" like. For instance, the programmer can write 'do 10 times: (insert indented methods)' for for-loops and 'while (insert condition)' for while-loops. Of course, the developers should make the language which they view seems to introduce the concepts of programming, but without confusing new-comers.

The module mentioned earlier will have pre-defined methods for helping the programmer code bots. Some of these methods could be 'mineDown(10)', which can be used to make the bot dig 10 blocks down, and 'plantSeeds(10)', which would make the bot plant seeds over 10 blocks (a straight line in the direction where the bot is facing).

An example script of a tree-farming bot:

xCoord1 = x-coordinate of the tree
yCoord1 = y-coordinate of the tree
zCoord1 = z-coordinate of the tree

xCoord2 = x-coordinate of the chest
yCoord2 = y-coordinate of the chest
zCoord2 = z-coordinate of the chest

while true:
goTo(xCoord1, yCoord1, zCoord1)
if treeIsAllGrown( ):
chopTree( )
pickUpBlocks( )
replantTree( )
goTo(xCoord2, yCoord2, zCoord2)
putItemsInChest( )​

How to Make it More Educational:

For educational institutions to fully utilize Terasology as a teaching tool for programming, there can be a manual of labs that students can do. Such labs can involve programming a bot to chop and collect wood, mine and collect stone, get water, etc. The labs can be used as a method of introducing programming concepts. For instance, for chopping a tree, the student can be introduced to lists/arrays. When collecting the blocks, the student can program the bot so that the items picked-up by the bot is stored in a list/array, and then when emptying the blocks to the chest, the student can access the list/array to empty the contents to the chest.

Please feel free to comment regarding this idea, I would love to hear some feedback!
 
Last edited:

Hybrid

New Member
What you're suggesting seems quite similar to ComputerCraft (http://www.computercraft.info) and ComputerCraftEdu(http://computercraftedu.com/).
imho, implementing a custom scripting language is a pretty terrible idea. Both Lua and Python have Java interpreters, and would be fairly simple to integrate. All we would have to do is write a bunch of functions that talk to the engine API functions, and then expose them to the interpreter as a set of bindings.
 
Top