How to #include my own header into the game?

Recommended Posts

I'm trying to include my Header with helpful functions into my unreal project in order to be able to include it in many other .h classes generated from inside the Editor so that they all can access them, but I am getting a lot of Errors... :S

This is my .h file created from inside VS which I would like to use inside my project:

#pragma once
#include "Engine/World.h"
#include "Classes/Kismet/KismetSystemLibrary.h"
#include "WormGameMode.h"
#include "WormGameMode.generated.h"

//Given a position in the world, returns [row][column]ID inside the GridSlotsOccupiedMap grid.
//FVector(0.f,0.f,0.f) is the center inside the 2D Array, the 2DArray is expected to have and ODD number of elements.
UFUNCTION(BlueprintPure, Category = "Grid")
void WorldLocationToGridID(AWormGameMode* GameMode, FVector Location, int& Row, int&Column)
{
	int RowMiddleID = (GameMode->GridHeight / GameMode->GridBlockSize) / 2;
	int ColumnMiddleID = (GameMode->GridWidth / GameMode->GridBlockSize) / 2;
	int GridBlockSize = GameMode->GridBlockSize;
	//------------------------------------------

	Row = -Location.Z / GridBlockSize + RowMiddleID;
	Column = Location.X / GridBlockSize + ColumnMiddleID;
}


//Display red wireframe cubes at the occupied position in the grid marked inside GridSlotsOccupiedMap
UFUNCTION(BlueprintCallable, Category = "Debug")
void DebugMarkOccupiedBlocks(AWormGameMode* GameMode)
{
	TArray<TArrayBool> GridSlotsOccupiedMap = GameMode->GetGridSlotsOccupiedMap();
	int GridWidth = GameMode->GridWidth;
	int GridHeight = GameMode->GridHeight;
	int GridBlockSize = GameMode->GridBlockSize;
	int XMiddleID = (GridWidth / GridBlockSize) / 2;
	int YMiddleID = (GridHeight / GridBlockSize) / 2;
	//-----------------------------------------------

	for (int row = 0; row < GridSlotsOccupiedMap.Num(); row++)
	{

		for (int column = 0; column < GridSlotsOccupiedMap[0].BoolRow.Num(); column++)
		{
			float X = (-XMiddleID + column) * GridBlockSize;
			float Z = (YMiddleID - row) * GridBlockSize;
			FVector Center = FVector(X, 50.f, Z + GridBlockSize/2);

			if (GridSlotsOccupiedMap[row][column])
			{
				UE_LOG(LogTemp, Warning, TEXT("Block[%i][%i] is occupied"), row, column)
					UKismetSystemLibrary::DrawDebugBox(GetWorld(),
									Center, FVector(5.7f, 5.7f, 5.7f),
									FColor::Red, FRotator::ZeroRotator, 0.f, 0);
			}
		}
	}
}

As you see I've included #include "WormGameMode.generated.h" as instruction from a topic I've found online, also I've Cut/Pasted it from the Intermediate/ProjectFiles folder where VS created it and pasted into Worm/Source/Worm folder.

Here's the errors the editor is giving back:

 
Quote

CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2065: 'AWormGameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2065: 'GameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2275: 'FVector': tipo non valido come espressione
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\intermediate\build\win64\ue4editor\inc\worm\WormGameMode.generated.h(11) : note: vedere la dichiarazione di 'FVector'
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2065: 'AWormGameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2065: 'GameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2275: 'FVector': tipo non valido come espressione
CompilerResultsLog: Error: Z:\Asus\Documenti\Unreal Projects\Worm\Intermediate\Build\Win64\UE4Editor\Inc\Worm\WormGameMode.generated.h(11) : note: vedere la dichiarazione di 'FVector'
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10) : error C2146: errore di sintassi: ')' mancante prima dell'identificatore 'Location'z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(10): error C2146: errore di sintassi: ')' mancante prima dell'identificatore 'Location'
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(11) : error C2143: errore di sintassi: ';' mancante prima di '{'z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(11): error C2143: errore di sintassi: ';' mancante prima di '{'
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(11) : error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(11): error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24) : error C2065: 'AWormGameMode': identificatore non dichiaratoz:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24): error C2065: 'AWormGameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24) : error C2065: 'GameMode': identificatore non dichiaratoz:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24): error C2065: 'GameMode': identificatore non dichiarato
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24) : error C2182: 'DebugMarkOccupiedBlocks': utilizzo non valido del tipo 'void'z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(24): error C2182: 'DebugMarkOccupiedBlocks': utilizzo non valido del tipo 'void'
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(25) : error C2448: 'DebugMarkOccupiedBlocks': l'inizializzatore di tipo funzione sembra essere una definizione di funzionez:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(25): error C2448: 'DebugMarkOccupiedBlocks': l'inizializzatore di
 tipo funzione sembra essere una definizione di funzione
