User:N0one/Sandbox

From Valve Developer Community
Jump to: navigation, search

This Tutorial page is not finished.

Nuvola apps ksnapshot.png
This article or section needs additional screenshots to help visually convey the subject.
You can upload screenshots at Special:Upload. For help, see Help:Images.

Introduction

This guide describes how to make a mod for Portal 2.

Getting Started

Creating your first mod

first steps is to create a folder for your mod in Steam/steamapps/sourcemods and rename it to the name of your mod. Open the folder and create two subfolders: "cfg" and "maps".

Open the "maps" folder and create a folder called "soundcache" inside it. Copy the file called "_master.cache" from Steam/steamapps/common/portal 2/portal2_dlc2/maps/soundcache and paste it to (your mod)/maps/soundcache.

Creating gameinfo.txt

Next step is creating the most important file, gameinfo.txt. Create a text file named gameinfo.txt and open it up and copy the following code:

"GameInfo"
{
    game            "Your Mod's Name"
    GameData        "portal2.fgd"
    FileSystem
    {
        SteamAppId  620 // Portal 2 has ID 620
        SearchPaths
        {
            Game    |gameinfo_path|.
            Game    portal2_dlc2
            Game    portal2_dlc1
            Game    portal2
        }
    }
}

Remove the Game/portal2_dlc1 search path, UNLESS your mod is going to have Co-Op functionality.

Customise core menu funtions

Use a program like GCFScape GCFScape to open Steam/steamapps/common/portal 2/portal2_dlc2/pak01_dir.vpk and copy the file called resource/ui/basemodui/mainmenu_new.res to (your mod)/resource/ui/basemodui or create a folder and name it "pak01_dir" and place it anywhere on your pc, easy to reach is by having on desktop and make folders resource/ui/basemodui. Edit it (See Below), then pack it into a new VPK using portal 2/bin/vpk.exe or GCFScape GCFScape, and place it in your mods folder.

Removing the Co-Op button

This part is optional, unless your mod is NOT going to have Co-Op functionality.

Open the file mainmenu_new.res with a text editor.

When you have the file open, you'll see something like this:

	"BtnCoOp"
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnCoOp"
		"xpos"						"88"		[$GAMECONSOLE && ($GAMECONSOLEWIDE && !$ANAMORPHIC)]
		"xpos"						"63"		[$GAMECONSOLE && (!$GAMECONSOLEWIDE || $ANAMORPHIC)]	
		"xpos"						"88"		[!$GAMECONSOLE && $WIN32WIDE]
		"xpos"						"63"		[!$GAMECONSOLE && !$WIN32WIDE]	
		"ypos"						"250"		[$GAMECONSOLE]  
		"ypos"						"228"		[!$GAMECONSOLE] 	
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnQuit"					[$GAMECONSOLE]
		"navUp"						"BtnPlaySolo"				[!$GAMECONSOLE]
		"navDown"					"BtnCommunity"
		"labelText"					"#PORTAL2_MainMenu_CoOp"
		"style"						"MainMenuButton"
		"command"					"CoopPlay"
		"ActivationType"			"1"
		"FocusDisabledBorderSize"	"1"
	}

This is the code that describes the Co-Op button, position on the screen, name of the button, what to do when clicked, and which buttons come next and before it when using the arrow keys. You can delete all of it.

Next thing is to find the "navDown" on "BtnPlaySolo":

Once you have found it replace it with:

"navDown"					"Options"

Also find "navUp":

Once you have found it, replace it with:

"navUp"					"BtnPlaySolo"

Now, once you compiled it into a vpk file and start the game, you'll see gap between single player and community buttons.

Icon-Important.pngImportant:For the "ypos" to work, it should have [!$GAMECONSOLE] or it will not work. If the buttons dont have it and only have one "ypos" then its ok to replace it.

Lets fix that by finding the "ypos" on "BtnCommunity":

it should look like this:

