PDA

View Full Version : [Delphi] How to create your own Direct-Play, how to create portable games.



ShowerThoughts
07-23-2009, 04:45 AM
REWRITING SORRY!
I had the feeling it was not good enough!

Hey, I am Hermen!


Note: This SHOULD work with applications and anything that you install on your pc!
Note2: If you want to and YOU have YOUR game installed I can create a RUNGame.exe which you can use and then YOU can create your Direct-Play in a second.
Remember this tutorial looks long but it takes less than 5 mins. , YOU just have to understand the concept.

So you want to create your own Direct Play/Portable/No Installation game?
Now if you didn't want to you wouldn't be reading this ;).

Anyway, the first step would be to ask yourself some questions and create a little schedule.

- Which game?
In this tutorial/guide I will use Battlefield 2.

Note: I legally bought my game and the rest of my games.
Note2: You are not allowed to share your Direct Play with others, since that would be illegal, however you can use it at home with lan parties for example.


- What am I actually doing when I am going to make it (semi)Direct-Play?

Normally you must install the game on your computer.
So yeah, "Install" what is installing?
It can mean a lot of things and I then am talking about a LOT of things, but in our case:

- Moving the needed/game files to, most likely, your program files folder.
- Adding registry entries to the registry, will be explained later on.
- Installing programs as DirectX used by the game to render the game or punkbuster to prevent hackers in-game.
- Optimizing the performance of the game with your computer.
- You can insert your legal keys etc. and you can change the folder if you want it be installed somewhere else.

Now if you are making it direct play you make it possible to let it be ran from a DVD/CD or flash-drive without installation.
So for example I put my flash drive in my dad's computer I click "Bf2.exe" and the game starts.
How do you achieve this?
I will give a short explanation, and later on I will tell you how to do it in a much more detailed way.
You create an executeable that adds registry entries and if possible some other configurations on the 'game.exe' or a separate executable that starts the game.


- What are the pros and the cons of making a game (semi) Direct-Play?

Pros:
- No installation, this can save a lot of time if you have a large game.
- If you have to patch it you can patch it once and use the patched Game Directory; no need to patch(Will explain later on)
- You don't have to use the real DVD/CD, because you use something called "No CD/DVD crack".
- You can put your own LEGAL serial/key in for LAN parties.(or of course buy the game another time and use that serial for HOME-USE)
- You can modify the game to your settings like Low or High and then if you use the Game Directory it will use them.
- You can modify your game directory and make it smaller by removing: Movies, Sounds and/or unneeded stuff.

Patching - if you have patched the game once the game directory contains the patched files which means you have never have to patch it again if you make it semi Direct-Play or Direct-Play.

Cons:
- On the first launch, Some games will show the game with a black surrounding, because the game hasn't been optimized with your computer yet. To fix, simply go to your game settings and fix it ;).(Sometimes not needed :))
- You will always need the portable device(Flash Drive) or CD/DVD. The fix is just copy the files to somewhere on your pc this is faster than installing it with the installer.

So to be honest I didn't created Battlefield 2 in a Direct Play mode I did something that cost me lots and lots of time but was fun to do.
I created a Semi Direct Play Battlefield 2.

http://home.impsoft.info/downloads/BF2%20Custom%20Installer.PNG

On my dad's Dual Core computer, it installed in about 5/6 minutes.(Normally about 1 hour or more, this is why I call it "Semi Direct-Play." It 'installed' battlefield 2 + all the expansion packs.(the difference between Semi Direct-Play and Direct-Play is that it actually installs the game but faster, cracked and the rest of the shizzle etc. ;)
It added profiles, 'installed' the 'No-Dvd crack' + shortcuts(Which isn't as easy as it looks like), and last but not least added registry entries.
I was able to play directly within 5 or 6 minutes with whole freaking game installed.
It's pretty cool that I have put a lot of time in it, and I got something great back.

I created this specially for the lan-parties my friends and I have.
Battlefield 2 can be ran on every regular computer and doesn't require huge graphic cards or whatever.
In our view the game is a very good lan multi-player game because the time goes slow while we play it and we have loads and loads of fun!
You might want to buy it, it costs about 10 euro currently in the Netherlands.

Note: I have made my installer in Delphi 7, since it doesn't needs a faggy .net framework to be installed -.-".
Big Note: You need to have YOUR game installed because you need to know what these registry entries are and what those configuration files are.
Even if you don't understand just install YOUR game.*YOUR game so not Battlefield 2 but YOUR game. :)
You do not need to have Battlefield 2 installed I will give you all the information you need! :)