CompilerResultsLog: Error: Z:\Asus\Documenti\Unreal Projects\Worm\Intermediate\Build\Win64\UE4Editor\Inc\Worm\WormGameMode.generated.h(14) : fatal error C1189: #error:  "WormGameMode.generated.h already included, missing '#pragma once' in WormGameMode.h"z:\asus\documenti\unreal projects\worm\intermediate\build\win64\ue4editor\inc\worm\WormGameMode.generated.
h(14): fatal error C1189: #error:  "WormGameMode.generated.h already included, missing '#pragma once' in WormGameMode.h"
CompilerResultsLog: Error: Z:\Asus\Documenti\Unreal Projects\Worm\Intermediate\Build\Win64\UE4Editor\Inc\Worm\WormGameMode.generated.h(14) : fatal error C1189: #error:  "WormGameMode.generated.h already included, missing '#pragma once' in WormGameMode.h"
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\intermediate\build\win64\ue4editor\inc\worm\WormGameMode.generated.h(14) : fatal error C1189: #error:  "WormGameMode.generated.h already included, missing '#pragma once' in WormGameMode.h"
CompilerResultsLog: ERROR: UBT ERROR: Failed to produce item: Z:\Asus\Documenti\Unreal Projects\Worm\Binaries\Win64\UE4Editor-Worm-9504.dll

Apologize, I didn't yet figured out how to set my Unreal Engine in English... :|

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

UP: I've changed into the following code and I am getting less errors:

#pragma once
#include "Engine/World.h"
#include "Classes/Kismet/KismetSystemLibrary.h"
#include "WormGameMode.h"
#include "WormHelperFunctions.generated.h"

//Given a position in the world, returns [row][column]ID inside the GridSlotsOccupiedMap grid.
//FVector(0.f,0.f,0.f) is the center inside the 2D Array, the 2DArray is expected to have and ODD number of elements.
UFUNCTION(BlueprintPure, Category = "Grid")
void WorldLocationToGridID(AWormGameMode* GameMode, FVector Location, int& Row, int& Column)
{
	int RowMiddleID = (GameMode->GridHeight / GameMode->GridBlockSize) / 2;
	int ColumnMiddleID = (GameMode->GridWidth / GameMode->GridBlockSize) / 2;
	int GridBlockSize = GameMode->GridBlockSize;
	//------------------------------------------

	Row = -Location.Z / GridBlockSize + RowMiddleID;
	Column = Location.X / GridBlockSize + ColumnMiddleID;
}


//Display red wireframe cubes at the occupied position in the grid marked inside GridSlotsOccupiedMap
UFUNCTION(BlueprintCallable, Category = "Debug")
void DebugMarkOccupiedBlocks(AWormGameMode* GameMode)
{
	TArray<TArrayBool> GridSlotsOccupiedMap = GameMode->GetGridSlotsOccupiedMap();
	int GridWidth = GameMode->GridWidth;
	int GridHeight = GameMode->GridHeight;
	int GridBlockSize = GameMode->GridBlockSize;
	int XMiddleID = (GridWidth / GridBlockSize) / 2;
	int YMiddleID = (GridHeight / GridBlockSize) / 2;
	//-----------------------------------------------

	for (int row = 0; row < GridSlotsOccupiedMap.Num(); row++)
	{

		for (int column = 0; column < GridSlotsOccupiedMap[0].BoolRow.Num(); column++)
		{
			float X = (-XMiddleID + column) * GridBlockSize;
			float Z = (YMiddleID - row) * GridBlockSize;
			FVector Center = FVector(X, 50.f, Z + GridBlockSize/2);

			if (GridSlotsOccupiedMap[row][column])
			{
				UE_LOG(LogTemp, Warning, TEXT("Block[%i][%i] is occupied"), row, column)
					UKismetSystemLibrary::DrawDebugBox(GetWorld(),
													   Center, FVector(5.7f, 5.7f, 5.7f),
													   FColor::Red, FRotator::ZeroRotator, 0.f, 0);
			}
		}
	}
}

