Confused on Steam Play and Proton? Be sure to check out our guide.
We do often include affiliate links to earn us some pennies. See more here.

Robo Instructus from Big AB Games, which is mainly a solo-operation, is a puzzle game where you need to guide a robot using a simple programming language.

Is it odd to think programming can be relaxing? If so, I guess I'm pretty strange in that way. Even if you don't know any programming, Robo Instructus walks you through things quite easily and getting started with it is pretty quick.

YouTube Thumbnail
YouTube videos require cookies, you must accept their cookies to view. View cookie preferences.
Accept Cookies & Show   Direct Link

As you might expect, it starts off incredibly and deceptively simple. Later levels start getting complicated but it never really feels overwhelming. Thanks to this, it could be a nice game to introduce someone to programming, to help them get a feel for it.

Solo developer Alex Butler said: "Each puzzle in Robo Instructus asks you to not only get your robot somewhere, but to properly articulate every step in how it gets there. Succeed and you can embrace a sort of narrative archaeology as you uncover the game’s secrets. He added: "I've been developing Robo Instructus for two years, the last three months in a beta phase where the game has been polished and improved thanks to the feedback of around 3,000 beta players. So now I'm very excited to see Robo Instructus releasing, and I look forward to the game finding its audience out in the PC gaming wilds."

As you progress through the game, it unlocks more functions for you to use. The setup is interesting and it does make you sit and think things through, rushing isn't really an option. Why? Well, levels come in multiple floors, with your written code being run again on each floor so you need to write code that can finish all the floors in a level in one go. To help with this, it does quite quickly unlock loops, ifs, vars, comparison operators and more.

I've found it to be a surprising delight. You can pick it up from itch.io and Steam. Not sure if you will enjoy it? There's a demo available on both stores, so give it a run and see what you think.

Want to know more about the developer and some behind the scenes info? Check out their blog post.

Article taken from GamingOnLinux.com.
13 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
The comments on this article are closed.
14 comments
Page: «2/2
  Go to:

Scoopta Jul 18, 2019
Quoting: Eike
Quoting: ScooptaI've avoided Haskell because it hurts my brain to look at. Not in the "I want to conquer it sort of way" but in the "run away in terror" sort of way. I'm really comfortable with imperative languages though so I usually do crazy things with them to challenge myself instead of trying to take on the beast that is functional programming. I write stuff like OpenGL game engines, amd64 kernels, lots of random Wayland utilities, a Java library that basically does what JNA does but without JNA because reasons. I wrote a semi-functional GObject Introspection parser for Java, the list of random things I work on is pretty open ended.

That sounds crazy! I hope you're making stuff public?
Everything except my game engine is...and maybe the GI generator. The GI generator should be but it's not in super great working condition so I just never bothered.


Last edited by Scoopta on 18 July 2019 at 4:25 pm UTC
Scoopta Jul 18, 2019
Quoting: monnef
Quoting: Scoopta
Quoting: monnef
Quoting: Scoopta
Quoting: Eike
Quoting: ScooptaProgramming is always relaxing

:-D

... except you got a deadline.
Or a heisenbug.
Or...
I don't program for work so my deadlines are self imposed lol.
I usually find working on my toy projects relaxing. It didn't really happen to me with other languages (I somewhat knew quite a lot different langs, e.g. C#, JavaScript, Java, Scala, bit of PHP) until I started learning Haskell. That was/is a roller coaster of frustration (what the hell is IO for? why is compiler inferring such weird types? how can I connect two monads? why multiple records can't have field with a same name? why compiler reports error in an end of a do block when the error was in the beginning of the do block? what this cryptic error from lens mean? why adding headers to an endpoint changes type of whole API?) and satisfaction (I finally chained monads with various operators correctly on a first try. this rewrite to monad transformers simplified this huge chunk of code a lot. after searching hoogle a bit I was able to simplify my code from several long lines to one short line making it elegant and beautiful). I really like Haskell, there is always next thing to learn, next challenge and when I conquer it, I am really happy and proud which doesn't happen to me (not in such big way) in any other mainstream language I write in for a living.
I've avoided Haskell because it hurts my brain to look at. Not in the "I want to conquer it sort of way" but in the "run away in terror" sort of way. I'm really comfortable with imperative languages though so I usually do crazy things with them to challenge myself instead of trying to take on the beast that is functional programming. I write stuff like OpenGL game engines, amd64 kernels, lots of random Wayland utilities, a Java library that basically does what JNA does but without JNA because reasons. I wrote a semi-functional GObject Introspection parser for Java, the list of random things I work on is pretty open ended.

Really cool projects you have there . Mine are nowhere near as catchy - few small TypeScript libraries adding FP stuff, tool for creating Scala skeleton files from class diagrams from Dia (editor), currently working on a gallery webapplication (in Haskell and Reason). My esoteric language is probably the most cool thing - it's loosly based on physics of a falling orb trigerring instructions (example.

