The lab machines have the latest version of Windows 10.
Please note that
c:/ drive is a very fast SSD hard drive with all the software you need installed. Please keep all data that you need for your projects and classes on the second
We do not want to run out of room on
c:/ as the software takes up a lot of space.
Remember to login with your LSU Credentials, your CCT password does not work. Login using the regular microsoft login and your user name WITHOUT @lsu.edu.\n\nPlease remember to back up and remove all software from All the internal drives as they will get wiped for complete re-imaging when we update all the software. Box is a good place to store all of your files when you are on break.
All software in the lab except for Adobe products can be installed and accessed off campus. For software that requires a license server you will need to be on campus within the intranet or access it outside of campus through Global Protect VPN.
A full description of the process is available in the links below. For Adobe products consider purchasing a student license for the duration of the studies if you find that you need it outside of the lab.
All software can be installed on personal computers except for Adobe Creative Cloud. Adobe applications are ONLY available in the lab.
Installation information for either the PC or Mac version of all other software can be found at the dmae github link. Please note that this is a private GitHub repository so you have to be logged in for the link to work. It will look like a bad link and you will get a 404 website not found error.
You also need to be a team member to gain access. If you are logged in and the link still doesn't work, email firstname.lastname@example.org and include your GitHub username.
To store large files it is best to use Box at LSU. You can access it from the lab and at home and allows for offline or only online storage. If you cannot log into LSU Box with your LSU credentials, get a free account online at box.com.
If you want to use box without the browser you can download their app for windows or mac at on box.com.
We have access to Pluralsite and Gnomon for their amazing tutorials. Login information can be found at dmae github link.
We also have access to professional music and sound effects from alibi which includes multi-tracks! This can also be found at dmae github link.
If you don't have access to this link then request permission by emailing Marc Aubanel at email@example.com.\n
Some kind person is keeping up a Jobs & Intership with a tab for Openings, Internships, Studios, Websites and Schoolss. This is an excellent starting point.
There are also occasional posts in DMAE News for positions so check back often.
Only discuss public matters. There is no such thing as privacy in an email.
Don't 'email angry'. Email is not an effective forum for venting and is much better at summarizing. If an issue has arisen that causes anger, either meet in person or talk on the phone.
Respond in a timely fashion. If you are not able to respond right away, please respond with a receipt and a timeframe of when you will respond. Not responding witin 24 - 48 hours is not acceptable.
Refrain from sending one-liners. You can put No Reply Necessary at the top of an email if you don't expect a response.
Avoid using shortcuts, emoticons, jargon or slang.
Keep it professional. Imagine your grandmother is being CC'd on the email.
Be clear in your subject line.
Don't email more than one address per receipient. If you don't know which they prefer, then ask.
Keep it short and get to the point.
Remember, the email you write is a reflection of you.
The DMAE lab has a capacity of 11 people.
Make sure faculty television is turned off if you are the last person to leave the lab.
Make sure the door is locked if you are the last person to leave the lab. The door is locked by the switch on the latch assembly on the side of the door.
Please try and eat in the cafeteria area just outside the second floor staircase. If you absolutely have to eat in the lab because class is starting please dispose of your food garbage in the cafeteria area. We don't want the lab to smell like food or attract critters.
Log off of your computer and make sure that it goes into sleep mode. Please do not disable the sleep functions of the computer.
GitLab is hosted on LSU servers and uses Git at its core. The advantage of GitLab is that we can configure the repository in any way we like. We can also control size limits for files that we cannot control with GitHub. But, we do have to maintain it ourselves and there may be fewer gui tools to use with it (I have had varying success using GitHub Desktop in the past). Our implementation is set to go with LFS.
GitHub uses Git at its core and is effectively the same as GitLab. It has its own implementation of lots of tool support and documentation. We do get free LFS support if you launch the project through our GitHub Classroom. Do not start a new project with your own account as there is a limit to where they will charge for further usage (for a 3-D video game project this is suprisingly quick). There are some total project and file maximum sizes that we cannot control. If your project is north of 6 gigs I would consider using GitLab.
When making a project using large files like 3-D textures, 3-d models, audio samples, videos, large photos or any other large assets it is necessary to use Git LFS. LFS stands for Large File System.
Why do we need Git LFS? In the default use of Git the entire history is stored locally in the
.git folder in your main project folder. This makes switching branches really fast as it doesn't need to go to the server to download different versions of files. The problem comes for large files.
Lets say we have a model we are working on and its textures are uncompressed 4K
.png files. They total to
100 mb each. Every time you upload a new version of them they are save to your project history in the
.git folder. So lets say you have iterated on these 20 times during development. Well now we are talking about
2 gigs of total files that are stored locally. The slows down the entire team's push and pulls and makes cloning new projects arduously long.
LFS allows you to indicate which files we want to use the large file system with and those files only store the latest version locally and the history is stored on the server and you can still recover by downloading them at any time.
git lfs prune occasionally to remove old stale files from your local repository. Git LFS does not do its own garbage collection.
Ensure that the entire team has Git LFS installed. You will get unexpected behavior if you do not.
Use text based alternative to binaries where possible. Maya allows you to save as ascii or binary. For version control ascii text is always preferable as the system will only store the two text differences (say one point in a million polygon model). If you store a binary the entire file needs to be stored as you cannot save the difference between two binaries.
Come up with a folder stucture and naming convention and try not to change the name during the lifetime of the project of the file. Do not manually number files like
image-01.png and then the next time you update it you call it
image-02.png. This will defeat the purpose of using git (it stores all versions of the files) and will render the LFS meaningless.
You can pinpoint which filetypes you want to include or just target the entire Content folder.
.gitignore file lies in your root folder in the same directory as your
.uproject file. If you do not locate it in this folder it will not point to the correct directories.
I recommend you use the ue4 .gitgonre hosted on GitHub. If you use the one generated by the UE4 Engine it is missing the build data for maps (which are generated and VERY LARGE)
*_BuiltData.uasset files. It is important that it includes all files that are built locally for your operating system and GPU. This indicates all the files that will not go to version control that get built locally dynamically anytime the file is missing. Without a properly configured
.gitignore your project size will grow out of control within a few commits and pushes.
Working files used on the project such as
.maya, that are used to create objects but don't get ingested into the game engine - as you would export from that file a
.fbx. These should not be stored in Git even using LFS as it will balloon project size and collaboration isn't always necessary. For safety store them on Box so that you have a backup in case your hard drive corrupts or the data is locally inaccessible.
CCT has a private GIT repository. I suggest you get comfortable using command line with GIT. The advantages far outweigh the disadvantages and it is worth learning. You do not need to use the Global Protect VPN to access Git off campus and can access it from anywhere with an internet connection with a valid SSH key. On the mac you can use Terminal and on the PC you need to download *Git and make sure you install Git Bash with the standard install.
Once you have a username and password login into GitLab.
All traffic is governed using an SSH key. You need to generate an SSH key that that gets stored in a hidden folder on your hard drive. It will create a file in the root of your main user directory called
.ssh. Any file that starts with a dot is hidden by default so I suggest making sure you turn on see hidden files and folders. This only works on a single computer and the key needs to be shared or a seperate key needs to be generated on each compuyter you use.
On a Mac, go to Finder, choose Utilities from the Go menu. Find the Terminal application in the Utilities window. Double-click the Terminal application. Enter the following command:\n
\nssh-keygen -t rsa\n. Press the ENTER key to accept the default location and name. Type in a passphrase, then enter a second time to confirm.
On a PC, go to Git Bash (go to git and install git bash) or on a mac open up Terminal and enter:
ssh-keygen -t rsa. Press the Enter or Return key to accept the default location and name.
id_rsa.pubkey into https://git.cct.lsu.edu/-/profile/keys the Key box. It should look something like this:
If you are tired of entering your SSH password everytime in Git Bash or GitHub if you are using ssh every time you pull or push the repository, you can set it up so it remembers the password until you log off or reboot.
Open Git Bash and go to the directory with the repository you want to use. Type
Then press enter key.
On a mac just open up Terminal. You do not need to enter the above command.
The last step is to type:
Press Enter then enter your ssh password. Now you should not be prompted for your password until you log out or reboot your computer.
If you are working in a team that is using both mac and PC's, you will get a lot of git erros regarding line endings. PC's and mac's use different symbols to represent a new line.
Since Unix/Mac OSX and Windows have different line endings, it is good to make sure that the database doesn't update every time a different os is used. Git defaults to this being an unresolved conflict. For more detailed information go to github help.
You need to change the core.autocrlf = true on PC and core.autocrlf = input on unix/mac.
On Windows you need to enter:
git config --global core.autocrlf true
git config --global core.autocrlf input
There are two ways of starting a new project on your computer. You will either clone an existing repository or create one from scratch.
git clone firstname.lastname@example.org:maubanel/sample.lsu.edu.git
If you already have a folder for it you can create the project inside an empty folder of an eexisting directory using:
git clone email@example.com:maubanel/sample.lsu.edu.git .
Navigate in Terminal (mac) or Git Bash (pc) to the folder you want to hold the repository (the root folder). Type:
Stage all active files (including the above
git add .
Commit these stated files by typing:
git -m "initial commit".
Create a new branch:
git branch -M main.
Create a new project on a git repository. Copy and paste the directory.
Attach the local database to the above remote:
git remote add origin <github_repo_url>.git
git push -u origin main.
Now you are all set to start developing.
Just note that
git pull is a shortcut for
git pull origin main and
git push is a shortcut for
git push origin main. The default name for
origin and is used that way in most projects. The default main branch is typically named
The first thing we should always do is get the latest information from the server to make sure that nothing that anyone else has worked on has affected our work:
git branch -b <working branch name> When working in teams no one should be developing on the main branch but instead creating working branch names. When you are complete you create a merge request on the git website. The -b switches to the branch (the equivalent of
git branch <branch name> & then
git checkout <branch name>.
git pull <remote> <branch> (shortcut for
git fetch <remote> and
git add <filename> or
git add . (
. is wildcard for all unstaged files)
git commit -m "add message here of what was commited. Be specific." (Detailed message of small atomic change)
git push <remote> <branch> Updates the remote and branch on server
git push -u <remote> <branch> Updates the remote and branch on server and sets this branch as the default upstream branch so future pushes only requires
Go to the repository website and create a merge request to merge your work back to the main branch
git branch to view the current branch you are on
git branch -r to view all branchs on server
git branch --all list all branches locally and on remote server
git remote show <remote> shows what branches your pull and push without remote and branch will default to
git branch -m <new branch name>\n(if on the branch you want to rename)
git branch -m <old branch name> <new branch name>_(if you are on a different branch)
git branch -d <branch name> (only deletes branch if there is no work to stage, commit or push)
git branch -D <branch name> (Deletes branch and throws away all the work)
git push <remote> --delete <branch> Deletes branch on server
git fetch <remote>(< remote > defaults to origin)
git checkout <branch name>\n
git merge <branch name> --no-ff_(No fast-forward, preserves complete history)
If it is a text file manually resolve the merge conflicts in a text editor
For binaries where you have to select the file that is on the server and replace the file on your machine
git checkout --theirs <filename> _(Take the server version (deletes local) of the file in the conflict if you cannot resolve with say a binary file for example)
For binaries where you select the file that is on your local machine and replaces the one on the server:
git checkout --ours <filename> (Take the local version (replaces server) of the file in the conflict if you cannot resolve with say a binary file for example)
git rm <filename> to delete file both on server and locally
git checkout <filename> to bring back deleted file from werver
git add <filename> to add file back
git diff <filename>\n _(if no filename all changes will be shown that are not staged)
git diff --patience <filename> (--patience provides more readable diff but takes longer to render)
git diff --staged (checks the differences in the staged area)
git commit --amend (ammends new staged files and creates new commit message)
\ngit commit --amend --no-edit (amends staged files and uses same message as existing commit)
Sometimes not all work is worth saving. You often try something out to decide that you do not want to pursue this task anymore.\nFor a single file or two you can just checkout from the previous commit. This is not saved or tracked so use sparingly. You will lose this work though and it won't be tracked. So say you want to revert to your last commit on
file1.txt you would type:
git checkout file1.txt . To do this accross multiple files you can use
git checkout ..
git reset --hard to remove all work in commit locally
git reset HEAD -- . _takes all files that were staged with
git add and undoes the staging
git reset --soft HEAD~1
If you want to clean up stray files that you don't want to add you can use.
git clean -n to preview changes
git clean -f to remove stray files
git ls-files | xargs ls -l | sort -nrk5 | head -n 10 lists 10 larges files
Delete all files that are too large:
git filter-branch --force --index-filter
git rm --cached --ignore-unmatch path/to/filename.jpg --prune-empty --tag-name-filter cat -- --all
Do this for each file. The force a push:
git push --force --all.
If you make changes to .gitignore when the files have already pushed to the server. Update the
.gitignore file and add and commit it to your project.
git rm -r --cached .
git add .
\ngit commit -m 'Fixed untracked files in .gitignore'
git tag <version/name of tag> ligth weight tag
git tag -a \"VERSION#/NAMEOFTAG\" -m \"ENTER MESSAGE\" _annotated tag_
git push --tags Push tag to remote repository
Sometimes when git merges, it ends up sending you to the VI editor to record a message. If so the commands are:
i (to go into insert mode to edit text)
esc (to leave insert mode, so you can save and exit)\
:x _(to save and exit)
:q! _(to exit and ignore changes)
Alt + F8 (pc) or
Read the Steps to Graduation to find out the list of items required from you. The deadline for the Master's Application For Degree is January 28th. The deadline for approval of the final exam is April 29th, 2021. You will need to put together a three person panel for the final exam. You can pick any of the faculty that you have worked with either directly or indirectly (as long as they know your work well). Typically the chair of the committee is Derick Ostrenko (as I am not able to chair the committee but can be one of the other two members). Please email firstname.lastname@example.org your committee member choices.
Download the PDF from Enrolled Student Forms. Fill in the first page of this form. Included below is a template for what should appear in each section. Please make sure you use your lsu email address. Please submit this to the grad school before the deadline (email is indicated on the form).
The second page (if there is one), can be left blank.