Creating the Direct Play.

I have made an Semi Direct Play of Battlefield 2 but of course we are going to create a real Direct Play! :)
So now that I've given you a general idea how to do it and a lot of other crap we are actually going to create one!

Our executable must:
- Add battlefield 2 registry entries.
- Move Configuration/profiles.
- Optional, move the game files to the InstallDirectory(Semi Direct-Play)
- Run the game.

Most games have have something like this:
Install directory = 'C:\Program Files\<GameCreators>(eg. EA GAMES)\<TheGameName>'
Registry location = HKEY_Local_Machine\Software\<GameCreators>\<TheGameName>
Profile directory = 'C:\Documents and Settings\Owner\My Documents\<TheGameName>' //This also contains other information. Like configuration.



Adding the registry entries.

Start your delphi IDE/compiler/builder or whatever.
Create a Console application or a form if you want one(optional).

Let's create a procedure that adds/creates registry entries/keys.


procedure CreateRegistryEntries;
begin

end;


So that's it we're done.
Nah, just kidding we can't add the registry entries programmatically if we don't know what those registry entries are!
For XP: start up Windows Registry Editor by Start --> Run typing 'RegEdit' (No '') then hit enter.
For Vista: Windows Key + R, push them down on the same time, then type 'RegEdit' (No '') then hit enter.
You will see something like this.


http://home.impsoft.info/downloads/RegisterEditor.PNG

Like I told you most games have their registry information in HKEY_LOCAL_MACHINE. If you can't find your game, give HKEY_CURRENT_USER a look.
Click on it and go to software and click on the '<GameCreator>' if you use your own game else click on 'Electronic Arts'.


If you are being sharp you might think 'Battlefield is made by EA GAMES and the installation directory is \EA GAMES\Battlefield 2\, why Electronic Arts'.
EA Games is equal to Electronic Arts Games AFAIK, but why they did this I have no idea; even if you shoot me.

Click on 'EA GAMES' or your '<GameName>'.
If you clicked on 'EA GAMES' you have to click on 'Battlefield 2' and expand it if you like.


http://home.impsoft.info/downloads/RegisterEditorViewingBattlefield2.PNG

This is the information that Battlefield 2 or your game needs to run the game.
The game serial is somewhere here too, in our case you can see it if you click on 'ergc'.

There is a option to export this information.
Right click on 'Battlfield 2' or your game and select 'export' name and save the file where you can find it again.
Open the file with notepad or some text-file reader do NOT double click it.

You will see something like this:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA Games\Battlefield 2]
"Language"="Dutch" <--- Dutch!! :)
"Locale"="nl" <--- The Netherlands!! :) You mind want to change this, since not everyone can leetspeak like us.
"InstallDir"="H:\\Program Files\\EA GAMES\\Battlefield 2"
"Version"="1.4"

[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA Games\Battlefield 2\ergc]
@="1234567891234567891234567" I wiped my serial out. ;)

[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA Games\Battlefield 2\wdc]
@="true"


This is much easier to use.
The point is you CAN use the reg file and double click it and add it to the register, but if you want to make this game Direct-Play you have to modify one or two of these

values/entries for example the "InstallDir" and the "@"(serial) I will get onto this later, it might be confusing.

Delphi has an TRegistry Library/Component which we can use to modify the registry! :)



procedure CreateRegistryEntries;
begin

end;


Lets add TRegistry.

