Full project proposal available at: https://docs.google.com/document/d/134Qwa8wwQyl2liPa47SbT-2e_rv1rcY4dngqKlOC0GA/edit?usp=sharing
Learning Linux is a valuable skill for any programmer, but it can be intimidating to get the hang of the different commands. This text-based game relies on the standard Linux file system structure to flesh out the game world, and the user must wield several of the core Linux commands to get around. Small coding challenges in C are included to promote familiarity with lower-level programming. By playing our game, the user will become more comfortable with using C and many of the major commands used in Linux while hopefully enjoying themselves a bit along the way.
Specific instructions for areas are explained further within the game. To get started, fork this repository by clicking the 'Fork' button at the top of the page. This will create a copy of the repository on your account. Then, navigate to the page for your forked repository and follow the instructions provided by GitHub to clone it to your system. Once that's done, use the following command to enter the project directory:
cd LinuxAdventure
From there, use the following command to read the first instructions file:
cat instructions.txt
Additional commands will be explained thoroughly as you progress. Enjoy!
Spoiler Warning! Only view if you want the answer...
The 7 clues you collect should spell out FREEDOM when arranged in the proper order. To us, this was the core principle behind the open-source movement spearheaded by Linus Torvalds.
Coming into our Operating Systems class, many of us had little to no exposure to Linux. As most of our work involved leveraging this system, it was imperative that we got ourselves acquainted with it fairly quickly. While learning Linux is far less difficult than it may seem at first glance, we felt like our learning process lacked any sort of structure, and we mostly just figured things out as we went along. This is by no means a "bad" way to learn, but it may be more challenging for those with less technical experience and lead to unnecessary frustration. By creating this game, we hope to offer those who are just getting started with Linux a clear, contained resource for getting the hang of various core commands and general Linux-isms that will be crucial to know in order to use the system efficiently. We present the material in the context of a story in order to add a bit of fun to the experience, and we communicate the technical information in a way that is easily digestible and readily applicable to contexts beyond the game itself. By also including small coding tasks in C, we offer a comprehensive rundown to the basics of lower-level programming.
The story itself was inspired by a documentary our professor had us watch about the history of Linux and the open-source movement. For those who would like to know more, this documentary can be found at the following link: https://www.youtube.com/watch?v=4vW62KqKJ5A.
We touch upon the following Linux commands in this game:
pwd, ls, cd, cat, nano, touch, cc, alias, echo, clear, rm, grep, mv, mkdir, sort, cal, basic git commands
In addition, we cover a variety of concepts such as:
killing processes, directory naming conventions, hidden files, using command options, version control,
running executables
We are always looking for more creative ways to incorporate different commands and Linux-isms in this game. If you have an idea and are comfortable with git, feel free to make a pull request with any additional areas you had in mind!
If you want to play this game on another architecture than x86_64, you need to recompile the executables with the make command.
If you are on alpine (includes iSH on iOS), install some dependencies for compiling and execute the make command:
apk add gcc musl-dev make
make