To the topic of functional programming and Haskell, I strongly believe learning basics of Haskell is beneficial for all programmers. I would recommend it to all hobbyists, to all people interested in programming. To stress it: I mean learn basics, get a grasp of basics of FP, not start using Haskell for everything (that's not practical at all). I feel it is a common misconception to consider Haskell to be complex, it is entirely false. The base language (without extensions) is very simple, compared to Java, C# or JavaScript, Haskell is a micro language. Its power comes from being designed in a way that many features (much more than in mainstream languages) are composable and interact well together, the hard learning curve comes from non-C syntax, common use of symbol operators and mountains of available abstractions interacting together (which is not the same as a language, majority of basic abstractions [data types, operators, flow control] are in a standard library which user doesn't have to use, and of course myriad of libraries outside standard one). Good thing is, you don't need to learn many abstraction to start writing simple programs. Frankly, I believe most programmers encountered many of these abstractions already, they just don't know they have a name and are using them rather intuitively in other languages (e.g. string is a monoid; promise/future and list are monads and so on). It is also worth noting, that many functional features are being smuggled to mainstream languages at a steady pace, e.g. pattern matching, lambdas, algebraic data types, generics, maybe/option/optional monad, immutable datastructures, "do" notation.

In my case I love how Haskell is concise, how nicely most of the things in the language work together. To learn new concept in Haskell, truly fully understand it, the final "click" is for me more rewarding than solving any other puzzle.

You might be interested in looking closer at Rust. I read about it just briefly, but IIRC it is a modern language which is closer to hw, has solid predictable performance, but also supports many functional features. Someone higher mentioned even this game is written in Rust. :D
I've also heard than learning a functional language is really helpful and can make you a better programmer, I've made a few attempts here and there but usually never stick with it long enough to make anything but the most basic stuff. It sort of feels like I'm re-learning how to program which makes it a bit of a chore. Unfortunately when I pick up new languages it's usually to write something at least somewhat useful and since pretty much all languages are extremely similar it's pretty easy to do. My big roadblock with FP is that I have to sit down to learn a language that won't immediately be useful and I need to find a way to stick with it anyway.


Last edited by Scoopta on 18 July 2019 at 5:20 pm UTC
monnef Jul 19, 2019
Quoting: Scoopta
Quoting: monnef
Quoting: Scoopta
Quoting: monnef
Quoting: Scoopta
Quoting: Eike
Quoting: ScooptaProgramming is always relaxing

:-D

... except you got a deadline.
Or a heisenbug.
Or...
I don't program for work so my deadlines are self imposed lol.
I usually find working on my toy projects relaxing. It didn't really happen to me with other languages (I somewhat knew quite a lot different langs, e.g. C#, JavaScript, Java, Scala, bit of PHP) until I started learning Haskell. That was/is a roller coaster of frustration (what the hell is IO for? why is compiler inferring such weird types? how can I connect two monads? why multiple records can't have field with a same name? why compiler reports error in an end of a do block when the error was in the beginning of the do block? what this cryptic error from lens mean? why adding headers to an endpoint changes type of whole API?) and satisfaction (I finally chained monads with various operators correctly on a first try. this rewrite to monad transformers simplified this huge chunk of code a lot. after searching hoogle a bit I was able to simplify my code from several long lines to one short line making it elegant and beautiful). I really like Haskell, there is always next thing to learn, next challenge and when I conquer it, I am really happy and proud which doesn't happen to me (not in such big way) in any other mainstream language I write in for a living.
I've avoided Haskell because it hurts my brain to look at. Not in the "I want to conquer it sort of way" but in the "run away in terror" sort of way. I'm really comfortable with imperative languages though so I usually do crazy things with them to challenge myself instead of trying to take on the beast that is functional programming. I write stuff like OpenGL game engines, amd64 kernels, lots of random Wayland utilities, a Java library that basically does what JNA does but without JNA because reasons. I wrote a semi-functional GObject Introspection parser for Java, the list of random things I work on is pretty open ended.

Really cool projects you have there . Mine are nowhere near as catchy - few small TypeScript libraries adding FP stuff, tool for creating Scala skeleton files from class diagrams from Dia (editor), currently working on a gallery webapplication (in Haskell and Reason). My esoteric language is probably the most cool thing - it's loosly based on physics of a falling orb trigerring instructions (example.

