A simple group game project for the Turku University course Introduction to Game Development Tools
Tämä repo itsessään ei riitä suoraksi Unity-projektiksi, joten sen sisältö sellaisenaan ei toimi Unityssä suoraan.
- Asenna Unity 2022.3.11f1
- Luo uusi tyhjä 2D Core Unity-projekti ja seuraa näitä nopeita ohjeita
- Esivalmistele Git LFS sekä Git ja Unity yhteiskäyttö
- Seuraa askelia tässä artikkelissa otsikkoon Making your first commit asti (sen jälkeen tulee vain Git-ohjeita). Älä suorita committeja vielä.
- Näiden ohjeiden mukaisesti (osio Conflicts that canbe resolved automatically by Unity’s Smart Merge Tool):
- Avaa projektikansiossa .git (piilotetut kansiot pitää asettaa näkyviksi ylhäältä "Näytä -> Piilotetut kohteet"), avaa tiedosto
config
tekstieditorilla ja lisää loppuun seuraava pätkä:Jos kansiota .git ei löydy edes piilotettujen kansioiden näyttämisen jälkeen, aja Git Bashillä projektikansiossa[merge] tool = unityyamlmerge [mergetool "unityyamlmerge"] trustExitCode = false keepTemporaries = true keepBackup = false path = 'C:/Program Files/Unity/Hub/Editor/2022.3.11f1/Editor/Data/Tools/UnityYAMLMerge.exe' cmd = 'C:/Program Files/Unity/Hub/Editor/2022.3.11f1/Editor/Data/Tools/UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
git init
. - Korvaa tarvittaessa polut
path = ...
jacmd = ...
omilla poluilla käyttäen '/' tai '\\' (ei '\'). Unityn oletuksilla polku on tuoC:/Program Files/Unity/Hub/Editor/2022.3.11f1/Editor/Data/Tools/UnityYAMLMerge.exe
(voit kokeilla, löytyykö tuo itseltä). Muutoin oma polku löytyy avaamalla Unity Hub -> Installs, näkyvästä listasta 2022.3.11f1 vierestä asetuskuvake ja "Show in explorer", mistä navigoiden vieläData/Tools
, josta löytyyUnityYAMLMerge.exe
. - Jos käytät GitHub Desktop:a, niin varmista, että repositoryn asetuksissa käytössä on paikallinen git config, ei globaali.
- Avaa projektikansiossa .git (piilotetut kansiot pitää asettaa näkyviksi ylhäältä "Näytä -> Piilotetut kohteet"), avaa tiedosto
- Tuo GitHub-repon tiedostot omaan projektiisi
- Yksinkertaisin tapa on ladata repon zip-tiedosto suoraan GitHubista vihreästä Code-napista ja korvata oman paikallisen projektin sisältö zipin sisällöllä ylikirjoittaen.
- Vaihtoehtoisesti voi Gitillä kloonata repon omalle koneelle ensin tyhjään kansioon ja siirtää sieltä paikallisen Unity-projektin päälle, sallien korvaamisen.
- Kolmas vaihtoehto on määrittää tämä GitHub
origin remote
:ksi paikallisen Unity-projektinsa repoon ja sen kautta hakea ja tuoda muutokset.
- Muutoksia voi sitten helposti seurata ja hakea mm. useimpien IDE:n tai GitHub Desktopin kautta. Varmista aina, että muokkaat oikeaa sceneä, joka todennäköisesti on koko projektin ajan sama SampleScene.
Brancheja vaihtaessa voi Unityssä joutua avaamaan käyttämänsä scenen uudelleen. Jos jokin näyttää oudolta/rikkinäiseltä, kokeile Assets/Scene
kautta avata scene uudestaan.
Jos käytät muita IDE:tä kuin Visual Studio Code, käythän lisäämässä siihen generoidut rivit .gitignore-tiedostoon täältä.
Siltä varalta, että paketteja joutuu itse asentamaan ennen projektin tuontia:
- 2D (package): com.unity.feature.2d
- Cinemachine: com.unity.cinemachine
- Input System: com.unity.inputsystem
- JetBrains Rider Editor: com.unity.ide.rider
- Recorder: com.unity.recorder
- Test Framework: com.unity.test-framework
- TextMeshPro: com.unity.textmeshpro
- Timeline: com.unity.timeline
- Unity UI: com.unity.ugui
- Universal RP: com.unity.render-pipelines.universal
- Version Control: com.unity.collab-proxy
- Visual Scripting: com.unity.visualscripting
- Visual Studio Editor: com.unity.ide.visualstudio
Käytössä on sääntö, joka ehkäisee suoraan masteriin pushaamista. Tämä siksi, ettei muiden masteriin tekemä työ katoa Unityn erikoisten mergesekoilujen takia, jos yhdistettävä branch on masteria joltain osin jäljessä (valmisteluissa tehtävä Unity Smart Mergen käyttöönotto toivottavasti ehkäisee tätä). Tee siis muutoksesi aina omalle teemoitetulle branchille. Valmiista muutoksista (branchista) voi sitten luoda pull requestin, jossa pyytää mergeä masteriin. Tämä pull request vaatii yhden hyväksynnän joltain muulta kuin requestin luojalta. Tarkistajan tulee yrittää tulkita muutoksista, ettei mitään muutoksiin liittymätöntä poisteta.
Unityn Smart Mergen hyödyntäminen aiempien projektin kopiointiohjeiden vaiheen 4 jälkeen on yksinkertaista.
- Aloitetaan merge normaalisti menemällä kohdebranchille, johon aiotaan toinen yhdistää (yleensä
git checkout master
). - Konfliktien löytyessä Git toimii niin, että se jättää tiedostot ns. konfliktinratkaisumuotoon, jossa tiedostojen molemmat versiot näkyvät otsikoituina tiedoston sisällä, jolloin merge jää tietynlaiseen välitilaan, josta voidaan haluttaessa peruuttaa pois lähtötilaan komennolla
git merge --abort
. - Konfliktien löydyttyä annetaan komento
git mergetool
. Tämä kutsuu config:n määritelmässä[merge]
määritettyä työkalua[mergetool "[NIMI]"]
, tässä tapauksessaunityyamlmerge
eli tuttavallisemmin Unity Smart Merge. - Työkalu tekee taikansa ja ilmoittaa onnistumisesta tai mahd. ongelmista.