"ypos"						"258"	[!$GAMECONSOLE] 

replace it with the "ypos" from the "BtnCoOp":

"ypos"						"228"	[!$GAMECONSOLE] 

Do this to all buttons except the single player button, if you dont want the buttons to be in the middle then replace the "ypos" from "BtnPlaySolo" with "228".

Then pack it into a new VPK using portal 2/bin/vpk.exe and place it in your mods folder.

Thats all for removing the Coop button, this also applies to all buttons in the file.

Here is the premade file without the Coop button and no gap:

mainmenu_new.res
"Resource/UI/MainMenu.res"
{
	"MainMenu"
	{
		"ControlName"				"Frame"
		"fieldName"					"MainMenu"
		"xpos"						"0"
		"ypos"						"0"
		"wide"						"f0"
		"tall"						"f0"
		"autoResize"				"0"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"PaintBackgroundType"		"0"
	}
						
	// Single player
	"BtnPlaySolo"
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnPlaySolo"
		"xpos"						"88"		[$GAMECONSOLE && ($GAMECONSOLEWIDE && !$ANAMORPHIC)]
		"xpos"						"63"		[$GAMECONSOLE && (!$GAMECONSOLEWIDE || $ANAMORPHIC)]	
		"xpos"						"88"		[!$GAMECONSOLE && $WIN32WIDE]
		"xpos"						"63"		[!$GAMECONSOLE && !$WIN32WIDE]	
		"ypos"						"220"		[$GAMECONSOLE]  
		"ypos"						"198"		[!$GAMECONSOLE] 	
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnQuit"	[$GAMECONSOLE]
		"navUp"						"BtnEconUI"		[!$GAMECONSOLE]
		"navDown"					"BtnCoOp"
		"labelText"					"#PORTAL2_MainMenu_Solo"
		"style"						"MainMenuButton"
		"command"					"SoloPlay"
		"ActivationType"			"1"
		"FocusDisabledBorderSize"	"1"
	}

	// Community Maps
	"BtnCommunity" [!$GAMECONSOLE]
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnCommunity"
		"xpos"						"88"	[$GAMECONSOLE && ($GAMECONSOLEWIDE && !$ANAMORPHIC)]
		"xpos"						"63"	[$GAMECONSOLE && (!$GAMECONSOLEWIDE || $ANAMORPHIC)]	
		"xpos"						"88"	[!$GAMECONSOLE && $WIN32WIDE]
		"xpos"						"63"	[!$GAMECONSOLE && !$WIN32WIDE]	
		"ypos"						"280"	[$GAMECONSOLE]  
		"ypos"						"228"	[!$GAMECONSOLE] 	
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnOptions"	[$GAMECONSOLE]
		"navUp"						"BtnCoOp"		[!$GAMECONSOLE]
		"navDown"					"BtnOptions"
		"labelText"					"#PORTAL2_MainMenu_Community"
		"style"						"MainMenuButton"
		"command"					"CreateChambers"
		"ActivationType"			"1"
		"FocusDisabledBorderSize"	"1"
	}
	
	"BtnOptions"
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnOptions"
		"xpos"						"88"	[$GAMECONSOLE && ($GAMECONSOLEWIDE && !$ANAMORPHIC)]
		"xpos"						"63"	[$GAMECONSOLE && (!$GAMECONSOLEWIDE || $ANAMORPHIC)]	
		"xpos"						"88"	[!$GAMECONSOLE && $WIN32WIDE]
		"xpos"						"63"	[!$GAMECONSOLE && !$WIN32WIDE]	
		"ypos"						"310"	[$GAMECONSOLE]  
		"ypos"						"258"	[!$GAMECONSOLE] 
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnCoOp"			[$GAMECONSOLE]
		"navUp"						"BtnCommunity"	[!$GAMECONSOLE]
		"navDown"					"BtnPlaySolo"		[$GAMECONSOLE]
		"navDown"					"BtnExtras"			[!$GAMECONSOLE]
		"labelText"					"#PORTAL2_MainMenu_Options"
		"style"						"MainMenuButton"
		"command"					"Options"
		"ActivationType"			"1"
	}
	
	"BtnExtras" [!$GAMECONSOLE]
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnExtras"
		"xpos"						"88"	[$GAMECONSOLE && ($GAMECONSOLEWIDE && !$ANAMORPHIC)]
		"xpos"						"63"	[$GAMECONSOLE && (!$GAMECONSOLEWIDE || $ANAMORPHIC)]	
		"xpos"						"88"	[!$GAMECONSOLE && $WIN32WIDE]
		"xpos"						"63"	[!$GAMECONSOLE && !$WIN32WIDE]	
		"ypos"						"340"	[$GAMECONSOLE]  
		"ypos"						"288"	[!$GAMECONSOLE]   
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnOptions"
		"navDown"					"BtnQuit"
		"labelText"					"#L4D360UI_MainMenu_Extras"
		"style"						"MainMenuButton"
		"command"					"Extras"
		"ActivationType"			"1"
	}

	"BtnQuit" [!$GAMECONSOLE]
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnQuit"
		"xpos"						"88"	[$WIN32WIDE]
		"xpos"						"63"	[!$WIN32WIDE]	
		"ypos"						"318"
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnExtras"
		"navDown"					"BtnEconUI"
		"labelText"					"#PORTAL2_MainMenu_Quit"
		"style"						"MainMenuButton"
		"command"					"QuitGame"
		"ActivationType"			"1"
	}

	"BtnEconUI" [!$GAMECONSOLE]
	{
		"ControlName"				"BaseModHybridButton"
		"fieldName"					"BtnEconUI"
		"xpos"						"88"	[$WIN32WIDE]
		"xpos"						"63"	[!$WIN32WIDE]	
		"ypos"						"348"
		"wide"						"280"
		"tall"						"20"
		"autoResize"				"1"
		"pinCorner"					"0"
		"visible"					"1"
		"enabled"					"1"
		"tabPosition"				"0"
		"navUp"						"BtnQuit"
		"navDown"					"BtnPlaySolo"
		"labelText"					"#PORTAL2_MainMenu_Econ"
		"style"						"BitmapButton"
		"command"					"EconUI"
		"ActivationType"			"1"
		"bitmap_enabled"			"vgui/store/store_button"
		"bitmap_focus"				"vgui/store/store_button_focus_anim"
	}

	"PnlCloudPic"
	{
		"ControlName"			"ImagePanel"
		"fieldName"				"PnlCloudPic"
		"xpos"					"310"
		"ypos"					"288"
		"wide"					"50"
		"tall"					"50"
		"visible"				"0"
		"enabled"				"1"
		"tabPosition"			"0"
		"scaleImage"			"1"
		"image"					"resource/icon_cloud_small"
	}
}