To the topic of functional programming and Haskell, I strongly believe learning basics of Haskell is beneficial for all programmers. I would recommend it to all hobbyists, to all people interested in programming. To stress it: I mean learn basics, get a grasp of basics of FP, not start using Haskell for everything (that's not practical at all). I feel it is a common misconception to consider Haskell to be complex, it is entirely false. The base language (without extensions) is very simple, compared to Java, C# or JavaScript, Haskell is a micro language. Its power comes from being designed in a way that many features (much more than in mainstream languages) are composable and interact well together, the hard learning curve comes from non-C syntax, common use of symbol operators and mountains of available abstractions interacting together (which is not the same as a language, majority of basic abstractions [data types, operators, flow control] are in a standard library which user doesn't have to use, and of course myriad of libraries outside standard one). Good thing is, you don't need to learn many abstraction to start writing simple programs. Frankly, I believe most programmers encountered many of these abstractions already, they just don't know they have a name and are using them rather intuitively in other languages (e.g. string is a monoid; promise/future and list are monads and so on). It is also worth noting, that many functional features are being smuggled to mainstream languages at a steady pace, e.g. pattern matching, lambdas, algebraic data types, generics, maybe/option/optional monad, immutable datastructures, "do" notation.

In my case I love how Haskell is concise, how nicely most of the things in the language work together. To learn new concept in Haskell, truly fully understand it, the final "click" is for me more rewarding than solving any other puzzle.

You might be interested in looking closer at Rust. I read about it just briefly, but IIRC it is a modern language which is closer to hw, has solid predictable performance, but also supports many functional features. Someone higher mentioned even this game is written in Rust. :D
I've also heard than learning a functional language is really helpful and can make you a better programmer,

I would agree with that. At least in the case of learning Haskell, in most cases it forces you to do it the FP/Haskell way, because other approaches are in Haskell usually more complex while the FP way is (usually) very short. I think knowing how FP works, what's are its advantages and downsides, getting the intuition where it would be beneficial to use it, is overall a useful knowledge. In many mainstream languages you can use FP approaches which usually results in great "testability" (pure functions are trivial to write tests for), less bugs and easy(ir) parallelization (no uncontrolled mutations from many places - immutable data structures).

Quoting: ScooptaI've made a few attempts here and there but usually never stick with it long enough to make anything but the most basic stuff. It sort of feels like I'm re-learning how to program which makes it a bit of a chore.

Yeah, I fully understand what you mean :D. I have been starting learning Haskell so many times. It is definitely a lot different way of programming. Curious thing is, I read about a study and it suggests non-programmers are able to learn programming in FPL quite faster (I think ~1/3 faster) than in imperative language. But from testimonies of virtually every programmer learning Haskell, it is quite the opposite for imperative (usually OO) programmers trying to learn (pure) FP.