Add:

Registry,
Windows
to the uses at the begin of the console code.



procedure CreateRegistryEntries;
var
Reg, Reg1, Reg2: TRegistry;
begin
Reg := TRegistry.Create;//Creates the registry so you can use it.
Reg.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2', True);//Opens the key and if it does not exist it creates it.
Reg.WriteString('Language','Dutch');
Reg.WriteString('Locale','nl');
Reg.WriteString('Language','Dutch');
Reg.WriteString('InstallDir',InstallDir);//*
Reg.WriteString('Version','1.4');

Reg1 := TRegistry.Create;//Creates the registry so you can use it.
Reg1.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg1.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\ergc', True);//Opens the key and if it does not exist it creates it.
Reg1.WriteString('','1234567891234567891234567');//'' is equal to @ in the reg file we exported from the registry editor.

Reg2 := TRegistry.Create;//Creates the registry so you can use it.
Reg2.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg2.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\wdc', True);//Opens the key and if it does not exist it creates it.
Reg2.WriteString('','true');
end;

When you open a key for use as 'SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2' you must remember that a rootkey is before it, so:
'HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2'
Under that key you have a value-name which contains a value, for example 'Language' with the value 'Dutch'.
In special occasions the key itself contains a value
'HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\wdc'
'' with the value 'true'.
When do you need to do this?
if you see @='something' in the registry-file '.reg'.

*Note: we are not totally done with this because we still need to add InstallDirectoryFolder String; this comes later on.


Moving the configuration/profile files.

Sometimes it is needed, sometimes it is not. I prefer doing it because it only takes a minute.
If you are making a Direct-Play DVD/CD, Folder or Flash Drive, then it is handy to have a clean folder structure like:

Folder <GameName> or DVD/CD <GameName>
- Contains this executable
- Folder called 'Install Files' or 'Game Files'
For example:

http://home.impsoft.info/downloads/FolderStructure.PNG
The 'Install Files' contains
-The 'InstallDirectoryFolder' Files
-No DVD Crack
-Possible drivers like DirectXSetup.exe
-The folder AutoRun
For example:

http://home.impsoft.info/downloads/FolderStructure2.PNG
Okay now every-time we run this executable from, for example C:\BF2\RunBF2.exe.
We can rip off RunBF2.exe(Extract the directory), that will give C:\BF2\
Add 'Install Files\' or 'Whateveryoulike\', That gives: C:\BF2\Install Files\ or C:\BF2\WhatEverYouLike\
Add 'Battlefield 2' then we will have the install directory, because that gives: C:\BF2\Install Files\Battlefield 2 or C:\BF2\WhatEverYouLike\Battlefield 2

Note: THIS install directory will be placed in the registry to tell the game in our case Battlefield 2 that Battlefield 2 is installed in one of the folders where RunBF2.exe is ran from.
C:\SomeFolderCalledBF2OrSomething\RunBF2.exe
C:\SomeFolderCalledBF2OrSomething\Install Files\Battlefield 2
The executable extracts the directory 'C:\SomeFolderCalledBF2OrSomething' from 'C:\SomeFolderCalledBF2OrSomething\RunBF2.exe' and adds 'Install Files\Battlefield 2' to the extraction this will give us the InstallDir of our game every-time we run the executable :) This InstallDir will be written to the registry in the following steps.


Let's create a globalstring from which we can look up the InstallDir.
var
InstallDir: string;
and
InstallDir := ExtractFileDir(ParamStr(0));

Now lets see what we got in total.



program Bf2;

{$APPTYPE CONSOLE}

uses
Windows, SysUtils, Registry;

var
InstallDir, InstallFilesDir: string;

procedure CreateRegistryEntries;
var
Reg, Reg1, Reg2: TRegistry;
begin
Reg := TRegistry.Create;//Creates the registry so you can use it.
Reg.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2', True);//Opens the key and if it does not exist it creates it.
Reg.WriteString('Language','Dutch');
Reg.WriteString('Locale','nl');
Reg.WriteString('Language','Dutch');
Reg.WriteString('InstallDir',InstallDir);//*
Reg.WriteString('Version','1.4');