I am also including this from the player class file generated by Unreal Editor, with #include "WormHelperFunctions.h"

Errors:

Quote

CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(5) : fatal error C1083: Non ? possibile aprire il file inclusione: 'WormHelperFunctions.generated.h': No such file or directory
CompilerResultsLog: Error: z:\asus\documenti\unreal projects\worm\source\worm\WormHelperFunctions.h(5) : fatal error C1083: Non ? possibile aprire il file inclusione: 'WormHelperFunctions.generated.h': No such file or directory
CompilerResultsLog: ERROR: UBT ERROR: Failed to produce item: Z:\Asus\Documenti\Unreal Projects\Worm\Binaries\Win64\UE4Editor-Worm-7380.dll

This seems to be the important point:

fatal error C1083:  'WormHelperFunctions.generated.h': No such file or directory

I don't know where I am fucking up, I am including it even though it doesn't exist, but isn't Unreal supposed to create it when I compile? What am I doing wrong? x_x

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

If a definition is in a header file it should be marked with the inline keyword. You should avoid putting definitions in a header in general however except when necessary (eg. templates). Try separating the definitions into a .cpp file and only make declarations in the header.

Edited by cmac

Share this post


Link to post
Share on other sites

I tried that, didn't solved the problem :/

Still missing a .generated.h, which I believe is needed, according to what I've readed online.

Maybe I should actually re-formulated my initial question, without starting from that assumption that this can work:

Is it possible from Visual Studio to create a .h and .cpp files that contains a collection of functions that I can then use inside all of my Blueprint inside the Blueprint Editor? 

Something like the base nodes you get inside a blueprint that are common/shared to all the blueprints.

Can I make this same thing but with functions made by me?

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

Solved it! :D

The solution is to created this class as well inside the engine and inherit from UBlueprintFunctionLibrary, and let the engine sort it out xD

The code I've below works (the second function at least, the first one crashes for different reason, because I'm somehow fucking up with casts...)

But keep reading below, I have a new question xD

WormHelperFunctions.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Classes/Kismet/KismetSystemLibrary.h"
#include "WormGameMode.h"
#include "WormHelperFunctions.generated.h"

/**
 *
 */
UCLASS()
class WORM_API UWormHelperFunctions : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

		//Given a position in the world, returns [row][column]ID inside the GridSlotsOccupiedMap grid.
		//FVector(0.f,0.f,0.f) is the center inside the 2D Array, the 2DArray is expected to have and ODD number of elements.
		UFUNCTION(BlueprintPure, BlueprintCallable, Category = "Grid", meta = (WorldContext = "WorldContextObject"))
		static void WorldLocationToGridID(UObject* WorldContextObject, FVector Location, int& Row, int& Column);

	
	//Display red wireframe cubes at the occupied position in the grid marked inside GridSlotsOccupiedMap
	UFUNCTION(BlueprintCallable, Category = "Debug", meta = (WorldContext = "WorldContextObject"))
		static void DebugMarkOccupiedBlocks(AWormGameMode* GameMode, UObject* WorldContextObject);
		
};

WormHelper.Functions.cpp

// Fill out your copyright notice in the Description page of Project Settings.

#include "WormHelperFunctions.h"
#include "Engine/World.h"

void UWormHelperFunctions::WorldLocationToGridID(UObject* WorldContextObject, FVector Location, int& Row, int& Column)
{
	//UWorld* World = (UWorld*)WorldContextObject;
	//AWormGameMode* GameMode = static_cast<AWormGameMode*>(World->GetAuthGameMode());
	//int RowMiddleID = (GameMode->GridHeight / GameMode->GridBlockSize) / 2;
	//int ColumnMiddleID = (GameMode->GridWidth / GameMode->GridBlockSize) / 2;
	//int GridBlockSize = GameMode->GridBlockSize;
	//------------------------------------------

	//Row = -Location.Z / GridBlockSize + RowMiddleID;
	//Column = Location.X / GridBlockSize + ColumnMiddleID;
}



