I don't need to test my programs. I have an error-correcting modem.

Difference between revisions of "User:00zX"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
m (Proposal - UScripting)
m (Proposal - UScripting)
Line 131: Line 131:
 
<br>
 
<br>
  
==Proposal - UScripting==
+
[[User:00zX/Setting_Up_Your_UScript_Environment]]
Step by step process of installing, setting up jEdit for use with Uscript. From start to finish, using/committing to repository's and building using Apache Ant. A major portion of this tutorial is dedicated to giving you the knowledge to editing/customizing your programming environment to your liking (I do feel this can help to improve workflow).
+
 
+
{{ambox|text=you can replace any of these with a program of your choosing, some of the [[Unreal_Wiki:Basic_procedures|basic procedure]] in this tutorial are generic enough that program doesnt matter. Some of these steps however are only directly relevant to the programs listed below.}}
+
Tools suggested for this tutorial:
+
*[[jEdit]] - Programmers text editor [[Legacy:JEdit|jEdit]]
+
*[[GIT]] - Source/Build Repository
+
*[[UnCodeX]] - UScript Class Browser
+
*[[NSIS]] - Installer/Packaging
+
 
+
===Introduction to jEdit===
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
:[http://www.jedit.org/ jEdit] is a powerful, cross platform, java based programmers text editor.<br>
+
 
+
====Edit Modes====
+
:jEdit uses what is called edit modes, these specify:
+
::* Syntax highlighting rules
+
::* Auto indent behavior
+
::* Various other customizations for editing a certain filetype
+
 
+
:These edit modes are easily installed an updated, they use the XML language and jEdits own document type definition for modes (xmode.dtd). More information on edit modes can be found within jEdits Help section along with a section on writing edit modes so you can customize jEdits UScript mode to your liking.<br>
+
 
+
=====Setting jEdits Mode=====
+
::By default jEdit comes with a UScript mode which can be located in the {'''jEdit Home Directory'''}\Modes this edit mode is very light weight and doesnt cover all engine versions.<br>
+
::Im going to recommend not using this directory if you plan to modify your edit mode or use one of the custom ones provided below, the reason for this is simpler backups when using the document directory.<br>
+
 
+
::On jEdits main toolbar you will find the utilities button, under that is the global options which contains the options for all edit modes. Syntax highlighting colours can be found in here also.
+
 
+
::[[User:Wormbo/UScript_edit_mode|Wormbo's UScript jEdit Mode]]<br>
+
::[[User:00zX/UScript.xml|My modified UScript jEdit Mode]]<br>
+
 
+
====Recommended Plugins====
+
:* Project Viewer: Usability.
+
:* Buffer Tabs: Usability.
+
:* Dirty Gutter: Diff.
+
:* TaskList: TODO, NOTE, FIXME's
+
:* Text Autocomplete: Usability - Code Completion.
+
:* WhiteSpace: Usability/Readability.
+
 
+
=====Plugin Installation and Settings=====
+
::jEdits Plugin Manager and Settings can be accessed through the Plugins button on the main toolbar (show picture).<br>
+
 
+
::To install new plugins, click on the plugin manager and you will notice a tab up the top of the new window which says install (show picture).
+
Navigate to this and select the check-boxes for all plugins you wish to install then hit install in the lower left of the panel.
+
 
+
::The plugin settings can be found under the Plugins/Plugin Option button on jEdits main toolbar at the top.
+
 
+
{{ambox|type=notice|text=I'll guide you through the settings for each of the recommended plugins to show you which options I prefer as you may want to adjust these or similar to your liking.}}
+
<br>
+
====Creating your first Project====
+
:In this part of the tutorial we will be creating a project using jEdit and Project Viewer.
+
 
+
:First off I prefer to have the project viewer docked on the left hand side of jEdit, you can however put it anywhere you wish to place it.
+
Right click on All Projects which you should see in your project viewer, add a new group (this is a recommendation), this will help to keep all your UScript UT3/UDK etc separate from any other projects you may wish to create.
+
I have a group named '''UE3''' for example, then under that group I have '''UT3''' and '''UDK''' to house each of the projects I have for each.
+
 
+
:Once you have your groups setup to your liking you are ready to create a project, this will require that you have a directory to scan for source files within.
+
<br>
+
=====Directory Structure and creating Package Folders=====
+
Firstly you will need to have an understanding of '''[[Engine_Directory_Structure|Unreal Engine's directory structure]]''', from there you will be able to [[Set_up_a_package_directory|create the required directory for a package]] so you can [[compile]] the [[UC_File|*.UC files]] into a [[Script Package File|script package file]](*.U). For Unreal Script [[Classes]] ([[UC_File|*.UC files]]) you will need to first make the ''package'' directory and then the ''Classes'' directory.
+
 
+
Right click on the group you wish to create the project within, click '''Add Project'''. This will display the create project dialogs (show Picture)
+
Select a name and the root directory for you project, for now select {'''Your Package'''} directory. Or alternatively if you wish to use multiple [[package]]'s for your project you may add the {[[base source directory]]}, you will however need to filter the imported folders so that only the ones you require for your project are displayed.
+
 
+
Project Viewer would now have selected the project for you, you can navigate back to all projects using the drop down box at the top of Project Viewer.
+
<br>
+
 
+
====Creating your first Class====
+
Go to file in jEdits main toolbar, select new and follow this basic procedure [[Create a class]].
+
 
+
You'll notice that Project Viewer doesnt automatically scan for new classes unless it has been selected to do so. Right click on your project in the Project Viewer panel and select 'Re-import files'.
+
Make sure the Project and Classes directories are expanded and you should now see {'''Your Class'''} in there.
+
 
+
=====More on jEdit Modes=====
+
Creating a customized template an macro for creating a new class based on this template.
+
 
+
=====Customizing Project Viewer=====
+
Specialized section on setting up Project Viewer's context (Right Click) menu to contain a create class button which will create a class based on a UScript template.
+
 
+
You may skip to [[User:00zX#Compiling|Compiling]] at this point, though I highly recommend you come back and follow up on [[UnCodex]].
+
</div></div>
+
===Introduction to UnCodex===
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
This is basically a must have application for anyone doing UScript unless ofcoarse you opt to use other IDE's which contain their own class browsers.
+
Personally I think [[UnCodeX]] is still the best out there and its quick with minimal overhead.
+
 
+
There are two versions of [[UnCodeX]] that I use, I prefer using the older 227 for anything pre-UE3 or TribesV for those I use the newer 237-beta version.
+
 
+
{{ambox|type=notice|text=Ideally jEdit would allow UScript class browsing like it does Java. There was an Eclipse plugin, theres a Visual Studio IDE called [Nfringe] and there is also (Gah I forget the name).}}
+
<br>
+
====Setting Up UnCodex====
+
Working with multiple copies of unreal engine source (for example, numerous [[UDK]] copies) can be tedious to continuously analyze all the time in [[UnCodex]] so I'll guide you through setting it up so you can have numerous shortcuts all which cache different versions of [[Unreal Engine]].
+
You have to be careful however, this can get confusing as to which copy is in which [[UnCodeX]] window but you can double check the title bar, which I highly recommend you do. I have been caught out a few times with this myself between [[UT3]] and [[UDK]] sources.<br>
+
 
+
As a general rule of thumb I just use the naming convention:<br>
+
"Drive:\{UnCodeX}\UnCodeX.exe" -config UnCodeX-{GameName/Version}.ini<br>
+
 
+
::'''UT2004''' - "Drive:\{UnCodeX227}\UnCodeX.exe" -config UnCodeX-UT2004.ini<br>
+
::'''DeusEx''' - "Drive:\{UnCodeX227}\UnCodeX.exe" -config UnCodeX-DeusEx.ini<br>
+
::'''UT3''' - "Drive:\{UnCodeX237-beta}\UnCodeX.exe" -config UnCodeX-UT3.ini<br>
+
::'''UDK''' - "Drive:\{UnCodeX237-beta}\UnCodeX.exe" -config UnCodeX-UDK-2009-11-2.ini<br>
+
::'''UDK''' - "Drive:\{UnCodeX237-beta}\UnCodeX.exe" -config UnCodeX-UDK-2010-03.ini<br>
+
 
+
Now these [[INI_File|INI]]'s will have to exist for this to work, so copy the default ''UnCodeX.ini'' and rename it to ''UnCodeX-{GameName/Version}.ini''.
+
Open this file in jEdit or notepad for editing,
+
 
+
<pre>
+
[Sources]
+
''Add your source directories here''
+
</pre>
+
::'''UT2004''' - {[[Base Directory]]}\System\<br>
+
::'''UT3''' - {[[User Documents Directory]]}\My Games\Unreal Tournament 3\UTGame\Src\<br>
+
 
+
{{ambox|type=notice|text=This can be done once [[UnCodeX]] is loaded for this mode.}}<br>
+
 
+
{{ambox|type=notice|text=For UT3 you will require two directories selected for scanning, one is the exported script directory the other is Src directory within UTGame.
+
With UT2.x and UDK you work along side Epic's Packages so it'll scan both, you can set [[UnCodeX]] to scan numerous directories for any mode.}}<br>
+
 
+
{{ambox|type=warning|text=This is an absolute requirement for [[UnCodeX]] to function in multiple mode's correctly. In the past I have forgotten to do this and as the cache is not saved for that source directory you must rescan each time [[UnCodeX]] is loaded.}}
+
<pre>
+
[GUI.General]
+
StateFile=UnCodeX-{GameName-Version}.ucx
+
</pre>
+
 
+
::'''UT2004''' - StateFile=UnCodeX-UT2004.ucx<br>
+
::'''DeusEx''' - StateFile=UnCodeX-DeusEx.ucx<br>
+
::'''UT3''' - StateFile=UnCodeX-UT3.ucx<br>
+
::'''UDK''' - StateFile=UnCodeX-UDK-2009-11-2.ucx<br>
+
::'''UDK''' - StateFile=UnCodeX-UDK-2010-03.ucx<br>
+
 
+
Once you have done that for your required modes you can boot the shortcut and analyze the source, now every time you boot you would be using the cache for that ini/source.
+
</div></div>
+
 
+
===Introduction to Git===
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
Git is a free & open source, distributed version control system.
+
[http://git-scm.com/ GIT]<br>
+
[http://code.google.com/p/msysgit/ msysgit - windows]<br>
+
====GIT command prompt====
+
=====Creating a repository======
+
<syntaxhighlight lang="bash">
+
# cd hello
+
# ls
+
# git init
+
# git add .
+
</syntaxhighlight>
+
=====Pushing a repository to GitHub=====
+
Create a repository on GitHub then...
+
<syntaxhighlight lang="bash">
+
# cd hello
+
# git remote add origin git@github.com:tabrez/hello.git
+
# git push origin master
+
</syntaxhighlight>
+
<br>
+
====GIT GUI====
+
=====Pushing a repository to GitHub=====
+
</div></div>
+
===Compiling===
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
====Using Batch (Windows)====
+
''UDK'' - Simple Compile batch
+
<syntaxhighlight lang="dos">
+
Drive:\UDK\{UDK-Version}\Binaries\UDK.exe make -debug -intermediate -log=CompileLog.log -full
+
pause
+
</syntaxhighlight>
+
<br>
+
 
+
''UT3'' - Multi-Package Compile batch
+
<syntaxhighlight lang="dos">
+
@echo Off
+
prompt $g
+
rem BASE DIRECTORIES
+
set UTDIR="D:\Midway\Unreal Tournament 3"
+
set UTCOM=%UTDIR%\Binaries\UT3.COM
+
 
+
rem PROJECT DETAILS
+
set UP1=UT_
+
set UP2=UT_GDP_
+
set K1=MDB
+
set K2=GameDex
+
set K3=Newtators
+
set K4=Mutatoes
+
 
+
rem script
+
set UTCONFIG=..\Config
+
set UTCOMSRC=..\Unpublished\CookedPC\Script
+
set MYCOMSRC=..\Unpublished\CookedPC\GameDex
+
 
+
@echo On
+
del %MYCOMSRC%\%UP1%%K1%.u
+
del %MYCOMSRC%\%UP1%%K2%.u
+
del %MYCOMSRC%\%K3%\%UP2%%K3%.u
+
rem del %MYCOMSRC%\%K4%\%UP2%%K4%.u
+
 
+
%UTCOM% make -debug -useunpublished -log=CompileLog.log -full
+
copy %UTCOMSRC%\%UP1%%K1%.u %MYCOMSRC%\%UP1%%K1%.u
+
copy %UTCOMSRC%\%UP1%%K2%.u %MYCOMSRC%\%UP1%%K2%.u
+
copy %UTCOMSRC%\%UP2%%K3%.u %MYCOMSRC%\%K3%\%UP2%%K3%.u
+
copy %UTCOMSRC%\%UP2%%K4%.u %MYCOMSRC%\%K4%\%UP2%%K4%.u
+
del %UTCOMSRC%\%UP1%%K1%.u
+
del %UTCOMSRC%\%UP1%%K2%.u
+
del %UTCOMSRC%\%UP2%%K3%.u
+
del %UTCOMSRC%\%UP2%%K4%.u
+
 
+
del %UTCONFIG%\%UP1%%K2%.ini
+
del %UTCONFIG%\%UP2%%K3%.ini
+
rem del %UTCONFIG%\%UP2%%K4%.ini
+
 
+
pause
+
prompt $p$g
+
</syntaxhighlight>
+
</div></div>
+
 
+
===Running Unreal Engine with your package===
+
===Introduction to NSIS===
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
[http://nsis.sourceforge.net/Main_Page NSIS]
+
 
+
<syntaxhighlight lang="nsis">
+
;
+
; GameDex-Std.nsi
+
; Creation Date:
+
; Last Updated: 22/04/2010 03:32
+
; Contributors: 00zX
+
; Attribution-Noncommercial-Share Alike 3.0 Unported
+
; http://creativecommons.org/licenses/by-nc-sa/3.0/
+
;
+
;--------------------------------
+
!define PRODUCT_MODE_STANDARD
+
 
+
!include "GameDex.nsh"
+
 
+
Function .onInit
+
ReadRegStr $INSTDIR HKLM ${REG_UT} "InstallLocation"
+
StrCmp $INSTDIR "" 0 NoAbort
+
MessageBox MB_OK "Unreal Tournament 3 not found, Install Aborted!"
+
Abort ; causes installer to quit.
+
NoAbort:
+
FunctionEnd
+
 
+
;TODO: Detect GameDex version
+
!insertmacro GAMEDEX_PAK
+
 
+
!insertmacro redef GAMEDEX_PAK_NAME "Newtators"
+
!insertmacro GAMEDEX_PAK_SEC
+
 
+
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+
!insertmacro MUI_DESCRIPTION_TEXT ${GameDex} "Main GameDex Packages"
+
!insertmacro MUI_DESCRIPTION_TEXT ${Newtators} "Addon Package for GameDex"
+
!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
 
+
!define GAMEDEX_UNPAK
+
!insertmacro GAMEDEX_PAK
+
 
+
!insertmacro redef GAMEDEX_PAK_NAME "Newtators"
+
!insertmacro GAMEDEX_PAK_SEC
+
 
+
Section Uninstall
+
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+
SetAutoClose false
+
SectionEnd
+
</syntaxhighlight>
+
 
+
====Creating an NSIS package script====
+
</div></div>
+

Revision as of 10:54, 15 February 2011

Works in Progress

Unreal Development Kit

UDK: Project Silky - Status: Alpha

Unreal Tournament 3

UT3: GameDex Framework - Status: Beta
Newtators-v1.9e - Status: Point Release
Attrition-v0.5pb - Status: Public Beta

Highlighters

UnrealWiki - Code Noir Redex Theme

Monobook-noir-alpha3.gif

Status: Beta

To Install copy the contents of the following page into your own 'User:[name]/monobook.css' page.

User:00zX/monobook.css
W3C CSS Validator
High Resolution Image
Features
Dark Theme
High Contrast
Improved Readability
Highlighter adjustments for UScript, CSS and XML
Different coloured borders per GameNameSpace
Curved Borders in supporting browsers
Known Issues
Edit/Input boxes are still black text on white.
Profile settings page unreadable.





Wiki

Rants

User:00zX/Rants

Contact Me

IRC

00zX on EnterTheGame

Other/Profiles

E-mail 00zX or on



Proposal - Preprocessor

Using The Unreal Engine 3 Preprocessor

Including Macro Files

class YourPawn extends UTPawn
	config(YourConfig);
 
`include(YourMacroFile.uci)
Example Macro File

When compiling with the -debug command line switch, the debug macro will then be defined and will switch our blank spaces to config/exec respectively.

`if(`notdefined(Debug))
 `define dconf
 `define dexec
`else
 `define dconf config
 `define dexec exec
`endif

Copy the above template into a blank text document and call the file YourMacroFile.uci

Example of usage

If we want to add a variable thats configurable only when the macro `DevBuild is defined.

class YourPawn extends UTPawn
	config(YourConfig);
 
`include(YourMacroFile.uci)
 
var `{dconf} bool	bCanDodge;
 
function bool Dodge(eDoubleClickDir DoubleClickMove)
{
	if(bCanDodge)
		return Super.Dodge(DoubleClickMove);
	else
		return false;
}
 
defaultproperties
{
`if(`notdefined(Debug))
	bCanDodge=True
`endif
}
YourConfig
[YourPackage.YourPawn]
bCanDodge=True

Example of usage

If we want to add a variable that already exists but is not config editable. (PostBeginPlay)

class YourPawn extends UTPawn
	config(YourConfig);
 
`include(YourMacroFile.uci)
 
`if(`isdefined(Debug))
var `{dconf} float	newGroundSpeed;
 
function PossessedBy(Controller C, bool bVehicleTransition)
{
	Super.PossessedBy(C, bVehicleTransition);
 
	GroundSpeed = newGroundSpeed;
}
`endif

Useful Macros

`define LogdFuncN() `logd(GetPackageName()$"."$class.name$"."$GetFuncName(),,'Debug');


User:00zX/Setting_Up_Your_UScript_Environment