Reg1 := TRegistry.Create;//Creates the registry so you can use it.
Reg1.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg1.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\ergc', True);//Opens the key and if it does not exist it creates it.
Reg1.WriteString('','1234567891234567891234567');//'' is equal to @ in the reg file we exported from the registry editor.

Reg2 := TRegistry.Create;//Creates the registry so you can use it.
Reg2.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg2.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\wdc', True);//Opens the key and if it does not exist it creates it.
Reg2.WriteString('','true');
end;

begin
InstallDir := ExtractFileDir(ParamStr(0)) + '\Install Files\Battlefield 2';
CreateRegistryEntries;

end


Now the only thing we have to do is copy some folders to the My Documents directory.

First we need to get the right My Documents directory on each computer this executable will be ran.
It might be hard to understand, but it's pretty easy.


function GetMyDocuments: string;
var
r: Bool;
path: array[0..Max_Path] of Char;
begin
r := ShGetSpecialFolderPath(0, Path, CSIDL_Personal, False) ;
if not r then raise Exception.Create('Could not find MyDocuments folder location.') ;
Result := Path;
end;

I won't explain all, but it tries to get the special folder CSIDL_Personal which is the My Documents folder.
If it works Path contains the path if not r the Boolean will be false then it will raise an Exception aka it will tell you it couldn't find the directory.
Result := Path; so that GetMyDocuments will return the My Documents directory, duh :p.

Don't forget to add
ShlObj to the uses.


The copy folder part:


procedure CopyFolder(SrcFolder, DstFolder : String);
var
SearchRec : TSearchRec;
Src, Dst : String;
begin
Src := IncludeTrailingBackslash(SrcFolder);
Dst := IncludeTrailingBackslash(DstFolder);
ForceDirectories(Dst);
if FindFirst(Src + '*.*', faAnyFile, SearchRec) = 0 then
try
repeat
with SearchRec do
if (Name <> '.') and (Name <> '..') then
if (Attr and faDirectory) > 0 then
CopyFolder(Src + Name, Dst + Name)
else
CopyFile(Pchar(Src + Name), PChar(Dst + Name), True);
until FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;

I understand most of it, but to be honest not all, just copy it and know that it will move folders; period.

I have Battlefield 2 installed and I found the configuration and profiles needed for it.
C:\Documents and Settings\Owner\My Documents\Battlefield 2
This contains:

http://home.impsoft.info/downloads/ConfigurationProfilesFolder.PNG

Copy these files into a folder you like and put this folder in the Install Files folder.



CopyFolder(InstallFilesDir +'\<TheFolderWhereYouPutThoseConfigFiles>',GetMyDocuments +'\Battlefield 2');


In my Direct-Play and maybe seen in the pictures I use My Docs:



CopyFolder(InstallFilesDir +'\My Docs',GetMyDocuments+'\Battlefield 2');


The final thing to add is starting the game.
You must make sure you got a No-DVD crack and replace it with the original 'Game.exe'
Then add this code.


procedure Run(Path:string);
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
begin
ExecuteFile := Path;
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
lpFile := PChar(ExecuteFile);
nShow := SW_SHOWNORMAL;
end;
ShellExecuteEx(@SEInfo);
end;

Add
ShellApi to the uses.

Add:

Run(InstallFilesDir+'\Battlefield 2\Bf2.exe');
or
Run(InstallFilesDir+'\<GameName>\<Game.exe>');
Before

end.



This is the final code:


program Bf2;

{$APPTYPE CONSOLE}

uses
Windows, SysUtils, Registry, ShlObj, ShellApi;

var
InstallDir, InstallFilesDir: string;

