As much as I don't want to give up on this game, I kind of have to. My plan was to finish it before college and maybe workon it when I had time, boy was I wrong. It is nowhere near finished and I have no time to work on it. I don't think I ever will either, not this version at least. I have always hated how the code worked and constantly refactored the code how I liked it. It is just a huge mess though. I have also grown to hate java. I may work on this game again, but not this project. I love the idea and have no similar games to play. I may remake it in another language/framework at some point.
Hakd is a single player game about hacking, with a realistic, simulated, and procedurally generated internet. This game simulates an entire internet for you to explore and mess around with all you want, legally.
My to-do list, This also has some of my ideas. (This is out of date)
Skip down to Compiling and Building Hakd.
To run:
In the menu, type 'help' for a list of commands. Type start [name] to start the game. The game world will begin to generate, but there is no graphics, so check the terminal. It should take a few seconds to a few minutes depending on your processor.
Once the game starts: Map:
Player room:
Terminal:
I think those are all, but I could be wrong. Check the input processors(menu, map, and game) in .../gui/input/ if you want.
The game world consists of thousands of networks all connected to the central Internet. The Internet and the rest of the world is randomly/procedurally generated down to the cpu speed on a server. There is nothing stopping you from hacking into the ISP of the town over and sending logs of every packet to a storage based data center that you can remotely connect to.
The main screen is a server room. The player can go up to any of his/her servers and access their terminals. Through these terminals, they can access and interact with the Internet. I will probably have more apps with guis though, like a web browser.
Players run commands from within a terminal. Seems simple enough, but the terminal is a python interpreter. This means that players can write their own scripts/programs to hack with and edit existing, pre-built programs. All commands and programs are written in python. You will be able to buy and download default software from the stores or torrent sites in the game I write myself.
If you are this far down, then you know about the player written hacking programs.
The internet is made up of networks, Backbones and ISPsThe Internet structure lets Internet Backbones and Internet Service Providers handle smaller networks and their data. All networks connect to regional ISPs. ISPs connect to Backbones to have access to other regions and their ISPs and networks.
Network hierarchy:
Network
V
__________Server___________
V V V
FileSystem Terminal Parts -> | - CPU
| - GPU
| - Memory
| - Storage
This project uses gradle to build and optionally run. These are all meant to be run in the command prompt/terminal, in the Hakd source directory. Any of these will download gradle if it has not yet been downloaded.
windows: ./gradlew.bat cloneGdxShaders cloneLibNoise
linux/mac: ./gradlew cloneGdxShaders cloneLibNoise
This will download the dependencies, not on maven, from github.
You will need to import the project after running this to add these dependencies to the classpath.
View gradle tasks and help:
windows: ./gradlew.bat tasks
linux/mac: ./gradlew tasks
You have to let gradle build the project files for eclipse/intelij to know that it is a project. This will also download the dependencies.
For Intellij projects run:
windows: ./gradlew.bat idea
linux/mac: ./gradle idea
For Eclipse projects run:
windows: ./gradlew.bat eclipse
linux/mac: ./gradle eclipse
To build Hakd, run:
Windows: ./gradlew.bat clean distZip
Linux/Mac: ./gradlew clean distZip
A packaged Hakd-{version}.zip will be placed in desktop/build/distributions/. This is can be used and released without any modification.
You can also run Hakd through gradle, if you don't want to package it:
windows: ./gradlew.bat run
linux/mac: ./gradlew run
This is faster than distZip, but it will have the same asset paths as in an IDE, which is different from the distZip asset paths and may raise compatibility issues between them.