Restart Steam

Restart Steam. If it all worked, your mod should be listed and working. Congratulations!

Advanced

This part is going to guide you how to create custom images, chapters (button), and more.

Creating a button for custom chapters

This part is almost identical to the above.

First step is to Find the "BtnPlaySolo" (directly at the top) and rename it to "BtnExtras":

Once you did that, find the "command":

"command"					"SoloPlay"

Replace it with:

"command"					"Extras"

This will make it jump into the Extras menu, allowing us to customise the chapter list.


This part is optional, find the "labelText":

"labelText"					"#PORTAL2_MainMenu_Solo"

and replace it with your desire. For example:

"labelText"					"Play Portal 2: The Ruins"

Dont forget to remove the actual "Extras" button!

Next step is to replace the "navUp/Down" with corresponding button names.

For "BtnCoOp" replace the "navUp" "BtnPlaySolo" with "navUp" "BtnExtras".

For "BtnCommunity" replace the "navUp""BtnCoOp" with "navUp" "BtnExtras".

If you dont have the BtnCoOp you can replace the "navDown" on the single player button or the Extras button with "navDown" "BtnCommunity"

This also applies to all buttons in the file.

Create functioning chapter buttons

For this, we have to use the Extras menu as the single player menu, the reason why we used the Extras command instead of the SoloPlay command is because the SoloPlay only shows Portal 2 chapters instead of the custom chapters.