procedure CreateRegistryEntries;
var
Reg, Reg1, Reg2: TRegistry;
begin
Reg := TRegistry.Create;//Creates the registry so you can use it.
Reg.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2', True);//Opens the key and if it does not exist it creates it.
Reg.WriteString('Language','Dutch');
Reg.WriteString('Locale','nl');
Reg.WriteString('Language','Dutch');
Reg.WriteString('InstallDir',InstallDir);//*
Reg.WriteString('Version','1.4');

Reg1 := TRegistry.Create;//Creates the registry so you can use it.
Reg1.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg1.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\ergc', True);//Opens the key and if it does not exist it creates it.
Reg1.WriteString('','1234567891234567891234567');//'' is equal to @ in the reg file we exported from the registry editor.

Reg2 := TRegistry.Create;//Creates the registry so you can use it.
Reg2.RootKey := HKEY_LOCAL_MACHINE;//Sets the rootkey
Reg2.OpenKey('SOFTWARE\Electronic Arts\EA GAMES\Battlefield 2\wdc', True);//Opens the key and if it does not exist it creates it.
Reg2.WriteString('','true');
end;

procedure CopyFolder(SrcFolder, DstFolder : String);
var
SearchRec : TSearchRec;
Src, Dst : String;
begin
Src := IncludeTrailingBackslash(SrcFolder);
Dst := IncludeTrailingBackslash(DstFolder);
ForceDirectories(Dst);
if FindFirst(Src + '*.*', faAnyFile, SearchRec) = 0 then
try
repeat
with SearchRec do
if (Name <> '.') and (Name <> '..') then
if (Attr and faDirectory) > 0 then
CopyFolder(Src + Name, Dst + Name)
else
CopyFile(Pchar(Src + Name), PChar(Dst + Name), True);
until FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;

function GetMyDocuments: string;
var
r: Bool;
path: array[0..Max_Path] of Char;
begin
r := ShGetSpecialFolderPath(0, Path, CSIDL_Personal, False) ;
if not r then raise Exception.Create('Could not find MyDocuments folder location.') ;
Result := Path;
end;

procedure Run(Path:string);
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
begin
ExecuteFile := Path;
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
lpFile := PChar(ExecuteFile);
nShow := SW_SHOWNORMAL;
end;
ShellExecuteEx(@SEInfo);
end;

begin
InstallFilesDir := ExtractFileDir(ParamStr(0)) + '\Install Files';
InstallDir := InstallFilesDir + '\Battlefield 2';
CreateRegistryEntries;
CopyFolder(InstallFilesDir +'\My Docs', GetMyDocuments+'\Battlefield 2');
Run(InstallFilesDir+'\Battlefield 2\Bf2.exe');
end.

Like I told you you can use a form if you like and mess around a lot and remember Google is your friend.

Build this executable and name it to your liking in my example RunBF2.exe
To organize it a little.

In the end it would look like this.
You have a folder called
<YourGame>
Which contains an Install Files folder and the executeable, optional an autorun.inf file to start the game on dvd input.
The Install Files Folder contains
The files required like <YourGameName> folder with the actual game files originally from C:\Program Files\<GameCreator>\<YourGameName>\
Next to the <YourGameName> Folder you have a Folder called the way like it in my example 'My Docs' which contains folder or files about configuration and profiles.
So:
'C:\<GameName>'
'C:\<GameName>\ExecutableNameWeJustCreated.exe'
'C:\<GameName>\autorun.inf Optional'
'C:\<GameName>\Install Files'
'C:\<GameName>\Install Files\<GameName>\ <All The Game Files and Folder here from the Game Install Directory.>'
'C:\<GameName>\Install Files\My Docs\The configuration/profile Files'

For Battlefield 2:
'C:\BF2'
'C:\BF2\RunBF2.exe'
'C:\BF2\autorun.inf'
'C:\BF2\Install Files'
'C:\BF2\Install Files\Battlefield 2\'
'C:\BF2\Install Files\My Docs\'

You should now be able to play the game with RunBF2.exe


How to create an 'autorun.inf' file for a DVD/CD.

You can go advanced with autorun files, but this is definitely not needed :).
Create a text file and open it with notepad.
Copy this into notepad:


