Online uplink clone
Moderators: jelco, bert_the_turtle, Chris, Icepick, Rkiver, Punisher Bass
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
Online uplink clone
OK, so after most attempts to clone uplink to an online game died away, I've came up with a more interesting idea.
I've started building a system that goes way down to the hardware level. Basicaly, each program is a CPU emulation, giving each player a fake 32bit CPU, a basic 1MB of memory and a 15MB disk drive.
Once the hardware implementation is complete, and basic programs can run, we can start going deeper into the game pahse, and build a baisc OS for the CPU, then some basic tools (password cracker, tracer and trace log, etc...)...
The idea is to make the game playable for a total newbie (who uses pre-made tools, and would probably be able to complete most missions), and for an experienced "hacker" (who has the ability to write his own tools, exploit OS weaknesses, etc...).
To make the game more enjoyable, new users enjoy protection for they PC, while advanced users can be hacked and their data stolen/damaged, opening the game for more "wargaming".
I've already made a basic writeup in Java for the CPU class (Implements a kind of ALU, registers, memory), and if there is interest I'm going to upen the source and make it a community project.
I've started building a system that goes way down to the hardware level. Basicaly, each program is a CPU emulation, giving each player a fake 32bit CPU, a basic 1MB of memory and a 15MB disk drive.
Once the hardware implementation is complete, and basic programs can run, we can start going deeper into the game pahse, and build a baisc OS for the CPU, then some basic tools (password cracker, tracer and trace log, etc...)...
The idea is to make the game playable for a total newbie (who uses pre-made tools, and would probably be able to complete most missions), and for an experienced "hacker" (who has the ability to write his own tools, exploit OS weaknesses, etc...).
To make the game more enjoyable, new users enjoy protection for they PC, while advanced users can be hacked and their data stolen/damaged, opening the game for more "wargaming".
I've already made a basic writeup in Java for the CPU class (Implements a kind of ALU, registers, memory), and if there is interest I'm going to upen the source and make it a community project.
- Mr. Roboto
- level4
- Posts: 826
- Joined: Sat Jan 08, 2005 6:05 pm
- Location: Baltimore.md.us
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
- Mr. Roboto
- level4
- Posts: 826
- Joined: Sat Jan 08, 2005 6:05 pm
- Location: Baltimore.md.us
-
- level0
- Posts: 6
- Joined: Wed Jun 30, 2004 5:25 pm
There is another project that tries to do something similar. Its called Code Wars. You can find it here: http://www.igarry.com/codewars/index.htm. But i don't know if they are still making progress or ever did . But theres some good ideas in the forums though.
I was just wondering: Are you planning to do yours multiplayer too? Massive-Multiplayer or only for Lan-play?
If Massive-Multi... i don't think that the whole virtual machine thing would work. This would be just too slow or you will need a big server farm to simulate the virtual internet.
I was just wondering: Are you planning to do yours multiplayer too? Massive-Multiplayer or only for Lan-play?
If Massive-Multi... i don't think that the whole virtual machine thing would work. This would be just too slow or you will need a big server farm to simulate the virtual internet.
- Flamekebab
- level5
- Posts: 2988
- Joined: Sun Feb 24, 2002 5:39 pm
- Location: Carmarthen, UK
- Contact:
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
Ok, my basic outline is done.
I have a very baisc CPU emulator wich can read opcodes and execute commands.
The CPU has 4 32-bit general purpose registers, uses direct memory addressing eliminating the need for segments and offsets, has a built in stack support, and can preform basic commands.
Currently it can do the following:
ADD
SUB
MOV
AND
OR
XOR
Each opcode 1 byte command, and 1-2 bytes operands. I know it can be done with less, but I felt like I could waste some memory.
What's most important now, is to have some basic user interface, but I'm a lousy designer and my GUI programming skills are close to 0, so it'll take me some time to learn SWING to get something going.
The idea is a basic console screen, 80x25 to show some text, in the future it'll need to be a pixel based screen, so that a gui for the CPU can be created, but it'll be a long shot since after I finish the cpu and it's assembly language, I'll need to create some basic HL language to ease programming.
I have a very baisc CPU emulator wich can read opcodes and execute commands.
The CPU has 4 32-bit general purpose registers, uses direct memory addressing eliminating the need for segments and offsets, has a built in stack support, and can preform basic commands.
Currently it can do the following:
ADD
SUB
MOV
AND
OR
XOR
Each opcode 1 byte command, and 1-2 bytes operands. I know it can be done with less, but I felt like I could waste some memory.
What's most important now, is to have some basic user interface, but I'm a lousy designer and my GUI programming skills are close to 0, so it'll take me some time to learn SWING to get something going.
The idea is a basic console screen, 80x25 to show some text, in the future it'll need to be a pixel based screen, so that a gui for the CPU can be created, but it'll be a long shot since after I finish the cpu and it's assembly language, I'll need to create some basic HL language to ease programming.
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
A friend of mine spoted some big bug in the game... the CPU can't access byte or word values, since I use java integers wich are all 32bytes.
Now I'm adding support for smaller registers, turns out to be a bitch.
I now have to support 4 GP 32-bit regs, each has 1 GP 16-bit reg, and each 16bit reg has 2 8-bit regs.
It's similar to the 80x86 architecutre.
To make things simpler, all the non GP registers can't be moved, only poped and pushed, so it makes life easier.
Now I'm adding support for smaller registers, turns out to be a bitch.
I now have to support 4 GP 32-bit regs, each has 1 GP 16-bit reg, and each 16bit reg has 2 8-bit regs.
It's similar to the 80x86 architecutre.
To make things simpler, all the non GP registers can't be moved, only poped and pushed, so it makes life easier.
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
OK, that little bug turned out to requite a total rewrite of the code, so far I'm struggling with the MOV operations.
I have to support 3 different mov operations, each with a number of registers, etc...
Perhaps I should make more opcodes for mov, so that there's an opcode for moving 32bit data, 16bit, and 8bit.
I've started a SF project, http://sourceforge.net/projects/ghostlink
Don't have a webpage yet, no time for it.
I'd apreciate comments and help with the project.
I have to support 3 different mov operations, each with a number of registers, etc...
Perhaps I should make more opcodes for mov, so that there's an opcode for moving 32bit data, 16bit, and 8bit.
I've started a SF project, http://sourceforge.net/projects/ghostlink
Don't have a webpage yet, no time for it.
I'd apreciate comments and help with the project.
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
-
- level1
- Posts: 19
- Joined: Tue Dec 20, 2005 7:21 pm
Who is online
Users browsing this forum: No registered users and 8 guests