I strongly recommend to use a book (e.g. free LYHFGG or follow other form of structured learning, because (pure) FP is very different and many abstractions are built on top of previous ones, so you should learn them in order.

Quoting: ScooptaUnfortunately when I pick up new languages it's usually to write something at least somewhat useful and since pretty much all languages are extremely similar it's pretty easy to do. My big roadblock with FP is that I have to sit down to learn a language that won't immediately be useful and I need to find a way to stick with it anyway.
Oh yes, it takes a strong determination. I remember my first toy projects in Haskell, it was very hard to continue working on them for hours, knowing I would have had it finished in other languages I know in 5-10 minutes.

When selecting what project to do in Haskell, I would recommend picking something Haskell has good support for (take a look at State of the Haskell ecosystem.

PS: I am sorry, I tend to conflate terms FP, pure FP and "Haskell FP" while technically there are differences.
Scoopta Jul 19, 2019
Quoting: monnef
Quoting: Scoopta
Quoting: monnef
Quoting: Scoopta
Quoting: monnef
Quoting: Scoopta
Quoting: Eike
Quoting: ScooptaProgramming is always relaxing

:-D

... except you got a deadline.
Or a heisenbug.
Or...
I don't program for work so my deadlines are self imposed lol.
I usually find working on my toy projects relaxing. It didn't really happen to me with other languages (I somewhat knew quite a lot different langs, e.g. C#, JavaScript, Java, Scala, bit of PHP) until I started learning Haskell. That was/is a roller coaster of frustration (what the hell is IO for? why is compiler inferring such weird types? how can I connect two monads? why multiple records can't have field with a same name? why compiler reports error in an end of a do block when the error was in the beginning of the do block? what this cryptic error from lens mean? why adding headers to an endpoint changes type of whole API?) and satisfaction (I finally chained monads with various operators correctly on a first try. this rewrite to monad transformers simplified this huge chunk of code a lot. after searching hoogle a bit I was able to simplify my code from several long lines to one short line making it elegant and beautiful). I really like Haskell, there is always next thing to learn, next challenge and when I conquer it, I am really happy and proud which doesn't happen to me (not in such big way) in any other mainstream language I write in for a living.
I've avoided Haskell because it hurts my brain to look at. Not in the "I want to conquer it sort of way" but in the "run away in terror" sort of way. I'm really comfortable with imperative languages though so I usually do crazy things with them to challenge myself instead of trying to take on the beast that is functional programming. I write stuff like OpenGL game engines, amd64 kernels, lots of random Wayland utilities, a Java library that basically does what JNA does but without JNA because reasons. I wrote a semi-functional GObject Introspection parser for Java, the list of random things I work on is pretty open ended.

Really cool projects you have there . Mine are nowhere near as catchy - few small TypeScript libraries adding FP stuff, tool for creating Scala skeleton files from class diagrams from Dia (editor), currently working on a gallery webapplication (in Haskell and Reason). My esoteric language is probably the most cool thing - it's loosly based on physics of a falling orb trigerring instructions (example.

To the topic of functional programming and Haskell, I strongly believe learning basics of Haskell is beneficial for all programmers. I would recommend it to all hobbyists, to all people interested in programming. To stress it: I mean learn basics, get a grasp of basics of FP, not start using Haskell for everything (that's not practical at all). I feel it is a common misconception to consider Haskell to be complex, it is entirely false. The base language (without extensions) is very simple, compared to Java, C# or JavaScript, Haskell is a micro language. Its power comes from being designed in a way that many features (much more than in mainstream languages) are composable and interact well together, the hard learning curve comes from non-C syntax, common use of symbol operators and mountains of available abstractions interacting together (which is not the same as a language, majority of basic abstractions [data types, operators, flow control] are in a standard library which user doesn't have to use, and of course myriad of libraries outside standard one). Good thing is, you don't need to learn many abstraction to start writing simple programs. Frankly, I believe most programmers encountered many of these abstractions already, they just don't know they have a name and are using them rather intuitively in other languages (e.g. string is a monoid; promise/future and list are monads and so on). It is also worth noting, that many functional features are being smuggled to mainstream languages at a steady pace, e.g. pattern matching, lambdas, algebraic data types, generics, maybe/option/optional monad, immutable datastructures, "do" notation.

In my case I love how Haskell is concise, how nicely most of the things in the language work together. To learn new concept in Haskell, truly fully understand it, the final "click" is for me more rewarding than solving any other puzzle.

You might be interested in looking closer at Rust. I read about it just briefly, but IIRC it is a modern language which is closer to hw, has solid predictable performance, but also supports many functional features. Someone higher mentioned even this game is written in Rust. :D
I've also heard than learning a functional language is really helpful and can make you a better programmer,

I would agree with that. At least in the case of learning Haskell, in most cases it forces you to do it the FP/Haskell way, because other approaches are in Haskell usually more complex while the FP way is (usually) very short. I think knowing how FP works, what's are its advantages and downsides, getting the intuition where it would be beneficial to use it, is overall a useful knowledge. In many mainstream languages you can use FP approaches which usually results in great "testability" (pure functions are trivial to write tests for), less bugs and easy(ir) parallelization (no uncontrolled mutations from many places - immutable data structures).

Quoting: ScooptaI've made a few attempts here and there but usually never stick with it long enough to make anything but the most basic stuff. It sort of feels like I'm re-learning how to program which makes it a bit of a chore.

Yeah, I fully understand what you mean :D. I have been starting learning Haskell so many times. It is definitely a lot different way of programming. Curious thing is, I read about a study and it suggests non-programmers are able to learn programming in FPL quite faster (I think ~1/3 faster) than in imperative language. But from testimonies of virtually every programmer learning Haskell, it is quite the opposite for imperative (usually OO) programmers trying to learn (pure) FP.

I strongly recommend to use a book (e.g. free LYHFGG or follow other form of structured learning, because (pure) FP is very different and many abstractions are built on top of previous ones, so you should learn them in order.

Quoting: ScooptaUnfortunately when I pick up new languages it's usually to write something at least somewhat useful and since pretty much all languages are extremely similar it's pretty easy to do. My big roadblock with FP is that I have to sit down to learn a language that won't immediately be useful and I need to find a way to stick with it anyway.
Oh yes, it takes a strong determination. I remember my first toy projects in Haskell, it was very hard to continue working on them for hours, knowing I would have had it finished in other languages I know in 5-10 minutes.

When selecting what project to do in Haskell, I would recommend picking something Haskell has good support for (take a look at State of the Haskell ecosystem.

PS: I am sorry, I tend to conflate terms FP, pure FP and "Haskell FP" while technically there are differences.
Maybe I'll give FP another try, last time I used Clojure BTW, Haskell scares me even more. Lisp seems less terrifying than ML as far as syntax goes. One of my friends who loves FP hates Clojure so maybe I should take that as a sign, not that I really think my choice of language had much if anything to do with the why I stopped lol.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.