[autorun]
Open=<YourJustCreatedExecuteableName>.exe
Icon=<YourJustCreatedExecuteableName>.exe,0

If you look a few lines up you see C:\BF2\RunBF2.exe that is the executable we just created in Delphi.
So in my case it would be:


[autorun]
Open=RunBF2.exe
Icon=RunBF2.exe,0

Now save this file as 'autorun.inf' and place it in your 'C:\<GameName>\<Here>'.
That would be 'C:\BF2\autorun.inf' for me.
Note: C:\BF2\ can also be 'C:\THIS IS THE FOLDER WHERE MY DIRECT PLAY FILES FOR THE GAME BATTLEFIELD 2 ARE' for example it doesn't matter, but the easiest would just be 'C:\<GameName>'

How to create the iso image and burn it to a DVD/CD.

Make sure you have magic iso (or something that can create an iso file) installed and all the required files for your <GameName> Direct-Play.
Copy RunBF2.exe,
Copy autorun.inf and
Copy Install Files folder
to your iso image.
This is how it should look like:

http://home.impsoft.info/downloads/FinalPicture.PNG

Create the iso image and mount it or burn it to DVD/CD.


To all my friends out here, I can create the executeable for you but you will need the install files yourself because I am not going to send you 3 gig's.

If you need any help or when you think I should explain something better PM me or react on this thread. :)





This tutorial has been made by Hermen Otter. :)
Created in notepad*.

~Greetings to Ogre for pointing out some mistakes.

Ogre
07-23-2009, 04:48 AM
Looks very cool, I'll try this some time and tell you how it goes

ShowerThoughts
07-23-2009, 05:02 AM
Thanks, for the reply and for helping to get it ready for the release!
I hope they don't forget to post because it's so long.
Please post if YOU like it. ;)

edit:
How naive that people asking for rep get rep and the people who aren't don't get it.
So Rep means nothing to me :).

belgin fish
07-23-2009, 05:10 AM
wow... Thats long, seems interesting gona read it :D

Brain
07-23-2009, 05:10 AM
looks good Hermen, you can tell you spent quite a bit of time making this.
and with 15 people looking at it right now it seems popular :p

JPHamlett
07-23-2009, 05:31 AM
very nice tut ill try this when i get some games worth doing it on

ShowerThoughts
07-23-2009, 05:32 AM
looks good Hermen, you can tell you spent quite a bit of time making this.
and with 15 people looking at it right now it seems popular :p

If just one person is reading it, beside of me I am happy :).

Anyone walking into problems?

kingarabian
07-23-2009, 06:24 PM
Pretty good. One question: does it work with any .exe?

ShowerThoughts
07-23-2009, 06:48 PM
Pretty good. One question: does it work with any .exe?

It should work with anything that you install, the fact is when you install something they just configure the application/game to your pc like serials/InstallDir/Version/Profiles Call it some things you can find in your registry some things you can find in my documents.

You could also google procmon.exe from microsoft and see what files get created/moved or whatever ;).

Thanks for the reply.
If you want me to make a tutorial with an application I would love to do so :).

List to do:
-Write a tutorial
-Rewrite this tutorial.
-Write a application based tutorial.

Ouivile
07-27-2009, 12:22 PM
direct play is only worth doing it on big non multi/online games were lag wont screw u over.
example:
elder scroll series
the witcher
etc.

if its multi/online and cd is required, either get no cd crack , use psuedo drive with image or just the cd, which i would recommend because its just simpler. but very interesting tut. im wondering if i can do this for something else...

ian.
07-27-2009, 12:34 PM
I was just wondering if you could do something like that for Photoshop.. My friend has it and she needs to put it on her new computer but doesn't have they CDs/key/something (don't know the whole story, they just asked me and I thought you'd know :p). Thanks in advance! :)

ShowerThoughts
07-29-2009, 02:23 AM
Contact me on msn!
I will help you :)

Everyone good news new tutorial coming!