void UWormHelperFunctions::DebugMarkOccupiedBlocks(AWormGameMode* GameMode, UObject* WorldContextObject)
{
	TArray<TArrayBool> GridSlotsOccupiedMap = GameMode->GetGridSlotsOccupiedMap();
	int GridWidth = GameMode->GridWidth;
	int GridHeight = GameMode->GridHeight;
	int GridBlockSize = GameMode->GridBlockSize;
	int XMiddleID = (GridWidth / GridBlockSize) / 2;
	int YMiddleID = (GridHeight / GridBlockSize) / 2;
	//-----------------------------------------------

	for (int row = 0; row < GridSlotsOccupiedMap.Num(); row++)
	{

		for (int column = 0; column < GridSlotsOccupiedMap[0].BoolRow.Num(); column++)
		{
			float X = (-XMiddleID + column) * GridBlockSize;
			float Z = (YMiddleID - row) * GridBlockSize;
			FVector Center = FVector(X, 50.f, Z + GridBlockSize / 2);

			if (GridSlotsOccupiedMap[row][column])
			{
				UE_LOG(LogTemp, Warning, TEXT("Block[%i][%i] is occupied"), row, column)
					UKismetSystemLibrary::DrawDebugBox(WorldContextObject->GetWorld(),
													   Center, FVector(5.7f, 5.7f, 5.7f),
													   FColor::Red, FRotator::ZeroRotator, 0.f, 0);
			}
		}
	}
}

 

Ok, so now for the final question, focusing on the first function that crash everything:

void UWormHelperFunctions::WorldLocationToGridID(UObject* WorldContextObject, FVector Location, int& Row, int& Column)
{
	//UWorld* World = (UWorld*)WorldContextObject;
	//AWormGameMode* GameMode = static_cast<AWormGameMode*>(World->GetAuthGameMode());
	//int RowMiddleID = (GameMode->GridHeight / GameMode->GridBlockSize) / 2;
	//int ColumnMiddleID = (GameMode->GridWidth / GameMode->GridBlockSize) / 2;
	//int GridBlockSize = GameMode->GridBlockSize;
	//------------------------------------------

	//Row = -Location.Z / GridBlockSize + RowMiddleID;
	//Column = Location.X / GridBlockSize + ColumnMiddleID;
}

