About this blog
A journal featuring development updates of H.A.C.K.
Entries in this blog
It's been a while since my last update - 2 weeks to be exact. Last week was very atypical and I barely looked at the game, so I decided not to count that week and make this the 4[sup]th[/sup] week of development.
This Week's Development[/font][/color]
This week was almost fully dedicated to the code that will support people and companies and how they interact with each other. I redesigned some components from what I had previously drafted, so it's taking a bit more time than expected. I still have some work to do but it's coming along nicely.
Also, computers now have a file that holds its accounts - usernames and encrypted passwords - that players can steal and try to crack offline as well as a folder to store all data about its respective "web site" - read interface - if it has one. For example, if you connect to a bank you'll be able to access all their services through the interface and all its data (accounts, transactions, etc...) is stored in files inside that folder that you can gain access to.
I also prototyped two interfaces: the e-mail panel and the bank panel. They are not functional yet and were made for testing purposes only because I changed the way I manage panels. You can see both of them on the screenshot below.
This is a rather small update, but one that will allow for exciting features to come.
Thank you for reading and don't forget to follow @HACK_theGame
This Week's Development
This week I decided to make a video showcasing all the features implemented so far. Please remember that this is the result of only 3 weeks of development so ignore the rough edges you might see throughout the video. Go ahead and watch it now - in fullscreen and 1080p. I talk about what you see in there after the video.
I hope you liked it! I'm going to skip ahead of the features I already talked about in the previous weeks, with only a few words on the password breaker. As you could see, it took a while to crack a 7 character password, even though it's trying 1 trillion (!!!) combinations per second. Any kind of security system would recognize that it was being hacked and would immediately disconnect you. This is just to say that the password breaker is really not the "go to" tool to hack a computer.
On to the new features...
Vulnerabilities allow you to get access to specific parts of a server. They are constantly being fixed and new ones will be found. The player can inspect a system to find vulnerabilities but it needs to have the skill to find and exploit them. Not all servers have the same vulnerabilities and no server will have more than 3 at the same time. They may even have none and you'll have to come back later. In the video, all servers have all 3 implemented vulnerabilities for demonstration purposes.
This is a very simple vulnerability that allows you to put data in the server's memory. An unskilled hacker can use this to crash the server by inputting random data (as seen in the video) but an experienced hacker will be able to do much more.
After a crash, the server will be restarted shortly and be back online. So this may seem pointless but imagine you are being traced. You can connect to one of your proxies and crash it this way. It's simple and fast and when the tracer reaches this proxy, he'll have to wait for it to come back online before proceeding, buying you more time to cover your tracks.
So, vulnerabilities can seem pretty simple but they can be very helpful. You just need to be a bit creative.
This vulnerability allows you to access specific files on the server's file system. You need to know the exact path of the files, so this is most useful to access default system files like the logs file. One important thing to notice is that this vulnerability retrieves the files and sends them to you, which means that the files are on your computer. Modifying them will not modify it on the server and running an executable will run the software on your computer, not on the server. You can read files and download them, nothing more. It's still very useful when you just need some information that you know is in a file, for which you know the path.
This is the most exciting vulnerability so far. With this vulnerability, you'll be able to run custom code on the server. You won't get any feedback from it, so you just pray it worked. Its success will depend on the permissions with which it is executed, on the security systems in place and in the coherence of the code itself - if the first thing the code does is destroying the operational system, don't expect it to create you an admin account afterwards.
The code is made up of modules and this modules are created by the player beforehand. When creating the modules you'll be able to customize them. For example, the module that creates an admin account needs a username and a password.
There will be lots of modules to create - currently I have 20+ planned - but the player will need to improve his skill to be able to create more modules. They won't all be available from the start.
Thank you for reading!
Please leave me some comments or feedback. I'd love to know what you're thinking.
Also, don't forget to follow @HACK_theGame for updates as it happens.
[font=arial]Hi! Here I am for the second update on H.A.C.K.[/font]
[font=arial]As promised, I'll keep it short and straight to the point. So...[/font]
This Week's Development
[font=arial]I started the week by finishing the computer login panel I had started last week - that I mentioned in the end of the first post. [/font][font=arial]It's still very raw but you can start to see how things are going to shape up. The tools are displayed as a grid of buttons that only show up if you have them, of course. The vulnerabilities will be presented as a vertical list.[/font]
[font=arial]Next up, the game time. I created an independent time system with 3 different speeds that you can alternate using the buttons on the right bottom corner. When doing something that is time sensitive, you'll be forced to have it on normal speed. Though I haven't decided yet if the normal speed will be real-time or not. What do you think?[/font]
[font=arial]Then I implemented the log system. Logs will be kept in a file on the file system. If you can access a computer file system, you can access its logs. Most actions will be logged but for now, I'm only logging the connections made, so I'll bring you a more complete screenshot next week. [/font]
[font=arial]After that, I created a simple panel for when connecting to a computer. It'll show who you're connecting to and which proxies you're using. It'll also tell you if a proxy can't be used or if the computer you're trying to reach does not respond. [/font][font=arial]"No answer!" means that the server could not be reached, probably because it's offline. "Unauthorized!" means that this server is not allowing redirections. "Ok!" means... well, Ok. [/font][font=arial]Here's an example:[/font]
[font=arial]Next step, the password breaker. In this game, passwords can have lower and upper case letters, digits and 33 different symbols and vary in size from 4 to 16 characters. In this conditions, a 6 character long password can take up to 740+ billion attempts to crack. So, cracking passwords is a lengthy process in real life and I'd like to make that so in-game, that's why this tool will not be the best choice to gain access to a computer. Furthermore, the most secure systems will not allow more than 5 attempts in a short amount of time - again, just like real life. "So, what's all this for?" you might be asking. Well, there is a purpose to it. This tool will be very useful for when you steal those precious databases full of accounts and hashed passwords to crack. Even though users will be warned about database leaks and most will change their passwords, you might still get some valid accounts.[/font]
[font=arial]The amount of attempts per second is not yet definitive and it will differ between online and offline cracking, and different versions of the tool. You can see below that a 7 character password took just under 8 minutes to crack - which is probably too fast - but the amount of attempts you see is the exact amount of attempts for that password, under said conditions.[/font]
[font=arial]After that, I recreated the player's explorer panel on the right panel so that you can transfer files with the computer you're connected to. The logic behind it was already done, as I said in the first post, and only the UI was missing. It is now in place and working fine. I'll probably record a video next week to showcase all these visual features.[/font]
[font=arial]Finally, the last feature I implemented this week is about multitasking. The empty space you see in the taskbar is customizable and works somewhat like the windows taskbar. When you open an application, a button will appear in there to allow you to switch between panels. If you'd like to have a permanent shortcut, you just need to drag its icon there like in the horribly made gif below. To remove it, simply drag it out. That space is scrollable horizontally, which means that if you have so many applications open that you fill that space you can drag it horizontally to access all aplications. The icons can also be reordered for a more comfortable setup.[/font]
[font=arial]Yesterday was refactoring day, as per the 5,1,1 routine, and I spent about 4 hours refactoring, commenting and fixing bugs. At such an early stage, there isn't that much stuff to refactor, but I definitely can see how this steady maintenance can improve the quality of the code in the long run.[/font]
[font=arial]That's it for today. I hope you liked it. I appreciate any feedback you might leave.[/font]
[font=arial]If you'd like to be updated as features get implemented, follow @HACK_theGame on twitter.[/font]
[font=arial]You can also follow me at @j_farias[/font]
[font=arial]Thank you for reading.[/font]
[color=rgb(0,0,0)][font=arial]Today marks the end of the first week of development on H.A.C.K. - technically, I started on Tuesday but no matter - and I've decided to write weekly updates on how things are going. I will try not to bother you with walls of text, except for this one, I promise. I will also not get too technical with my posts, but if you'd like to know more about how I implemented a certain feature drop a line and I'll be happy to answer.[/font][/color]
[font=arial]Before proceeding, a few words about me to get this out of the way. My name is Joao Farias, I'm from Portugal and I recently finished my B.Sc. in Computer Science. While I'm looking for a job in the games industry, I'm working full-time on this game.[/font]
[font=arial]Now that that's done...[/font]
[font=arial]H.A.C.K. has been stuck in my head since 2012 when I replayed Uplink. Needless to say, it's heavily inspired on it. If you've never heard of Uplink do yourself a favor and go play it![/font]
[font=arial]Set in a futuristic world, the player finds himself drawn into the hacking scene. He'll learn how to find and exploit vulnerabilities in computer systems, how to create virus, worms and backdoors, and, ultimately, how to control the world.[/font]
[font=arial]It features a live economy where companies can grow or go bankrupt, people have jobs and money changes hands. News stations keep the player up-to-date with recent events, not only about hacking but on a variety of topics like technological advancements or world catastrophes. Hackers are more active than ever and not even the player is safe. [/font]
[font=arial]I want to make H.A.C.K. a bit more realistic than Uplink while maintaining the same Hollywood hacking experience. Instead of tools that can be bought to hack anything, the player starts unskilled and will gradually learn how to find and exploit vulnerabilities. These let you access specific data from a computer without getting full access to it, which is much stealthier. This means the player has a wide array of options on how to perform any attack, giving much more diversity to the gameplay.[/font]
[font=arial]There will be a main story and a few side stories to entertain the player. He is completely free to do whatever he wants though, even ignoring the main story.[/font]
[font=arial]Although the first week of development is finished, long weeks of planning took place before that. I won't get into much detail. I'd just like to make some comments on what I did, why I did it and what tools I used.[/font]
[font=arial]In the last couple of years of my degree, I came across several projects that were too complex to execute without decent planning. We did UML, sequence and use case diagrams in order to understand exactly what the project required from us and how we should face it. I figured that games should receive the same treatment, for in their core they are software programs designed to entertain people. So I set out to plan my game...[/font]
[font=arial]Throughout the years I have been taking note of things that came to mind in text files or on the phone. I started by putting all these together and cut out what was not interesting anymore or felt out of place. I used XMind for this and, although I was expecting a bit more control on how things were structured, I wasn't disappointed and it felt like the right tool for the job.[/font]
[font=arial]After that, I created the Game Design Document. There is much controversy on the subject of its usefulness - especially for a one man team - and after scrolling through dozens of threads and articles on the matter and finding interesting alternatives, I still chose to create a GDD. And I feel I made the right choice. Creating this document made me ask many questions I wasn't asking before and I realized that some of my uber-awesome mechanics weren't that good. Now, I stand on solid ground and I'm able to move forward.[/font]
[font=arial]UML came next. I haven't gone to the lengths of creating sequence or use case diagrams, but a good UML diagram is indispensable for me. I created one online on GenMyModel.com, but it came out of beta yesterday and is now free only for open-source programs. I'll have to find another alternative so if you happen to know about a good free one, leave it in the comments please.[/font]
[font=arial]Last but not least, came the project management. I wanted to set goals and deadlines, specific tasks that I should follow so that all pieces come into place. Trello was what I had in mind, but I took the time to look for other options and found Asana. It has a bit more of a learning curve but I find it to be much more flexible than Trello. It also integrates well with Harvest, a time tracking tool - out of curiosity, I spent 30.07 hours on development this week. Speaking of time, I will be using the 5,1,1 routine. I read about it in this great article that I advise you to read if you haven't already. I decided to embrace this routine with a slight difference: Sunday will be my weekly update day. While I won't be entirely away from the project during those days, I won't look into code. I'll give you some feedback on how this is working for me in a few weeks.[/font]
[color=#ff8c00]This Week's Development[/color]
[font=arial]I should start by saying that this game will be available on Windows, Linux and Mac and is being made with Unity, specifically Unity 4.6, taking advantage of its new UI system.[/font]
[font=arial]I started by creating a basic file system explorer in the form of icons. You can drag and drop the icons to reorder them or to insert them into other folders. Using the buttons in the toolbar you can go back to the previous directory, create new folders and delete selected items. This system already supports dropping files from other file systems in order to download/upload files between computers - the player's file system is always on the left and the connected computer's file system will be on the right - so to download a file from a computer you just drag and drop it on your explorer.[/font]
[font=arial]Then I created the connections panel where you can configure the proxy chain you want to use and search the computer you want to connect to. You can search by IP or name - I only search by IP in the video because all servers have the same name. The proxy chain lists the computers you want to use to bounce your connections, starting from top to bottom. Just drag and drop IPs in there to add them and drag them out to remove them. You can also reorder them by dropping them in the right place. You can't just use any computer though, it must be a proxy or have a proxy software installed. Also, proxies slow down the connection so you probably want to avoid using too many. You can enable or disable the proxy chain with the toggle button. If you click on any computer or proxy, its IP will show up in the top right corner field so you can connect to it by pressing the button "Connect". You can alternatively double-click them to connect immediately.[/font]
[font=arial]I've also started on the computer panel, the one that shows up when you connect to any computer, but I'll leave that to the next update.[/font]
[font=arial]Phew... That was a rather long post. Future updates will be much smaller. Something like this last section only.[/font]
[font=arial]So, what's running through your mind? Leave a commnet below and make sure to follow me on twitter [/font][twitter]hack_thegame[/twitter]