Here, you can have as many or as little chapters as you like. You'll need to create a 'scripts' folder for this task.

Inside this folder, create an extras text file.

While we're in the scripts folder, go to ../Steam/steamapps/common/Portal 2/portal2_dlc2 and copy the game_sounds_manifest text file over to your mod's scripts folder.

Back to the extras text file, copy and paste the following code:

"Extras"
{
    "chapter1"
    {
        "title" "Chapter 1"
        "subtitle"  "The Wake Up"
        "command"   "map sp_a1_00" //map name to start the first chapter
        "pic"   "vgui/chapters/chapter1"
    }
	// You can copy as many as you want
    "chapter2"
    {
        "title" "Chapter 2"
        "subtitle"  "The Portal Gun"
        "command"   "map sp_a2_01" //map name to start the second chapter and so on
        "pic"   "vgui/chapters/chapter2"
    }
}

For the logo/background/chapters you will need an image editor such as: GIMP GIMP, Adobe Photoshop Adobe Photoshop, etc.

This guide will use GIMP GIMP for creating logos/backgrounds/chapters. There are plug-ins to export it as a .vmf file, but in this guide we will use VTFEdit VTFEdit

Create a new image file with a resolution of 512x128. Then choose 'Transparency' under Advanced. This allows you to admire your logo in all its glory without a visible background layer. The rest is up to you and your imagination!

After creating your logo export it as a .png or .tga, then create a .vmt file and name it "portal2logo.vmt" or open VTFEdit VTFEdit and press on new. (save it somewhere on your desktop)

and copy this code:

UnlitGeneric
{
$basetexture "vgui/portal2logo" 
$translucent 1
$vertexcolor 1
$vertexalpha 1
$ignorez 1
$additive 0
$no_fullbright 1
$SHADERSRGBREAD360 1
}

Now lets create the .vmf file.

Open VTFEdit VTFEdit and click on import, on Normal Format, change it to BGRA8888 and on Alpha format to DXT 1. Set the size to 512x128, and then press ok.

When you have done that you will see the background is black, to fix that go to View and enable mask (shortcut Ctrl+M).

On flags check No Mipmap and No Level Of Detail, by default the Eight bit Alpha should be checked, if not, the import it again.

Once you have done all of that, click on Save As and name it to portal2logo.vtf.

Now place both files in your pak01_dir in materials/vgui

Pack it again and open the game, if the logo is there, Congratulations! you created your logo!

Icon

For the icon of your mod to show, there are two places it can be displayed: In your steam library and on your desktop.

To make your icon you will need an image editor such as: GIMP GIMP, Adobe Photoshop Adobe Photoshop, Paint.NET Paint.NET.

To start open an image editor and create a new file with the dimensions 256x256 pixels. Then save your image as a .png in a folder (For example sourcemods/resource/icons_raw/) and name it icon_huge.

Copy the icon_huge and rename it to icon_big and scale it down to 32x32 and do it again but name it icon and scale it to 16x16.

After creating the icons, Open the icon file and save it as a targa file (.tga) in the sourcemods/YourMod/resource folder, do the same with icon_big and NOT with icon_huge.

Now once you have done all of that, the next step is to show the icon in the steam library. Go to your mods folder and open gameinfo.txt.

Below Gamedata type icon "resource/icon", example:

"GameInfo"
{
	game 		"Your Mod's Name"
	GameData	"portal2.fgd"
	icon		"resource/icon"
	...

Now restart Steam. If it all worked, your mods icon should be shown.

(The guide for creating icon is outdated on steam: Create a Portal 2 mod)