the first commented line is good (since I did a test using it in the second function instead of WorldContextObject->GetWorld() and it worked.

But the variable in the second commented line, if I try to access a public variable of it (like GridHeight in the line below it), the engine immediately crash. I haven't the slightest idea of why... Any guess of what is happening? :/

Btw, in the second line a AGameModeBase* is returned, and I am casting it to AWormGameMode* since my game mode class inherit from it.

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

you mean like this?

void UWormHelperFunctions::WorldLocationToGridID(UObject* WorldContextObject, FVector Location, int& Row, int& Column)
{
	UWorld* World = (UWorld*)WorldContextObject;
	AWormGameMode* GameMode = static_cast<AWormGameMode*>(World->GetAuthGameMode());
	if (GameMode->IsValidLowLevel())
	{
		int RowMiddleID = (GameMode->GridHeight / GameMode->GridBlockSize) / 2;
		int ColumnMiddleID = (GameMode->GridWidth / GameMode->GridBlockSize) / 2;
		int GridBlockSize = GameMode->GridBlockSize;
		------------------------------------------

		Row = -Location.Z / GridBlockSize + RowMiddleID;
		Column = Location.X / GridBlockSize + ColumnMiddleID;
	}
}

IsValidLowLevel

I've also tried the more classic "GameMode != nullptr", but still crashing :P

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

Different problems belong in different threads!

Don't use static_cast or C-style casts for Unreal actors. There is a Cast<> function which is more like dynamic_cast, and which will give you a nullptr if the object is of an incompatible type.

And for some reason, after being advised to check for a null pointer, your new code does not check for a null pointer.

And when something is crashing, use the debugger, find out EXACTLY where it crashes. There's no reason why you can't pinpoint the exact line.

Share this post


Link to post
Share on other sites
18 minutes ago, Kylotan said:

Different problems belong in different threads!

My bad, I'll make a new one, sorry :P  

Thanks for the cast suggestion, I fixed that as well (though still crashing)

Quote

And for some reason, after being advised to check for a null pointer, your new code does not check for a null pointer.

Not sure what do you mean, the line 

if (GameMode->IsValidLowLevel())

should be taking care of that

Quote

And when something is crashing, use the debugger, find out EXACTLY where it crashes. There's no reason why you can't pinpoint the exact line.

I think I need more instructions on this point if possible, I had tried placing a break point in VS and it doesn't "talk" to UE apparently, I also tried with a break point into the blueprint and stepping trough the code but it crashes suddenly without explanation... :/

Anyway I'll make a new topic then :P

Edited by MarcusAseth

Share this post


Link to post
Share on other sites

if ( GameMode->something )   is not a check for a NULL pointer. A check for a NULL pointer is exactly checking if a pointer is NULL:


 

if ( GameMode == NULL )
{
  // do NOT access GameMode
}

 

God, this message editor is driving me nuts!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Forum Statistics

    • Total Topics
      628642
    • Total Posts
      2983992
  • Similar Content

    • By Anderfell
      **[ROYALTY]**
       
      Hello my name is Brandon and I am currently one of the co owners of the team Digital Forged Studios.
       
      We are currently seeking two new members for our team, before applying you must be aware that we are seeking people that are 100% committed to this project, you must be reachable within the day, replying to questions or responding to our messages and in general be actively online, otherwise I ask nicely that you do not apply.
       
      The persons we are seeking are an experienced Programmer with knowledge  in c++, c#, and or unreal script, the c++ and familiarity with unreal is the main thing were seeking, other teams we are currently looking for are 3D artists to work on Humanoid models Props and more, were are also seeking other team members such as Generalists that understands the Unreal Engine, Animators for Human, Non Human and Objects were keeping the team small and having whats needed so feel free to apply.
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      [SEEKING CURRENT POSITIONS]
       
      [Animators] x 2 [ You will be doing Human, Non Human, and Objects like Machines and Doors, Environment assets. ]
      [3D Artist] x 2 [ You will be focusing on Humans, Objects, and Environment modeling would also like skills in texturing. ]
      [Generalist] x 1 [ We would like someone that has good knowledge of Unreal Engine that can set up anything we need in Engine. ]
      [Writer] x 1 [ We would need someone that can work with me on game documents, organisation of documents story arcs, character development, dialogue creation, text editing and other text related jobs. ]
      [PROGRAMMER] "As above"
       
      The project is Royalties and when any fund raising is made you will also receive some funding based off that, this is divided depending on amount of work done as an example per asset made toward the game, there are no contracts at this stage and everything known is in documents at the moment.
       
      The game is a Action RPG with online elements this will be an ongoing project, we are running ssh servers, and Prefroce. We have a small staff of experienced people.
       
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      We do have some artwork to show of the world a little and what it's about, If you are interested in joining the project please contact us at:
       
      Anderfell info:
      Anderfell#5123 on Discord
      nevarra@hotmail.com email
       
      Shadefix info:
      Shadefix#0570 on Discord
      androes.matthijssens@gmail.com email
      We are active on Discord and maybe take a day or two to reply to emails on our website as we receive a few a daily we need to sort through thanks. 
      https://digitalforgedstudios.com/
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Comic Panel
      http://imgur.com/a/905pd
       
      Artwork
      http://imgur.com/a/0JchV
      Models
      http://imgur.com/a/jdhWu
       
      Game Document
      https://docs.google.com/document/d/1bNlP-qwR15BLGG66hDUcewqlWIPP4flnHxRwxfhNmTE/edit?usp=sharing
       
      Regards Brandon
      Digital Forged Game Development Team.
       
      Some Progress
       





       
       





    • By i3DTutorials
       

       
      Game School Online™ Announces Winter Enrollment Open Through December
      Los Angeles, CA - December 2017
       
      Free Winter Term Enrollment!
      Free Winter Enrollment:
      Game School Online™, the first and only free online game development school of its kind, has opened enrollment for the winter term, which begins in January of 2018. GSO™ currently offers curricula in environment art and lighting for games, focusing specifically on Unreal Engine 4. GSO™ will be adding two new courses for the winter term, “Advanced Lighting Concepts with Unreal Engine 4” and “Advanced Hard Surface Modeling.”

       
      Free Workshop!

       
      December Free Workshop:
      In addition to winter enrollment, GSO™ will have a free online workshop, “Animating For Games and Movies”, with Veara Suon, Senior Animator at Double Negative. Veara has worked in the AAA games industry, working on franchises like Destiny and Bioshock. Veara also works in the film industry, having worked for famed studios like Weta, ILM, and Sony, contributing to films like Pacific Rim 2, Spiderman, and Avengers. In this month’s free GSO™ workshop, Veara will be discussing topics such as:
      Sharing techniques on how he animates for games and film
      Advice on how students can get a job in games or film
      Advice on how working professionals can switch from games to film, and vice versa
      Job relocation
      The workshop will last for an hour, with allocated time for Q & A from the audience. The workshop will take place on December 14 at 8pm PST. As usual, our monthly workshops are absolutely free and anyone is welcomed to join us. To RSVP, please visit our Facebook page here: https://www.facebook.com/events/139461393377301/?active_tab=about

       
      Scholars Available For Mentoring!
      Scholar Lineup:
      Scholars are our mentors, working industry professionals currently working on your favorite games and franchises- here to help you learn to be a professional game dev, with one on one live private sessions. Our current lineup of scholars includes:
       
      Brian Yam - Director of Visual Development @ Section Studios
      https://bdyammer.artstation.com/
      https://www.linkedin.com/in/yambrian/
       
      Olaf Piesche - Senior Engineer @ Epic Games
      https://www.linkedin.com/in/olaf-piesche-0938292/
       
      Kevin DeBolt - World Artist @ 343 Industries
      http://kevindebolt.com/index.html
      https://www.linkedin.com/in/kevin-debolt-52058844/
       
      Rosie Katz - Senior Game Designer @ EA, Visceral, Sledgehammer Games
      http://www.rosiewrede.com/index.php?nav_bar=level_design
      https://www.linkedin.com/in/rosiewrede/
       
      Leo Gonzalez - Senior Artist @ Certain Affinity
      https://leog.artstation.com/
      https://www.linkedin.com/in/leo-g/
       
      Brandon Pham - Lead Environment Artist
      https://brandonpham.artstation.com/
      https://www.linkedin.com/in/brandon-pham-a490497/

       
      We believe that education should be free for everyone! Come join us at Game School Online™ and see what the future of game development education looks like today! For more information about Game School Online™, available courses, scholars, and events, please visit http://gameschoolonline.com/


       
      Facebook: https://www.facebook.com/gameschoolonline/
      Twitter: @GSOscholar
      Discord: https://discordapp.com/invite/BzU5Fq2
      Patreon: https://www.patreon.com/gameschoolonline


       
      About Game School Online™ (GSO™)
      Game School Online™ is the first ever, completely free game development training program. GSO™ was founded by veteran developers working in the AAA games and entertainment industries. Featuring courses authored by working industry professionals, students are able to learn production techniques and workflows used to ship some of the biggest IPs and AAA franchises. Industry pros known as “scholars”, work with students providing private live sessions to help you become “industry” ready. All courses are available for free, no trials or demos- it’s completely free for anyone that wants to learn how to become a skilled game developer. For more information, please visit our website: http://gameschoolonline.com/
      Game School Online™ and GSO™ are registered trademarks Game School Online, LLC. All other brand names, product names or trademarks belong to their respective holders.
       
      Contact
      Game School Online, LLC.
      info@gameschoolonline.com

      View full story
    • By i3DTutorials
       

       
      Game School Online™ Announces Winter Enrollment Open Through December
      Los Angeles, CA - December 2017
       
      Free Winter Term Enrollment!
      Free Winter Enrollment:
      Game School Online™, the first and only free online game development school of its kind, has opened enrollment for the winter term, which begins in January of 2018. GSO™ currently offers curricula in environment art and lighting for games, focusing specifically on Unreal Engine 4. GSO™ will be adding two new courses for the winter term, “Advanced Lighting Concepts with Unreal Engine 4” and “Advanced Hard Surface Modeling.”

       
      Free Workshop!

       
      December Free Workshop:
      In addition to winter enrollment, GSO™ will have a free online workshop, “Animating For Games and Movies”, with Veara Suon, Senior Animator at Double Negative. Veara has worked in the AAA games industry, working on franchises like Destiny and Bioshock. Veara also works in the film industry, having worked for famed studios like Weta, ILM, and Sony, contributing to films like Pacific Rim 2, Spiderman, and Avengers. In this month’s free GSO™ workshop, Veara will be discussing topics such as:
      Sharing techniques on how he animates for games and film
      Advice on how students can get a job in games or film
      Advice on how working professionals can switch from games to film, and vice versa
      Job relocation
      The workshop will last for an hour, with allocated time for Q & A from the audience. The workshop will take place on December 14 at 8pm PST. As usual, our monthly workshops are absolutely free and anyone is welcomed to join us. To RSVP, please visit our Facebook page here: https://www.facebook.com/events/139461393377301/?active_tab=about

       
      Scholars Available For Mentoring!
      Scholar Lineup:
      Scholars are our mentors, working industry professionals currently working on your favorite games and franchises- here to help you learn to be a professional game dev, with one on one live private sessions. Our current lineup of scholars includes:
       
      Brian Yam - Director of Visual Development @ Section Studios
      https://bdyammer.artstation.com/
      https://www.linkedin.com/in/yambrian/
       
      Olaf Piesche - Senior Engineer @ Epic Games
      https://www.linkedin.com/in/olaf-piesche-0938292/
       
      Kevin DeBolt - World Artist @ 343 Industries
      http://kevindebolt.com/index.html
      https://www.linkedin.com/in/kevin-debolt-52058844/
       
      Rosie Katz - Senior Game Designer @ EA, Visceral, Sledgehammer Games
      http://www.rosiewrede.com/index.php?nav_bar=level_design
      https://www.linkedin.com/in/rosiewrede/
       
      Leo Gonzalez - Senior Artist @ Certain Affinity
      https://leog.artstation.com/
      https://www.linkedin.com/in/leo-g/
       
      Brandon Pham - Lead Environment Artist
      https://brandonpham.artstation.com/
      https://www.linkedin.com/in/brandon-pham-a490497/

       
      We believe that education should be free for everyone! Come join us at Game School Online™ and see what the future of game development education looks like today! For more information about Game School Online™, available courses, scholars, and events, please visit http://gameschoolonline.com/


       
      Facebook: https://www.facebook.com/gameschoolonline/
      Twitter: @GSOscholar
      Discord: https://discordapp.com/invite/BzU5Fq2
      Patreon: https://www.patreon.com/gameschoolonline


       
      About Game School Online™ (GSO™)
      Game School Online™ is the first ever, completely free game development training program. GSO™ was founded by veteran developers working in the AAA games and entertainment industries. Featuring courses authored by working industry professionals, students are able to learn production techniques and workflows used to ship some of the biggest IPs and AAA franchises. Industry pros known as “scholars”, work with students providing private live sessions to help you become “industry” ready. All courses are available for free, no trials or demos- it’s completely free for anyone that wants to learn how to become a skilled game developer. For more information, please visit our website: http://gameschoolonline.com/
      Game School Online™ and GSO™ are registered trademarks Game School Online, LLC. All other brand names, product names or trademarks belong to their respective holders.
       
      Contact
      Game School Online, LLC.
      info@gameschoolonline.com
    • By Ben3d
      My new contribution. I hope you will like it. Details here.
    • By Erik Nivala
      Hey everyone,
      i have been learning to make games using C# and Unity for 2+ years now and recently added Unreal and C++ to the mix. I am looking for a Team to work on a small project. Mainly i am looking to better my coding so it would be nice if the team already had a programmer who could teach me some things. 
      If you want to see some of my previous work or have any more Information feel free to contact me.
      Discord: Lumina | Erik#5613
      Have a nice day.
  • Popular Now