DreamHouse Jon Koivula. Opinnäytetyö. Tietojenkäsittely koulutusohjelma
|
|
- Joonas Lahti
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 DreamHouse 2016 Jon Koivula Tietojenkäsittely koulutusohjelma Opinnäytetyö 2015
2 telmä Tiivis- Päiväys Tekijä(t) Jon Koivula Koulutusohjelma Tietojenkäsittely Opinnäytetyön otsikko Dreamhouse 2016 Sivu- ja liitesivumäärä Opinnäytetyön otsikko englanniksi Dreamhouse 2016 Tämän opinnäytetyön tehtävänä on luoda sovellusmainen peli, jossa käyttäjä voi asetella 3D-malleja virtuaalimaailmassa käyttäen Oculus Virtuaalilaseja. Peli tarjoaa muutamia valmiita malleja tätä varten, mutta mahdollistaa omien 3D-mallien lisäämisen peliin. Pelin tarkoitus on antaa käyttäjälle mahdollisuus sisustaa tyhjiä huoneita eri ympäristössä haluamallaan tavalla. Opinnäytetyön tuloksena on peli, joka helpottaa ja opettaa käyttäjää sisustamaan huoneita. Peliä voi käyttää apuna hahmottamaan, miten huoneita voisi sisustaa eri huonekaluilla. Tätä voi hyödyntää siten, että käyttäjä voi ensiksi kalustaa pelissä ja käyttää samaa sisustus suunnitelmaa omassa elämässään. Tätä varten tarjotaan muutamia ympäristöjä, jotka ovat suuntaan antavia ajatuksia, miten kannattaa sisustaa huoneita. Koska peli tarjoaa mahdollisuuden sijoittaa omia 3d malleja huoneisiin, voi käyttäjä luoda asunnosta juuri sellaisen kuin haluaa. Pelissä toimii mikä tahansa 3d malli tiedosto, kunhan ne löytyvät niille osoitetusta kansiosta ja pelaajalla on Unity asennettuna koneelle. Omien huoneiden luominen ei ole osa tätä projektia. Pelaaja on pelattava vain valitussapeliympäristöissä. Dreamhouse 2016 peli tukee Oculus Rift virtuaalilaseja. Pääsääntöisesti tätä peliä suositellaan pelaamaan virtuaalilasien kanssa, tällöin hahmottaminen ja suunnittelu on helpompaa, kun käyttäjä tuntee olevansa itse huoneessa jota kalustaa. Jos käyttäjä ei omista Oculus virtuaalilaseja voi peliä pelata normaalisti näytöllä näppäimistön ja hiiren avulla. Opinnäytetyön projektin tekemiseen käytetään Unity pelimoottoria ja ohjelmointikielenä C#. Unity pelimoottori tukee Oculus Virtuaalilaseja, tämä oli vahva syy miksi Unity valittiin tätä projektia varten. Asiasanat Unity, Oculus, C#, 3D mallit
3 Abstract Date Author(s) Indicate the author(s) here, first name before surname, alphabetized according to surname. Degree programme Business Information Technology Report/thesis title Dreamhouse 2016 Number of pages and appendix pages The purpose of this thesis was to create a game, where the user is able to put 3D models in a virtual game world by using Oculus virtual glasses. The Dreamhouse 2016 game offers a few pre added Models to be used in the game, but it also features an option for the user to add own models. The purpose of this game is to give an opportunity for players to decorate empty rooms with models as they wish. The result of this work is a game, which teaches users to decorate rooms with their own imagination. This game can be used also to perceive how to decorate rooms. The benefit of it is that the user can first decorate a room in a game to see the results, and then use the same decoration ideas in reality. This game will be used as a demo by Timehouse in business meetings to sell architecture solutions in virtual reality environments. This demo will be shown with a new name called Tila3VR. The game offers an opportunity for the user to put his/her own created 3D-models into virtual world. These 3D-model files should be placed in a certain folder, so it will be included in the game. Unity software is required in order to use own 3D-models within the game. The Dreamhouse 2016 game supports Oculus DK2 virtual glasses. Mainly this game is recommended to be played with Oculus DK2. The reason for this is that it's easier for the user to understand how to decorate the room, when it feels like he/she is inside that room. However, if the user does not own Oculus DK2 VR glasses, the game can be played normally on screen using a mouse and keyboard. This project was built by using Unity game engine and with a programming language called C#. Unity supports Oculus virtual glasses, which is why I chose this engine for my project. The result of this project was a very interesting and working demo for marketing purposes at Timehouse. Keywords Unity, Oculus, C#, 3D Models
4 Sisällys 1 Johdanto Projektin tausta Projektin tavoite ja rajaus Projektin vaatimukset Käsitteet Unity pelimoottori Kehittämisen vaatimukset Kehittäminen Unity ympäristössä Virtuaalitodellisuus Oculus virtuaalilasit Hyödyt ja haitat Työn vaatimukset ja tarpeet Ohjelmointi Unity Oculus virtuaalilasit osa Unity projektia Tietokone komponenttien tarpeet D-mallit Dreamhouse 2016 pelin toteutus Asennukset ja ohjelmistot Projektin aloitus Projektin arkkitehtuuri ja organisointi Valikko Käyttöliittymä ja skriptit Valikon toiminnallisuudet Pelin ympäristöjen toteutus Tyhjä huone Kerrostalo ympäristö Pelaajan toiminnollisuuksien toteuttaminen FPSController Unity skriptit PlayerScript D-mallien piirtäminen katseen mukaisesti D-mallin lähestymisen korjaaminen D-objektin piirron esto toisen objektin sisään D-Mallit, piirtäminen pelaajan suuntaan D-mallien asettelu D-mallien suurentaminen ja suunnan vaihtaminen D-mallin pyörittäminen... 28
5 Teleportaatio D-mallien fokusointi ChangeMaterialScript D-mallien poistaminen Käyttäjän omat 3D-mallit osaksi peliä Johtopäätökset Tulokset Kohdatut haasteet Jatkokehitysideat Lähteet... 32
6 1 Johdanto Tämän opinnäytetyön tavoite on luoda peli Unity pelimoottorilla, jossa käyttäjä pystyy asettamaan 3D malleja pelin sisällä haluallaan tavalla käyttäen Oculus virtuaalilaseja. Käyttäjä liikkuu tyhjissä huoneissa ja hänellä on eri huonekaluja käytettävissä, joilla sisustaa huoneita. Tämän projektin aikana luotua peliä voi käyttää apuna suunnittelemaan omia huoneita eri huonekaluilla, sekä omien 3D mallinnuksien tarkastelussa pelissä. Käyttäjän pitää pystyä asettamaan useita eri huonekaluja huoneeseen oman suunnitelman mukaisesti Oculus virtuaalilaseilla. Virtuaalilasit mahdollistaa sen että käyttäjä näkee helpommin etäisyydet toisiin 3D malleihin, myös hahmottaminenkin on helpompaa, kun tuntee olevansa itse huoneen sisällä. Tämän työn toimeksiantaja on Timehouse Oy, joka tulee käyttämään tätä työtä markkinointi tarkoituksiin muun muassa mainostamaan omia arkkitehtuurillisia töitä. Tämän työn toteuttamiseen tarvitaan laajaa osaamista C#-ohjelmointikielestä, sekä paljon kokemusta Unity pelimoottorista. Jotta tämän opinnäytetyön tekeminen olisi mahdollista, opiskelin Unity pelimoottorin käyttöä laajalti. C#-ohjelmointikieltä ei minun tarvinnut opiskella, koska ammatikseni käytän päivittäin C#-ohjelmointikieltä 1.1 Projektin tausta Opinnäytetyössä käytin Unity 5.3 versiota pelimoottorista, koska se oli ainoa mikä tukee C#-ohjelmointikieltä. Koska teen työkseni ohjelmistoja ja web-sivustoja C#-ohjelmointikielellä, minun ei tarvinnut opiskella uutta ohjelmointikieltä, oli Unity pelimoottori selkeä valinta. Jotta tämän työn tekeminen oli mahdollista, minun piti opiskella Unityn käyttöä yleisesti. Ostin sivustosta kurssin, jonka avulla opiskelin Unityn käyttöä samalla kun tein tätä projektia. Koska en omistanut aikaisempaa merkittävää kokemusta Unitystä, tämän kurssi käyminen projektin aikana oli lähes pakko. Kurssin suorituksen loppu puolella olin jo saanut työni melkein valmiiksi, joten kaikkia asioita ei tarvinnut käydä läpi kurssilla. Unitystä löytyy tuki Sonyn Morpheus- ja Oculus virtuaalilaseille, tämä vahvisti päätöstä tämän kyseisen pelimoottorin valitsemiseen, sillä itse omistan Oculus lasit, joita pystyin hyödyntämään peliä tehdessä. Unitystä voi laittaa asetuksen päälle, että pelin kamerat kytkeytyvät tietokoneeseen kytkettyihin virtuaalilaseihin jolloin testaaminen ja pelaaminen laseilla projektin aikana on mahdollista. 1
7 1.2 Projektin tavoite ja rajaus Projektin tavoitteena on luoda peli, jossa käyttäjä liikkuu näppäimistön ja hiiren avulla virtuaalimaailmassa Oculus laseja käyttäen. Pelaaja tuntee olevansa itse pelin sisällä ja täten 3D mallien asettaminen tuntuu luontevammalta ja hauskemmalta. Käyttäjä pystyy myös vaihtamaan 3D mallien kokoa ja suuntaa ennen niiden asettamista. Yksi työn tavoitteista on antaa käyttäjälle mahdollisuus ottaa peliin mukaan omia 3D mallinnuksia. Tämä on olennaista pelin käytettävyyden takia, koska on lähes mahdotonta laittaa peliin valmiiksi tuhansia eri malleja käytettäväksi. Tästä syystä tästä käyttäjä voi itse luoda haluamansa 3D mallit eri 3D mallinukseen soveltuvissa ohjelmistoissa kuten Blender, ja ottaa ne käyttöön itse peliin. Käyttäjä voi myös ostaa/ladata haluamiaan malleja erinäisistä sivustoista kuten tai Projekti on rajattu siihen, ettei käyttäjällä ole mahdollisuutta rakentaa omaa taloa. Käyttäjä ei pysty myöskään asettamaan täten seiniä, ja siten muodostaa omia huoneita jo valmiiden huoneiden lisäksi. Tällaisen mahdollisuuden työstäminen projektiin olisi vaatinut paljon enemmän aikaa, todella hyvää matemaattista osaamista, että huomattavasti syvempää Unity pelimoottorin osaamista. Tästä syystä nämä ominaisuudet on rajattu pois tästä projektista ja käyttäjällä on vain rajattu määrä huoneita joita sisustaa. 1.3 Projektin vaatimukset Projektin vaaditaan kokoemusta C#-ohjelmointikielestä, sekä olio-ohjelmoinnista. On myös hallittava perusasiat Unity pelimoottorista. On tiedettävä muun muassa, miten Unityssä voidaan luoda kohtauksia, tunnettava käyttöliittymää, ymmärrettävä objektien hallintaa ja hierarkiaa sekä niihin kytkettyjä komponentteja. On myös olennaista ymmärtää eri komponenttien toiminnallisuuksia. Tätä projektia varten on hyvä tietää yleistasolla, miten Fysiikkaan liittyvät komponentit toimivat. Tämän tietotaidon pystyy saamaan melkein mistä tahansa Unityn aloittelijakurssista. Ne tiedot ja taidot mitä ei saa, pitää itse opetella internetin avustuksella. 1.4 Käsitteet Käsittelen tässä seuraavia käsitteitä, joita tulen käyttämään tässä raportissa. C# C# on Microsoftin luoma ohjelmointikieli.net alustalle. 2
8 Unity Unity on monialustainen pelimoottori pelien luomista varten. 3D 3D on lyhenne three dimension sanasta, joka tarkoittaa yleisellä tasolla kolmiulotteista. Oculus/Oculus Rift Oculus on virtuaalilasit, joka on amerikkalaisen Oculus VR yhtiön kehittämä. Blender Blender on avoimeen lähdekoodiin perustuva ohjelmisto, jolla luodaan 3D sisältöä. Skripti Unityssä ohjelmointikoodit kutsutaan usein termillä Skripti. Unityssä objekteihin liitetään ohjelmointikoodia, näitä koodi pätkiä kutsutaan Skripteiksi. Gameobject Tämä Unity pelimoottorissa yleinen käsite mistä tahansa objektista(peliobjekti). Tämä voi olla kuten hahmo, kamera, valon lähde, lattia tai tapahtumakomponentti. Komponentti Komponentti on toiminallisuus ja/tai datan tiedon säilytys paikka Unityn peliobjektista(gameobject). Esimerkiksi Unityssä peliobjekti voi omistaa komponentin Transform, joka kertoaa missä päin 3D maailmaa tämä kyseinen objekti sijaitsee. Toinen esimerkki on, että komponentti voi olla toiminallisuus peliobjektissa, joka tuottaa ääntä. UI-elementti UI-elementti on Unityssä käyttöliittymää koskeva osa. Event System Event System on Unityssä gameobjekti, joka käsittelee pelissä tapahtumia Eventtejä eli tapahtumia. Event Event on tapahtuma tai toiminto joka suoritetaan tietyn tapahtuman jälkeen. Tämä voi olla kuten hiiren klikkaus nappulaan, joka suorittaa seuraavan tason lataamisen, kutsutaan Eventiksi. Event on mikä tahansa tapahtuma, joka tapahtuu tietyn toiminnon seurauksena. 3
9 SDK SDK on lyhenne englanninkielisestä sanasta Software Development Kit. Se on toisin sanoen kirjasto, joka tarjoaa valmista koodia kehittämään sovellusta taikka peliä. MonoDevelop MonoDevelop on kääntäjä, joka tulee Unityn pelimoottorin mukana. Se tukee C#- ja javascript skirptien käännökset. Visual Studio Olio-ohjelmointi Visual Studio on Microsoftin kehittämä tunnettu kääntäjä. Unity tarjoaa tuen kääntää ja kirjoittaa ohjelmointikieltä Visual studiossa, joka on integroitu Unityyn kehittämistä varten. 2 Unity pelimoottori Unity on monialustainen pelimoottori, jota käytetään pelien luomiseen. Tämän pelimoottorin on kehittänyt Unity Technologies. Unityllä voi luoda video pelejä tietokoneelle, konsoleille, kännyköille ja web-sivustoille. Unity julistettiin vuonna 2005 vain OS X käyttöjärjestelmälle. Kovan suosion myötä vuosien jälkeen, Unityn tuki on laajennettu muillekin alustoille. Unity on yleisesti tunnettu helposta käytettävyydestä, sekä laajasta monialustaisesta tuesta. Videopelien tekeminen yleisesti ottaen on todella haastavaa ja vaatii laajaa osaamista matematiikan ja fysiikan puolella, sekä ohjelmointikielessä. Unity pyrkii helpottamaan videopelien tekemistä eri alustoille. Unityä käyttää yli 1.3 miljoonaa kehittäjää pelien luomiseen. Pelimoottori tukee seuraavia ohjelmointirajapintoja, jotta sen käytettävyys olisi eri alustoille mahdollista: Direct3D Windowsia ja Xboxia varten, OpenGL Mac ja myös Windowsille ja viimeisenä on OpenGL ES rajapinta, jota Unity käyttää, kun luodaan projekteja Androidille tai ios käyttöjärjestelmille. Unity tukee myös muita ohjelmointirajapintoja, kun kyseessä on eri valmistajien videopeli konsoleita, kuten PlayStation 4, Nintedo ja Wii U. 2.1 Kehittämisen vaatimukset Jotta pelimoottorista saa kaiken irti hyötyineen, on olennaista osata perusasiat C#-ohjelmointikielestä. Useat eri web-sivustot, kuten tarjoavat laajaa opetusta aloittelijoille, joista pääsee nopeasti kiinni, miten pelejä kehitetään Unityssä. 4
10 Unityssä on useita eri käsitteitä kuten Rendering, Physics, Scripts, Prefabs, Camera, Image Effects, Terrain, Lights, Probes ja niin edelleen. Näiden tunteminen ja käyttöönoton osaaminen vaatii vuosien tuntemusta Unitystä, josta syystä ammattitason pelin tekemiseen vaaditaan vuosien kokemusta. Tosin nämä ovat helppoja käsitteitä, näiden opettelu vaatii enemmänkin aikaa kuin matemattista tai ohjelmoinnillista kokemusta. 2.2 Kehittäminen Unity ympäristössä Unityn käytetyin ohjelmointikieli on C#. Unity käyttää.net alustaa, joten on mahdollista käyttää samoja kirjastoja ja funktioita peliä kehittäessä, kuin kehittäisi Windows alustalle ohjelmistoa. Unityllä kehittäminen on helppoa. Unityssä on käsite kohtaus (scene), jolla esimerkiksi pidetään valikko ja itse peli erikseen toisistaan projektissa. Otetaan esimerkiksi 2D tasohyppely peli johon kuuluu 4 eri tasoa ja pelin valikko. Unityssä oletettavasti luodaan viisi eri kohtausta. Yksi kohtaus sisältää pelin valikon ja neljä muuta edustavat eri tasoja pelissä. Yleisesti peliä kehitettäessä kehittäjiä löytyy enemmän kuin yksi. Yksi tapa on sopia työn prosessi siten, että jotkut kehittäjät keskittyvät tietyn kohtauksen tekemiseen ja toiset muihin. Näin vältytään myös vahingossa toisten kehitystyön sekoittamista. Unity 5.3 pelimoottori toi uuden työkalun parantamaan käyttöliittymien tekemistä, jota voi käyttää pelivalikkojen luomiseen. Tämä sisältää useita eri valmiita UI-elementtejä kuten nappula, teksti ja piirtoalue. Peleissä usein esiintyy samoja objekteja kuten itse pelin hahmo, tuoli, vihollinen tai ovi, näistä tehdään sellainen Prefab peliobjekti. Prefab on peliobjekti, joka sisältää tietyt informaatiot ja toiminnallisuudet valmiina. Täten jos jokin sama peliobjekti pitää laittaa peliin, esimerkiksi Ovi joka avautuu sisäänpäin, tästä voi tehdä kopion ja se sisältää samat tiedot. Koska kehittäessä useat eri tiedot ja toiminnallisuudet voivat muuttua tietyssä peliobjektista, on turhauttavaa ajatella, että tämä muutos pitää laittaa jokaiseen samanlaiseen gameobjektiin. Kuvitellaan vaikka tämä ovi joka avautuu sisäänpäin halutaankin avautuvan ulospäin. Jos tämän ovi gameobjekti on Prefab, riittää että Unityssä Prefab tietoja muuttaa, ja se välittyy jokaiselle kloonatulle Prefab gameobjektille. 5
11 3 Virtuaalitodellisuus Virtuaalitodellisuudella tarkoitetaan yleiskielellä ympäristö, joka on luotu tietokoneella näyttämään todellisuudelta. Nämä ovat 3.1 Oculus virtuaalilasit Oculus Rift virtuaalilasit on Oculus VR yrityksen kehittämät virtuaalilasit. Näitä voi käyttää peleissä että eri sovelluksissa. Oculus Riftistä ei ole vielä tuotu markkinoille kuluttuja versiota, mutta ne ovat tulossa 2016 alku vuodesta myyntiin. Oculus Riftistä on kuitenkin kehittäjäversio saatavilla, ja niitä voi tilata Oculuksen web-sivulta. Tätä projektia varten on käytössä kehittäjäversio Oculus Riftistä. 3.2 Hyödyt ja haitat 4 Työn vaatimukset ja tarpeet Tämän opinnäytetyön vaatimuksiin kuuluu osata perusasioita matematiikasta, Unity pelimoottorista sekä hyvää kokemusta C# ohjelmoinnista, että olio-ohjelmoinnista. Näitä kaikkia taitoja tarvitaan työn suorittamiseen. 4.1 Ohjelmointi Peli luomisessa käytetään C#-ohjelmointikieltä, jonka osaamisesta vaaditaan ainakin perusteet. Olio-ohjelmoinnista täytyy olla vähän enemmän tietoa, sillä ohjelmoinnin näkökulmasta kaikki taustalogiikat ovat olio-ohjelmointi pohjaisia ratkaisuja. On siis olennaista tietää mitä olio-ohjelmointi on. Ohjelmisto viitekehyksenä käytetään.net 4.5 versiota, jossa on ohjelmointikieli versiona käytössä 5 C#. Unityn asennuksessa mukana tulee C#-ohjelmointikieltä varten kääntäjä MonoDevelop, tämä on Unityn oletus kääntäjä. Unity mahdollistaa kuitenkin myös pelin kääntämisen C#-skriptit Visual Studio 2013 ja 2015 versioissa. Projekti onkin toteutettu Visual Studio 2015 Community Edition kääntäjän avulla, jonka voi ladata erikseen Microsoftin sivuilta. Jotta lisäosan saa käyttöön on Unityn asetuksissa valittava kääntäjäksi Visual Studio. 6
12 4.2 Unity Tässä projektissa käytetään Unity 5.3 versiota joka on uusin saatavilla oleva versio. Projektia varten pitää tuntea perusasiat, jotta työn tekeminen on mahdollista. Tähän kuuluu muun muassa, miten luodaan projekti, erilaisten kohtauksien (scene) luonti peliä varten ja miten lisätä gameobjekteja ja niihin komponentteja. On myös tärkeää ymmärtää miten hallitaan pelin taustalogiikkaa ohjelmoinnillisesti Unityssä. 4.3 Oculus virtuaalilasit osa Unity projektia Projektia varten pitää olla kehittäjäversion Oculus virtuaalilasit. Oculus virtuaalilaseista on tehty kaksi eri versiota, Oculus SDK 1 ja SDK 2. Tässä projektissa käytämme Oculus SDK versiota 2. Tässä versiossa Oculus lasit näyttävät parempaa grafiikkaa, sekä kuvan tärähtely on merkittävästi pienempi laseja käytettäessä joka selventää kuvaa huomattavasi verrattuna aiempaan SDK 1 versioon. Oculus web-sivustosta pitää ladata myös Unityä varten erikseen kehittäjäpaketit, sekä ajurit. Käytämme ajuri versiota Tietokone komponenttien tarpeet Jotta kehittäminen Oculus virtuaalilaseille on mahdollista, pitää omistaa tehokas tietokone. Oculus virtuaalilasit tarvitsevat muun muassa tehokkaan näytönohjaimen, jotta se jaksaa pyörittää kuvaa Oculus virtuaalilaseissa. Minimi vaatimukset tietokone komponenteille on vastaavat: Näytönohjain: NVIDIA GeForce 760GTX Prosessori: Intel Core 2 Quad 9660 Keskusmuisti: 2 Gt Käyttöjärjestelmänä on käytettävä Windows 8.1 tai Windows 10 versioita. Käytössä voi olla mikä vain painos. (Home, Enterprise, Professional) 4.5 3D-mallit Peli tukee monia eri tiedostoformaatissa olevia 3D-mallinnuksia. Esimerkiksi Blenderistä exporatut.fbx formaatissa olevat 3D-mallit, tai 3D Studio maxista exportatut.3ds. 3D-mallit. Käytännössä peli tukee kaikkea 3D-malleja, mitä Unity tukee. 7
13 5 Dreamhouse 2016 pelin toteutus 5.1 Asennukset ja ohjelmistot Tätä työtä varten seuraavat ohjelmistot pitää asentaa työasemalle: 1. Unity versio 5.3<linkki> 2. Visual Studio 2015 Community Edition<linkki> 3. Oculus Runtime 0.8<linkki> 5.2 Projektin aloitus Jotta kehittäminen voidaan aloittaa, täytyy luoda projekti Unityssä. Unityn käynnistäessä avautuu dialogi, joka pyytää käyttäjätunnuksia kirjautumiseen. Jos käyttäjätunnuksia ei ole, voi kehittämisen tarvittaessa aloittaa offline-tilassa. Tätä varten pitää klikata Work Offline -nappulaa. Uusi dialogi vaihtuu tilalle, jossa pyydetään avaamaan aiemmin luotu Unity projekti tai luomaan uusi. Tätä työtä varten meidän pitää luoda uusi projekti. NEW-nappulaa klikatessa avautuu dialogi, joka kysyy projektin nimeä ja mitä paketteja otetaan projektiin mukaan. Nämä kyseiset paketit ovat Unityn asennuksen yhteydessä tulleita valmiita kehittämiseen luotuja tiedostoja. Nämä tiedostot ovat valmiita skriptejä, 3Dmalleja, tekstuureita ja muita kehittämisen aloittamiseen tarkoitettua sisältöä. Tässä pelissä pelaajan pitää pystyä liikkumaan, ja koska emme luo omaa hahmoa peliin, käytämme valmista sisältöä tätä varten. Valitsemme projektiin valmiin paketin Characters. 8
14 Ennen kuin luodaan projekti, on hyvä varmistaa, että 3D on asetettu päälle. Tämä laittaa Unity peliprojektille valmiiksi 3D asetukset. Projektin aikana luodaan myös katseella aktivoituvia nappuloita. Tätä varten täytyy ladata erään kehittäjän luoma skripti. Tämä ladataan valmiiksi työasemalle ennen projektin aloittamista. 5.3 Projektin arkkitehtuuri ja organisointi Pelin arkkitehtuuri sisältää kolme eri kohtausta, joista yksi on valikko ja loput pelin ympäristöjä. Valikko kohtausta varten luodaan skripti, joka käsittelee käyttöliittämän tapahtumia, kuten nappulan painallusta. Tämä sama skripti myös vastaa logiikasta, mihin ympäristöön käyttäjä haluaa mennä pelaamaan napin painalluksesta. Ennen projektin aloittamista työasemalle ladattiin valmis skripti, joka aiheuttaa pelissä napin painalluksen tapahtuman pelkällä katseella, tämä valmis skripti otetaan valikko kohtaukseen mukaan käyttöön. Pelistä löytyy kaksi eri kohtausta, jossa pelaaja pystyy pelaamaan. Molemmissa kohtauksissa on samat skriptit ja logiikat, paitsi ympäristö on erilainen. Toinen näistä ympäristöistä on rakennettu Unityssä luomalla iso tyhjä huone, joka koostuu primitiivisistä objekteista. Nämä primitiiviset objektit vastaavat mitä tahansa 3D-mallinus ohjelmassa luotuja modeleja Toisessa kohtauksessa taas on tämän työn toimeksiantajan yrityksessä toimivan työntekijän tekemä valmis huoneisto, jossa käyttäjä voi pelata. Pelaamista varten täytyy luoda muutamia skriptejä. Yksi näistä skripteistä käsittelee logiikkaa, miten ladataan pelin sisälle käyttäjän laittamia 3D-mallinnus tiedostoja Resource - 9
15 kansioon. Toinen skripti joka luodaan, käsittelee pelaaja logiikkaa. Tämä sisältää toimintoja kuten, miten pelaaja pystyy asettamaan objekteja ja käsittelemään niitä. Objektien käsittelyä varten myös luodaan skripti, joka sisältää logiikan, miten saadaan keskitettyä tietty objekti jonka pelaaja voi halutessaan poistaa. <kuva> Projektin sisällöt organisoidaan eri kansioihin, jotta sisältöä on helpompi löytää ja jäsennellä. Unity projektia luodessa, projektiin tulee valmiiksi Assets kansio, joka sisältää kaikki sisällöt, mitä peli käyttää. Tämän kansion sisälle luodaan alikansioita, jotka nimetään sisältöä kuvaavilla nimillä. Skriptejä varten Assets -kansion sisälle luodaan Scripts kansio. 3D-malleja ja tekstuureita varten luodaan Resources kansio, jonka sisälle luodaan kansio Models. Projektin luonnin yhteydessä valittiin mukaan Characters paketti. Tämän paketin sisältö on automaattisesti Standard Assets kansion sisällä, josta löytyy kaikki sisällöt, mitä Characters paketista löytyy. Kohtauksia varten luodaan myös erikseen kansio Scenes, johon lisätään projektin aikana kaikki kohtaukset. 5.4 Valikko Käyttöliittymä ja skriptit Pelin valikkoa varten luodaan kohtaus nimeltään Gamemenu, jota pidetään Scenes kansion sisällä. Tämä kyseinen kohtaus avataan auki Unityssä, mihin luodaan pelin valikko. Pelistä löytyy kaksi valikkoa, joista jompikumpi on aktiivinen eli esillä. Ensimmäisessä valikossa voidaan siirtyä valitsemaan peliympäristöä pelaamista varten tai poistua pelistä, kun taas toisesta valikosta valitaan kahdesta vaihtoehdosta, mitä peliympäristöä halutaan pelaamiseen. Pelin ensimmäistä valikkoa varten lisätään kaksi nappulaa, joista yhdestä pääsee valitsemaan peliympäristön ennen pelaamista ja toisesta pääsee poistumaan pelistä. Nämä lisätään Unityssä GameObject UI Button nappulaa valitsemalla. Tämä toistetaan kaksi kertaan, että saadaan kaksi nappulaa. Nämä nappulat näkyvät Unityn hierarkia ikkunasta Canvas gameobjektin sisältä. Nämä asetellaan Unityssä keskelle canvasta, jotta valikko näyttää siistiltä. Tämä sama prosessi on tehty toiselle valikolle, joka löytyy toisen canvas objektin sisältä. 10
16 Tämä toinen valikko on pelin ympäristön valintaa varten. Tämä valikko laitetaan inaktiiviseksi valmiiksi, koska haluamme vain yhden valikon olevan esillä kerrallaan. Pelin ympäristön valikon nappuloiden yläpuolelta löytyy kuva, joka antaa käyttäjälle esikatselun pelinympäristöstä. <kuva valikosta> Valikkojen toiminallisuutta varten pitää luoda Event System, joka käsittelee Eventtejä, eli tapahtumia valikossa. Event Systemin voi lisätä valikosta GameObject UI Event System. Tämä riittää, että saadaan tapahtumat toimimaan tässä kohtauksessa eli valikossa. Event System objektiin pitää vielä lisätä uusi komponentti, joka on skripti, joka käsittelee napin painalluksia katseella. Tämän skripti nimi on VRInputModule, joka ladattiin työasemalle projektin aloitus vaiheessa. Valikkoa varten myös tarvitaan toinen skripti, joka käsittelee napin painallusten aiheuttamat toiminnot, kuten pelistä poistuminen, peliympäristön valitseminen, valikon näyttäminen ja pelin aloittaminen. Projektiin on luotu skripti MenuLogic, johon on kirjoitettu valikon näyttämisen ja kohtausten vaihtamiseen liittyvät toiminnallisuudet Valikon toiminnallisuudet MenuLogic skriptiin on lisätty viittaus kohtauksessa oleviin kahteen eri valikkoon. Jotta napin painalluksista voi siirtyä toisiin valikkoihin ja takaisin, täytyy skriptillä löytyä viittaus näihin. Skripti sitten asettaa nämä valikot eli canvas objektit aktiiviseksi sitä mukaan, mitä valikkoa halutaan näyttää. Viittaukset asetetaan MenuLogic luokan sisällä julkisiksi objekti instansseiksi: Tämä skripti on pää kameran komponentti. Pelaaja pitää pystyä katseellaan painaa nappuloita, tästä syystä tämä skripti on kytkettävä pelin kameraan. Event Systeemille annetaan viittaus napin painallusten jälkeisiin suoritettaviin funktioihin. Tämä viittaus annetaan kameran kautta. 11
17 Jokaiselle valikon nappulalle annetaan Eventti On Click(), jotta voidaan suorittaa toiminto, kun käyttäjä on painanut nappulaa katseellaan. Tapahtumaan On Click täytyy vielä antaa viittaus Main Cameraan, jotta päästään käsiksi MenuLogic skriptin funktioihin. Alasveto valikosta voi valita MenuLogic skriptin ja sen funktion, mikä halutaan suorittaa napin painalluksesta. Kuvasta näkee, miten On Click eventti on toteutettu PlayButton -nappulalle. PlayButton nappula on päävalikon Pelaa nappula. Nappulan aktivoituessa näytetään toinen valikko, josta valitaan peliympäristö. Kuvassa näkyy ShowLevelMenu funktion toiminallisuus. Skripti omistaa viittauksen pää valikkoon ja peliympäristön valinnan valikkoon. Käyttäjän aktivoidessaan Pelaa-nappulaa, asetetaan päävalikko inaktiiviseksi ja peliympäristö valinta valikko aktiiviseksi. Kun käyttäjä on valinnut peliympäristön pelaamista varten, suoritetaan funktio, joka lataa kohtauksen pelaajalle pelaamista varten. MenuLogic skriptissä on vain yksi metodi joka vaihtaa kohtauksia pelissä. Tämä metodi saa parametrina halutun kohtauksen nimen, joka suorittaa funktion LoadScene, mikä avaa tietyn kohtauksen auki pelissä. 12
18 5.5 Pelin ympäristöjen toteutus Tätä projektia varten on toteutettu kaksi erilaista ympäristöä, jossa pelaaja pystyy pelaamaan. Valikossa pelaaja pystyy valitsemaan, minkä ympäristön haluaa ottaa pelattavaksi. Yksi näistä tasoista eli ympäristöistä on tyhjä iso huone. Ison tyhjän huoneen ajatuksena on toteuttaa pelaajalle mahdollisuus testata ja kokeilla vapaasti erilaisia objekteja eli huonekaluja, ja nähdä miltä ne näyttävät pelissä. Tämä mahdollisuus on suunniteltu sitä varten, että jos käyttäjä on luonut omia objekteja, on mahdollista testaa ja nähdä niitä isossa ympäristössä. On yleistä, että ei niin kokeneemmat 3D-mallinuksesta kiinnostuneet käyttäjät voivat vahingossa luoda liian suuria objekteja, jotka eivät sovi yhteen muiden kanssa. Kyseisen ison tyhjän huoneen idea ei ole myöskään pelkästään vain testata objekteja, vaan antaa käyttäjälle mahdollisuus niin sanotusti leikkiä eri huonekaluilla. Tämä ajatus toimii lapsille, jotka haluavat koristella ja asetella huonekaluja oman mielensä mukaan, minne haluaa rajoittamattomassa ympäristössä. Toinen pelin ympäristöistä on iso kerrostaloasunto, josta yhteen huoneeseen, pelaaja on asetettu. Tämä on suljettu ympäristö, missä käyttäjä voi asetella huoneeseen huonekaluja. Tämä ympäristö eroaa edellisestä siten, että käyttäjän on mahdollista vaihtaa paikkaa eri huoneisiin, näin käyttäjä pystyy asettaa huonekaluja erilaisissa huoneisissa. Tämän ympäristön pitäisi antaa hyvän mahdollisuuden käyttäjän kokeilla objekteja erilaisissa huoneissa. Jos käyttäjällä on hallussa esimerkiksi useita valmiita 3D-malleja, on mahdollista sisustaa jokainen huone Tyhjä huone Tätä ympäristöä varten on luotu oma kohtaus, johon on rakennettu Unityn työkaluilla tyhjä huone. Tämä on tehty neliömäisillä 3D-objekteilla, joita on venytetty ja asetettu muistuttamaan tyhjää huonetta. Luodaan siis yksi nelilömäinen 3D-primitiivinen objekti, eli Unityn oma valmis objekti, jonka on venytetty leveys suunnassa leveäksi, mutta matalaksi. 13
19 Unityssä saa valmiita 3D-primitiivisiä malleja, jotka ovat Unityn valmiita 3D-malleja. Tyhjän huoneen lattiaa varten valittiin neliö joka venytettiin muistuttamaan lattiaa. Tämän voi valita valikosta GameObject -> 3D Object -> Cube Kopioidaan lattia ja siirretään se Y-akselia pitkin korkeammalle lattian yläpuolelle, jotta siitä saadaan helposti saman kokoinen katto huoneelle. Seinät toteutetaan samalla tavalla, mutta leveys suunnassa ne ovat ohuempia, ja korkeus venytetään mahtumaan lattian ja katon väliin. Näin saadaan helposti toteutettua tyhjä 14
20 huone pelaajalle. Tyhjästä huoneesta enää puuttuu valot huoneen sisällä, ilman valoja ei pelaaja pystyy näkemään eteenpäin. Unity asettaa kohtauksen luonnin yhteydessä yhden valo objektin taivaalle, valo ei pääse kuitenkaan tyhjän huoneen sisälle. Asetetaan kaksi valo objektia huoneen sisälle, jotta tämä ongelma saataisiin ratkottua. Kuvasta näkee, että kaksi valo objektia on asetettu tyhjään huoneen sisälle, jotta saadaan valaistus sopivaksi. Valo objektiksi valittiin Directional Light objekti, joka lähettää tiettyyn suuntaan valoa. Tämä kuva näyttää, minkälainen tyhjä huone ja sen valoisuus näyttävät pelissä. 15
21 Tyhjän huoneen valmiiksi saattamiseksi pitää enää asettaa Unityn oma valmis yksinkertainen pelaaja objekti, joka toimii pelaajana tässä pelissä. Projektin luonnin yhteydessä otettiin Characters paketti mukaan projektiin, jonka mukana löytyy tällainen valmis Pelaaja objekti. Tämän tiedoston nimi on FPSController, joka löytyy Characters paketin sisällöstä olevista tiedostoista. Tämä objekti siirretään tyhjään huoneeseen lattian yläpuolelle, josta pelaaja aloittaa aina tässä ympäristössä pelattaessa Kerrostalo ympäristö Kerrostaloa ympäristö on toteutukseltaan muutoin sama kuin tyhjän huoneen, mutta eroaa siten, että en luonut useita tyhjiä huoneita sitä varten. Toimeksiantajan Ville Rantasen antoi projektia varten valmiin ison 3D-mallin, joka vastaa isoa kerrostaloa. Kerrostalon ympäristöä varten tein uuden Scenen eli kohtauksen Unityssä. Tämän jälkeen otin projektiin mukaan uuden 3D-mallinnus tiedoston, joka on tämä kerrostalo. Asetin tämän keskelle maailmaa, jonka jälkeen lähdin toteuttamaan pelaajan paikat ympäristölle. Ville Rantasen toteuttama 3D-malli tyhjä kerrostalo tulee toimimaan pelaajan ympäristönä. Pelaaja asetetaan yhteen näistä huoneista aloitettuaan pelaamisen tässä tasossa. 16
22 Valitaan yksi huoneisto, kymmenistä tyhjistä kerrostalon huoneista ja asetetaan FPSController pelaaja objekti huoneen sisälle. Kohdan on oltava sellainen josta pelaaja voi aloittaa heti tutkimisen ja huonekalujen asettelun. Kuvan vasemmalla puolella näkyy Unityn kohtaus ikkuna, missä on pelaaja kamera ikoni. Oikealla puolella on kuva itse pelistä, mihin suuntaan pelaaja katsoo aloittaessaan tässä ympäristössä pelaamisen. Tässä peliympäristössä on useita muitakin huoneita, mutta käyttäjä aloittaa vain yhdestä näistä. Pelaajalla on kuitenkin mahdollisuus käydä muissakin. Tätä varten on luotu tyhjä peliobjekti, teleportti, joka on asetettu muihin huoneisiin. Teleportti objekteilla on xyzkoordinaatit. Pelaajan hahmon toiminnallisuuksiin kuuluu teleportaatio, jota käytetään nimenomaan tässä ympäristössä. Teleportaatio tapahtuu käytännössä siten, että pelaaja objektin xyz-koordinaatteihin vaihdetaan jonkin teleportti objektin koordinaatit kun pelaaja käyttää teleportaatio toiminnallisuutta. Tällöin pelaaja voi vapaasti liikkua eri huoneissa helposti. 17
23 Kuvassa on yksi kerrostalon huoneista, johon on asetettu tyhjä peliobjekti. Kun pelaaja haluaa, hän voi siirtyä tämän peliobjektin sijaintiin, milloin tahansa. 5.6 Pelaajan toiminnollisuuksien toteuttaminen Jokaiseen ympäristöön, mitä on toteutettu pelaamista varten, on asetettu FPSController pelaajaobjekti FPSController Tätä työtä varten tarvitsin objektin, joka on ohjelmoitu liikkumaan näppäimistä ja on kykenemään liikkumaan, hyppimään ja muita perusominaisuuksia, mitä yleisesti peleistä pelaaja hahmolta odotetaan. Aikaisemmin mainitun FPSController pelaajaobjekti, joka tulee Characters paketin mukana, vastaa minun tarpeitani. Tähän objektiin on liitetty First Person Controlller skripti, joka mahdollistaa objektin liikkumista näppäinten avulla. Myös skriptistä löytyy koodia, joka tuottaa ääniä pelaajan hyppiessä tai juostessaan. Tätä työtä varten tarvitsin pelaaja hahmon mahdollistaa käyttää Oculus virtuaalilaseja katsoessaan ympärille, että 3D-objektien piirtäminen siihen paikkaan, mihin käyttäjä katsoo. Tätä varten minun piti joko laajentaa valmista First Person Controller skriptiä, tai luon uuden ja kytken sen tähän FPSController objektiin. Päätin toteuttaa oman skriptin ja kytkeä se tähän objektiin, koska tulevat toiminnallisuudet eivät koske perus periaatteita liittyen liikkumiseen tai muuhun, on helpompi ja järkevämpää pitää nämä koodit erillään omissa tiedostoissaan Unity skriptit Unityssä käsite Script eli Skripti on tiedosto, joka sisältää pätkän koodia. Unityssä pelien tekemisessä yleisesti luodaan useita skriptejä, jotka kytketään eri objekteihin. Nämä koodipätkät voivat olla lyhyitäkin saavuttaakseen halutun toiminnallisuuden. Eri toiminnallisuudet on yleensä jaoteltu eri skripteihin, tällä tavoin niiden ylläpitäminen ja laajentaminen on helpompaa. Unityn skriptit sisältävät jo luodessa valmiiksi kaksi funktiota, Start ja Update. Kun peli käynnistyy, jokaisen skriptin Start funktio suoritetaan. Tästä syystä Start funktioon on hyvä asettaa kaikki alustukseen varten tarvittavat koodi pätkät kuten animaatioiden, arvojen asettaminen hahmolle, tiedon luku tai äänitiedostojen soittaminen. Esimerkiksi vaikka peliobjekti BackgroundMusic johon on kytketty skripti, jonka Start funktion suoritettaessa se alkaa soittaa musiikkia. 18
24 Toinen merkittävä funktio skripteissä on Update. Tämä funktio suoritetaan koko ajan pelin ollessa käynnissä. Tässä funktiossa tyypillisesti tarkistetaan pelaajan käyttämiä näppäin painalluksia, tai onko pelaajaan osumassa jokin toinen objekti. Esimerkiksi Player Controller Scriptissä Update funktiossa tarkistetaan, kun pelaaja painaa W näppäintä, objektia liikutetaan siihen suuntaan, mihin objektiin kytketty kamera katsoo. Tai kun objekti törmää tai osuu toiseen objektiin, sen liikkuminen objektin sisään estetään PlayerScript Luodaan uusi skripti nimeltään PlayerScript. Tähän skriptiin kirjoitetaan kaikki koodit koskien pelaajahahmon toiminnallisuuksia kuten 3D-mallien piirtämiseen katseen pääty pisteeseen, 3D-mallien asettaminen ja niiden poistaminen, sekä muut tarvittavat toiminnallisuudet. Tämä skripti lisätään osaksi FPSController objektia, jotta se tulee käyttöön pelatessa D-mallien piirtäminen katseen mukaisesti Unity tarjoaa kirjastoja, mistä löytyy jättimäisen paljon valmista funktiota apuna peliohjelmointia varten. Näiden funktioiden avulla käyttäjän on helppo lähteä rakentamaan omaa peliä. Unity myös tarjoaa manuaalin jokaista funktiota varten, jos tuntee epävarmuutta, miten sitä käytetään tai mikä sen tarkoitus on. Seuraavaksi toteutetaan toiminnallisuus pelaajalle, jossa piirrettävä 3D objekti sijoitetaan pelaajan eteen siihen kohtaan mihin hän katsoo. Yksi Unityn valmiista funktioista tarjoaa ratkaisun tämän toiminnallisuuden toteuttamiseen. Funktion nimi on Raycast, joka on osa Physics luokkaa. Funktio käytännössä ampuu näkymättömän säteen tiettyyn suuntaan ja palauttaa tiedon, kun se osuu johonkin. Tällä funktiolla pystytään siis pelissä saamaan tieto käyttäjän katsomasta kohteesta, olkoon se edessä oleva lattia, katto taikka seinä. Myös jo asetettujen objektien päälle on mahdollista piirtää uusi objekti. Funktion palauttaa tiedon objektista, esimerkiksi lattia, sekä osumapisteen paikan xyz-koordinaatistosta. Funktion palautettua tiedon pystytään siihen piirtämään 3D-objekti. Jotta pelaajaobjekti ampuisi näitä näkymättömiä säteitä jatkuvasti pelaajan katseen suuntaan, on Update funktion sisällä kutsuttava Physics.Raycast funktiota. Tällöin aina kun funktio palauttaa tiedon osumapisteestä, siihen pisteeseen piirretään 3D-malli. 19
25 Koska projektin aikana tullaan laajentamaan logiikkaa koskien 3D-mallien piirtämistä, asettelua ja poistoa, on järkevää kirjoittaa kaikki nämä logiikat yhden funktion sisälle. Tätä varten on tehty funktio ShootRayForObject, johon kirjoitetaan kaikki aiemmin mainitut toiminnallisuudet. Tämä funktio käsittelee tällöin 3D-mallin piirtämislogiikkaa. Pitämällä funktioita loogisessa järjestyksessä helpotetaan kehittämistä. PlayerScript Update funktion on laajennettu myös siten, että jos käyttäjä haluaa lopettaa 3D-mallin piirtämisen, käyttäjä voi painaa E-näppäintä. Saman napin painalluksesta piirtäminen alkaa uudestaan D-mallin lähestymisen korjaaminen Toteuttaessa perus toiminnallisuuksia koskien 3D-mallien piirtämistä törmäsin tämän työn aikana useisiin ongelmiin. Näiden ongelmien ratkaisujen löytäminen tuotti myös ongelmia, koska en löytänyt yhtään artikkelia, tai apua foorumeilta missä muut ohjelmoijat kysyvät neuvoja ja apuja. Muun muassa tästä syystä projektin aikataulu pidentyi huomattavasti. Ensimmäinen ongelmani oli se, kun käyttäjä piirtää 3D-mallia johonkin paikkaan ja pitää päätä paikallaan, objekti alkoi lähestyä pelaajaa päin. Parin viikon jälkeen, kun palasin työn pariin, keksin ratkaisun ongelmaan. Ratkaisu oli lopulta todella yksinkertainen ja sain tuntea pitkästä aikaan tyhmyyden tunnettakin. Pelaajan pitäessä päätä paikallaan osumapiste oli aina melkein sama, paitsi se oli yhden yksikön verran pelaajaa päin. Toisin sanoen tämä seuraava osumapiste olisi viime kerralla osutun pisteen viereinen piste pelaaja suunnassa. Tämä johti siihen, että 3D-malli piirrettiin seuraavaksi yhden yksikön verran lähemmäksi. Vähän ajan kuluessa 3D-malli pystyi saavuttamaan pelaajan, jos päätä oli pitänyt paikallaan koko ajan. Ratkaisu tähän oli yksinkertainen. Säteen osuessa piti tarkistaa, oliko osuma piste eri kuin nykyisen 3D-objektin piste. Tarkistetaan if lauseella, onko osuma eri kuin piirretyn 3D-mallin positio. Tällä tavalla pystyy estämään 3D-mallin siirtymistä pelaajan suuntaan kun pää on paikallaan. 20
26 D-objektin piirron esto toisen objektin sisään Heti ratkaistuani edellisen ongelman, kohtasin uuden. Kaikki objektit, jotka pelaaja piirtää menevät toisten objektien sisälle. Esimerkiksi jos pelaaja katsoo huoneen seinää, pelaajan piirtämä objekti menee puoliksi seinän sisälle. Tämä osoittautui todella haasteelliseksi ongelmaksi, koska ratkaisua ei löytynyt mistään Unityn omista harjoitusvideoista eikä foorumeistakaan löytynyt valmista ratkaisua. Lähdin itse Unityn virallisille foorumeille kyselemään, jos joku osaisi auttaa, mutta turhaan. Koitin kuukauden ajan kokeilla eri ratkaisuja. Koitin muun muassa selvittää, johtuuko ongelma siitä, että pelin seinästä puuttuu komponentteja joka estäisi objektia menemästä sisään, taikka siitä onko puutteellisia komponentteja 3D-mallissa, jota piirretään. Lähestyin ensimmäisenä ongelmaan siten, että lisäsin jokaisen ympäristön objektiin komponentin Mesh Collider. Mesh Collider on sellainen komponentti, joka kykenee asettamaan monimutkaisille objekteille fyysiset rajat. Nämä rajat estävät minkä muun tahansa objektin tulemasta läpi, jos kyseisellä objektilla on tietynlaisia komponentteja. Yksi näistä komponenteista mitä objektilla pitää olla, jotta se ei mene toisen objektin sisään, oli Rigidbody ja jokin Collider komponentti. Rigidbody komponentti edustaa kappaletta, jolla on massa ja siihen voi vaikuttaa painovoima. Tätä komponenttia käytetään jokaisessa pelin objekteissa, joiden halutaan olevan osa fyysistä maailmaa. Collider komponentteja on paljon, kuten Box, Sphere, Circle ja Mesh Collider. Nämä komponentit toimivat siten, että ne estävät objekteja menemästä toistensa läpi. 21
27 Asetin Rigidbody ja MeshCollider komponentin piirretylle 3D-mallille Start funktiossa testatakseni, estääkö tämän objektin menemästä seinän läpi. Testattaessa huomasin, että tämä toimi teoriassa, mutta ei vastannut haluttua lopputulosta. Tuoli pysyi kyllä paikallaan mutta pyöri itsensä ympäri salaman nopeasti. Tämän aiheutti pelaajan katseena toimiva Raycast funktio. Funktio ampuu jatkuvasti säteitä yhteen kohtaan, ja seinä työntää objektin aina itsestään poispäin, jotta se ei menisi seinän sisään. Tämä jatkuva toisto aiheutti objektin hallitsemattoman pyörimisen. Totesin, että tämä ratkaisu ei tule toimimaan lainkaan, ja jouduin etsimään toimivampaa ratkaisua. Palasin takaisin alkupisteeseen, jossa objekti piirtyy seinän sisään. Huomasin, että objekti oli piirretty tasan puolet seinän sisälle. Päädyin johtopäätökseen, että tämän 3D-mallin keskipiste on keskellä mallia. Pohdin, että jos voisin saada selville seinän ja piirretyn 3Dmallin koon, voisin laskea kuinka paljon kappale menee seinän sisälle, ja piirtää se lähemmäksi pelaajaa. Unityllä on jokaiselle 3D-objektille luokka Bounds. Bounds luokalla on muuttuja size, joka on Vector3 tyyppiä. Tämä kertoo objektin koon. Tarkastelin objektien size arvoja pelatessani ja ne näyttivät nollaa. Otin vähän selvää mistä tämä johtui, ja selvisi, että objekti koostuu todellisuudessa useammasta objektista, esimerkiksi tuoli koostuu selkänojasta, jaloista ja istuimesta. Unity ei laskenut size arvoa koko objektille vaan pelkästään lapsi objekteille. Tämä ei siis ollut ratkaisu ongelmaan. Jatkoin selvittämistä ja huomasin, että Bounds luokalla on kaksi ominaisuutta, max ja min. Nämä ovat tyyppiä myös Vector3, eli sisältävät xyz pisteet. Pohdin, että jos laskisin max ja min xyz-pisteiden erot, voisin saada selville objektin piirtorajat. Myös jokaisen objektin Bounds luokasta sai extend ja center ominaisuuksista tietoja, mikä on kappaleen keskipiste ja kuinka paljon se venyy z ja x akselissa. Näiden avulla pystyin selvittämään objektin piirtorajat. Jos siis vertailen objektien piirtorajoja ja minulla on myös tiedossa piirretyn 3D-objektin keskipisteen etäisyys reunaan, pystyn niitä vertailemalla laskea etäisyyden ja päätellä paljon x,y, tai z pisteesiin pitää lisätä arvoa, jotta objekti ei olisi enää toisen objektin sisällä. 22
28 Tarkasteltaessa arvoja, huomasin, että piirretyn 3D-mallin max ja min pisteet olivat arvoa nolla. Pohdin, että tämä saattaa mennä todella hankalaksi ja ihmettelin kovasti mistä tämä voi johtua. Otin asiasta selvää Unityn foorumeilta, ja löysin vastauksen. Piirretyn 3D-mallin, tässä tapauksessa tuoli objekti, koostui kahdesta lapsiobjektista. Minun pitää laskea näiden lapsiobjektien koot, saadakseni koko tuolin koon. Yksi näistä lapsiobjekteista edusti tuolin reunoja, kun toinen taas tuolin keskiosaa eli istuin aluetta. Loin funktion GetObjectBounds joka palauttaa tuolin koon tyyppinä Bounds. Paramterina otin piirretyn 3D-mallin peliobjektin ja hain Renderer komponentin. Jos sellainen löytyy, otan sen komponentin bounds tiedot. Seuraavaksi käyn läpi kaikki lapsiobjektit ja lisään niiden boundsin rajat Renderer komponentin bounds arvoihin. Palautan funktiosta rendererin boundsit tulevia laskuja varten. Nyt kun minulla oli hallussani piirretyn objektin raja-arvot, pystyin seuraavaksi lähteä laskemaan tämän ja toisen objektien välisiä etäisyyksiä toisistaan, jotta voisin estää piirretyn objektin piirtymistä toisen sisään. 23
29 Kuvassa lasketaan jokaisen xyz pisteen etäisyys keskipisteestä reunaan. Sitten verrataan, onko piste vastakkaisen objektin reuna pisteiden sisällä D-Mallit, piirtäminen pelaajan suuntaan Näiden edellisten ongelmien ratkettua sain ja melkein toimivan ratkaisun työhön. Olin testailussa kuitenkin löytänyt seuraavan ongelma koskien 3D-mallien piirtämistä. Jos katsoin esimerkiksi kattoon, 3D-malli ei piirtynyt suoraan eteen, vaan meni katon vasempaan reunaan huoneen ulkopuolelle. 24
30 Tuoli oli tyhjän huoneen ulkopuolella edellisen ongelman ratkonnan jälkeen. 3D-malliin lisättiin laskujen jälkeen x,y ja z pisteisiin arvoja, jotta objekti ei olisi toisen objektin sisältä. Syyksi osoittautui se, että kun lasketaan x,y ja z suuntaiset erot piirretyn kappaleen ja vastakkaisen kappaleen välillä, nämä kaikki arvot lisättiin tuolin xyz-pisteeseen. Näin ei pitäisi olla, vaan pitäisi lisätä sen koordinaatio pisteet tuoliin, josta on lyhin matka ulos toisen objektin sisältä. Eli lopuksi pitäisi verrata, millä on pienin arvo, ja se lisätään tuolin koordinaatiopisteeseen. 25
31 Tässä koodi pätkässä verrataan, mitkä koordinaatiopisteet nollataan, eli lisäys ei aiheuta muutosta piirretyn 3D-mallin paikkaan. Halutaan vain yksi koordinaatiopisteiden lisäys tuolin piirtopisteeseen. Tämä ei kuitenkaan vielä riittänyt, koska tietyissä tapauksissa kävi niin, että tuoli piirtyi toiselle puolelle objektia, eikä pelaajan suuntaan. Vielä piti laajentaa koodia siten, että otettiin selville mistä suunnasta pelaaja katsoo, eli onko katse kohdistettu akselin positiiviseen vai negatiiviseen suuntaan. Kun nämä tiedot otin vielä huomioon skriptissä, sain 3D-mallin piirto logiikan valmiiksi. Näitä koodeja voi tarkemmin tarkastella liitteessä PlayerScript.cs D-mallien asettelu Laajennetaan pelin toiminnallisuuksia. Pelissä pelaajan pitää pystyä asettamaan paikalleen kopio piirretystä 3D-mallista ympäristöön. Nyt pelaaja näkee koko ajan edessään reaaliajassa olevan 3D-mallin. Jotta käyttäjä voi jättää objektin paikalleen ja jatkaa toisesta objektista olisi hyvä saada jätettyä kopio itse 3D-objektista. Tällöin reaaliajassa oleva objekti jäisi pelaajan käsiin. Laajennetaan PlayerScript tiedoston Update funktiota siten, että lisätään logiikka F-näppäin painallukselle. F-napin painalluksella pelaajan pitäisi siis pystyä jättämään 3D-objektin siihen paikkaan, mihin pelaajan katse osuu parhaillaan. Jotta pelaaja pystyy asettaa 3D-objekteja paikoilleen, pitää luoda aina uusi GameObject tyyppinen olio ja antaa sille lähes samat arvot ja komponentit, mitä jo piirretyllä peliobjektilla on. Luodaan uusi funktio PlaceObject, joka ottaa vastaan piirretyn objektin GameObject tyyppisenä oliona. Funktion sisällä lisätään nykyiseen piirrettävään 3D-objektin 26
32 peliobjektiin yhden uuden komponentin ja sen tagille arvo. Myös kyseisen objektin lapsiobjekteille lisätään komponentti MeshCollider Funktio lisää nykyiseen piirrettyyn 3D-objektiin uuden skriptin ja tagille arvon, ennen kuin se asetetaan kopioiksi uudelle GameObject tyyppiselle oliolle. Tämä uusi GameObject olio tulee edustamana paikallaan olevia objekeja peliympäristössä. Funktiossa käydään myös kaikki lapsiobjektit läpi, joille annetaan MeshCollider komponentti. Ilman kyseistä komponenttia on mahdotonta piirtää uutta 3D-mallia edellisen viereen. Funktion palautus asetetaan uuden GameObject olion arvoksi, jonka jälkeen peliympäristöön ilmestyy kopio piirretystä GameObjektista. Unityssä aina luotu uusi GameObject vastaa samaa asiaa, kuin peliin ilmestyisi uusi elementti kuten valo, musiikki tai objekti. Uudelle objektille asetetaan myös tag arvoksi Furniture. Uuden 3D-objektin luonnin jälkeen näytetään seuraavaa 3D-mallia. Funktio InitializeGameObject lukee seuraavan 3D-mallin ja piirtää sitä seuraavaksi. Tämä aiheuttaa myös sen, että kaikki viimeisen piirron aloittamisen jälkeen piirretyn 3D-objektin lisätyt komponentit ja muutokset lähtevät pois. Jos InitializeGameObjectia ei kutsuttaisi, PlaceObject funktion sisällä lisätyt komponetit säilyisi piirretyssä 3D-objektissa D-mallien suurentaminen ja suunnan vaihtaminen Laajennetaan Update funktio ottamaan myös huomioon muita napin painalluksia ja suorittamaan toiminnollisuuksia sitä kautta. Yksi näistä toiminnollisuuksista on vaihtaa kappaleen koko pienemmäksi ja suuremmaksi. Käyttäjän painaessa F1- tai F2-näppäintä, objektia skaalataan arvon verran pienemmäksi tai isommaksi. 27
33 Molemmat If-lauseet suorittavat ChangeObjectSize funktion, joka ottaa vastaan Vector3 olion. Piirretyn 3D-mallin kokoa skaalataan yksikön verran D-mallin pyörittäminen Toinen toiminnallisuus mitä pelaaja voi tehdä on pyörittää piirrettävää 3D-mallia myötä -tai vastapäivään. F3 ja F4 näppäimet vaihtavat Quaternion tyyppistä olion arvoa peliobjektista, joka kertoo mihin suuntaan kappale osoittaa. RotateObject vaihtaa piirretyn 3D-mallin suuntaan tietyn akselin suuntaan. Kuvassa peliobjektia pyöritetään Y-akselin suunnan mukaisesti Teleportaatio Pelaaja pystyy kerrostalo ympäristössä vaihtaa huonetta teleportaatiolla. Näppäin Z ja X vaihtava pelaajan paikkaan kerrostalon sisällä. Näin pelaaja voi halutessaan katsoa muita huoneita ja asettaa 3D-malleja. PlayerScript TeleportLocations taulukkoon on asetettu kerrostalo kohtauksessa useita eri peliobjektien (teleport) paikkoja talteen. Skripti siirtää pelaajan näiden peliobjektien paikalle. 28
34 Jos indeksi ylittää Teleport paikkojen määrän, asetetaan indeksi teleporttien paikkojen lukumäärän D-mallien fokusointi Seuraava toiminnallisuus mahdollistaa sen, että käyttäjä voi fokusoida jollakin tavoin jo asetettua peliobjektia. Tämä tarkoittaa sitä, että kun käyttäjä katsoo pelissä tiettyä jo asetettua 3D-objektia, tämän objektin väri vaihtuu indikoiden, että sinulla on fokus tähän objektiin. Silloin jos käyttäjä painaa T-näppäintä, peliobjekti poistetaan pelistä. Laajennetaan siis nykyistä ShootRayForObject funktiota siten, että tarkastellaan säteen osuessa, onko osumapiste jokin asetetuista huonekaluista. Tämä otettiin jo osittain huomioon aikaisemmin koodissa, kun käyttäjä asettaa 3D-mallin ympäristöön. PlaceObject funktio asettaa peliobjektille tagin arvoksi Furniture, joka kertoo, että kyseinen objekti on huonekalu. Säteen ampuma logiikka on laajennettu niin, että IF-lauseessa tarkastetaan, onko osumapisteen peliobjektin tagin arvo Furniture. Jos IF-lauseen ehto on tosi, vaihdetaan kohdeobjektin väriä. IF-lause tarkistaa onko säteen osumapisteen peliobjektin tagin arvo Furniture. Ehdon olleen tosi, noukitaan ylös tämä peliobjekti ja annetaan se parametrina funktiolle SetFocusToObject. Toinen parametri kertoo funktiolle annetaanko, vai otetaanko focus objektilta. 29
35 Otetaan myös huomioon, kun käyttäjä ei katso huonekalu objektia. Tällöin pitää kutsua SetFocusToObject funktiota uudelleen, ja antaa parametri arvona false. Toisen parametrin arvon ollessa false, se indikoi Fokus funktiolle ottamaan kyseisestä peliobjektista fokus pois, eli palauttaa kaikki edelliset värit takaisin paikalleen. SetFocusToObject funktiolla on vastuu asettaa fokus peliobjektille. Tämä tarkoittaa sitä, että funktio pitää tiedossa yhtä fokusoitua objektia kerrallaan muistissa. Funktio kutsuu annetun peliobjektin komponenttia ChangeMaterialScript, ja kutsuu metodia skriptistä, joka vaihtaa objektin väriä ChangeMaterialScript ChangeMaterialScript on skripti, jonka rooli on vaihtaa väriä asetetulle peliobjektille. Skriptin Start funktiossa kerätään ylös skriptiin linkitetyn peliobjektin materiaalit muistiin. Kun peliobjektia ei enää fokusoida, on hyvä tietää mitkä materiaalit on sitä ennen ollut käytössä ja asettaa ne takaisin peliobjektiin. Kun peliobjektia fokusoidaan ja sen värit vaihdetaan toiseksi, se tarkoittaa sitä, että sen materiaalia vaihdetaan toiseksi. Projektissa on materiaali nimeltään Maali-05, joka edustaa vaaleanpunaista väriä. Peliobjektia fokusoidessa, sen materiaali vaihdetaan materiaaliin Maali-05. ChangeMaterialScript Fokus funktio toteuttaa peliobjektin materiaalin vaihdoin ja takaisin asettamisen. Käydään peliobjektin kaikki lapsiobjektit läpi ja laitetaan Dictionary listaan muistiin avaimena objektin nimi ja sen arvoksi objektin materiaali. 30
36 Jos metodi saa parametrina arvon true, jokaiselle lapsiobjektille asetetaan materiaaliksi Maali-05. Muussa tapauksessa asetetaan materiaalin arvoksi alkuperäinen materiaali D-mallien poistaminen SetFocustoObject funktio asettaa globaalisen olion muistiin, mikä huonekalu on aina fokuksessa. Tämän 3D-mallin poistamiseen ei tarvita muuta kuin laajentaa Update funktiota tunnistamaan T-näppäimen painalluksen ja tarkistaa onko mitään objektia fokuksessa. Jos jonkin peliobjekti on fokuksessa, kutsutaan funktiota Destroy, joka kertoo Unitylle, että tämä peliobjekti halutaan poistaa pelistä. Jos If-lause on tosi, jokin objekti on nyt fokuksessa ja se poistetaan pelistä Käyttäjän omat 3D-mallit osaksi peliä 31
KODU. Lumijoen peruskoulu
KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
Ampumahiihto. Hiihto. Pelihahmon piirtäminen. Jos tahdot animoida hiihtämisen, Peli muodostuu kahdesta erilaisesta osasta: ensin
Ampumahiihto 1 Peli muodostuu kahdesta erilaisesta osasta: ensin hiihdetään ammuntapaikalle rämpyttämällä nuolinäppäimiä ja sen jälkeen yritetään ampua maalitaulut mahdollisimman nopeasti aikasakot välttäen.
Skype for Business ohjelman asennus- ja käyttöohje Sisällys
Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...
AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)
AUTOCAD-TULOSTUSOHJE Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit) 1. MODEL VS. LAYOUT Autocadista löytyy vasemmasta alakulmasta automaattisesti
Skype for Business ohjelman asennus- ja käyttöohje Sisällys
Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...
OpenOffice.org Impress 3.1.0
OpenOffice.org Impress 3.1.0 Sisällysluettelo 1 Esityksen luominen...1 2 Dian rakenne...2 3 Dian lisääminen, poistaminen, siirtäminen ja kopioiminen...3 4 Diojen koon muuttaminen...3 5 Pohjatyylisivut...4
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Johdatus ohjelmointiin
Johdatus ohjelmointiin EXAM tentin liitetiedostojen lataaminen, käyttäminen ja palauttaminen Kerro mahdolliset puutteet tai parannusehdotukset: pietari.heino@tut.fi Tällä sivulla on selitetty lyhyesti
Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007
Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi Word 2007 Perttu Suhonen 2008 Sisällysluettelo 1 Sisällysluettelon tekeminen...5 1.1 Monitasoinen numerointi...5 1.2 Otsikkotyylien
Scratch ohjeita. Perusteet
Perusteet Scratch ohjeita Scratch on graafinen ohjelmointiympäristö koodauksen opetteluun. Se soveltuu hyvin alakouluista yläkouluunkin asti, sillä Scratchin käyttömahdollisuudet ovat monipuoliset. Scratch
HP ProBook 430 G5 kannettavien käyttöönotto
HP ProBook 430 G5 kannettavien käyttöönotto Windows 10:n asennus, päivitysten tarkistus ja Abitti-asetukset Kytke tietokone verkkovirtaan ennen koneen käynnistämistä! Windows 10 Home käyttöjärjestelmän
KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA
KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota
Visma Fivaldi. Ohjeet Java web startin ja HTML5-työkalun aktivointiin
Visma Fivaldi Ohjeet Java web startin ja HTML5-työkalun aktivointiin Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri
Racket ohjelmointia II. Tiina Partanen 2015
Racket ohjelmointia II Tiina Partanen 2015 Sisältö 1) Peli I Yksinkertainen peli, jossa kerätään kohteita ja väistellään vaaroja Pitkälle viety koodi, johon täydennetään vain puuttuvat palat Ei tarvita
lizengo Asennusopas Windows: in kopioiminen
lizengo Asennusopas Windows: in kopioiminen Windows: in kopioiminen lizengo Asennusopas Klikkaa sitä Windows-versiota, jonka haluat kopioida USB-tikulle, niin pääset suoraan oikeaan oppaaseen. Windows
Comet pysäköintimittarin asennus ja kytkeminen tietokoneeseesi (Windows XP) USB-kaapelilla.
Comet pysäköintimittarin asennus ja kytkeminen tietokoneeseesi (Windows XP) USB-kaapelilla. HUOM! TÄMÄ OHJE ON COMET LAITTEEN ENSIMMÄISTÄ ASENNUSKERTAA VARTEN. Ladataksesi rahaa Comet pysäköintimittariisi
Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat & Niina Järvinen (muokattu )
Kuvaruudun striimaus tai nauhoitus Open Broadcaster Software V.20 Tero Keso, Atso Arat & Niina Järvinen (muokattu 28.11.2017) OBS 1 (12) Sisällysluettelo Mikä on OBS... 2 Ohjelman perusasetukset... 2 Tarvittavat
Kontrollilaitteet. Arsenaali
Arsenaali Kontrollilaitteet Tietokonepeleissä käytettäviä kontrollilaitteita on valtava määrä Kaikilla alustoilla, joilla pelejä pelataan on jokin vakio kontrolleri PC: Hiiri ja näppäimistö Konsolit: Controller
Salasanojen turvallinen tallentaminen KeePass ohjelmalla
Salasanojen turvallinen tallentaminen KeePass ohjelmalla KeePass on vapaasti saatavilla oleva, avoimen lähdekoodin ohjelma, jonka tarkoituksena on auttaa salasanojen hallinnassa. Tämä KeePass ohje on päivitetty
Kieliversiointityökalu Java-ohjelmistoon. Ohje
Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5
erasmartcardkortinlukijaohjelmiston
erasmartcardkortinlukijaohjelmiston asennusohje Sisällysluettelo 1. erasmartcard... 2 2. erasmartcard-ohjelmiston normaali asennus... 3 2.1. Ennen asennusta... 3 2.2. Asennus... 3 3. Muut asennustavat...
Skype for Business pikaohje
Skype for Business pikaohje Sisällys KOKOUSKUTSU... 2 ENNEN ENSIMMÄISEN KOKOUKSEN ALKUA... 4 LIITTYMINEN KOKOUKSEEN SKYPE FOR BUSINEKSELLA... 5 LIITTYMINEN KOKOUKSEEN SELAIMEN KAUTTA... 6 LIITTYMINEN KOKOUKSEEN
Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen
Näissä ohjeissa käydään läpi Microsoftin MS-DOS 6.22 -käyttöjärjestelmän asennus Microsoftin Virtual PC 2007 -virtuaalikoneeseen. Asennusta varten sinulla on oltava Virtual PC 2007 asennettuna tietokoneellasi
Osa 7: Hahmojen ohjelmointi ja hienosäätö
1 Osa 7: Hahmojen ohjelmointi ja hienosäätö Tässä luvussa käymme läpi perusohjelmoinnin alkeita. - Ensimmäisenä koduhahmon ohjelmointia. 1. Program -osiossa tapahtuu itse se koodin kirjoitus, missä määrätään
TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE
TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun
Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.
TEE KONEESTA CD-VARASTO: Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle. Siirrä cd-levysi TIETOJA Kopioi cd-levyt kiintolevylle levykuviksi, niin pääset sisältöön nopeasti käsiksi
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Sonera Yrityssähköposti. Outlook 2013 lataus ja asennus
Sonera Yrityssähköposti. Outlook 2013 lataus ja asennus Sisältö 1/14 Sonera Yrityssähköpostin käyttöönotto Outlook 2013 -sovelluksella SISÄLLYS Outlook 2013 asennuspaketin lataus... 2 Outlook 2013 asennus...
Versionhallintaa. Versionhallinnan käyttöönotto SAS ympäristössä
Versionhallintaa Versionhallinnan käyttöönotto SAS ympäristössä Sisältö Mitä on versionhallinta Rakenteet ja niiden oikeudet Repository Browserin käyttäminen Hakemistorakenteen luominen Metadatan tallettaminen
Adobe Premiere Elements ohjeet
Adobe Premiere Elements ohjeet 1. Käynnistä ohjelma kaksoisnapsauttamalla työpöydän kuvaketta. 2. Avautuvasta Elements-ikkunasa valitse a. New Project jos aloitat uuden videoeditoinnin. b. Open Project
Venekilpailu! Esteiden väistely ja hahmon ohjaaminen
Venekilpailu! Esteiden väistely ja hahmon ohjaaminen 1 Vaihe 1 Valmistelu Lataa Boat Race eli Venekisa -niminen projekti seuraavasta linkistä ja avaa Scratchissa (Online- tai Offline-versiossa): http://jumpto.cc/boat-get
Ohje sähköiseen osallistumiseen
Ohje sähköiseen osallistumiseen Kepan kevätkokouksessa käytetään Adobe Connect -sovellusta, joka mahdollistaa sähköisen osallistumisen kokouksiin. Kokoukseen osallistutaan henkilökohtaisella Adobe Connect
KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN
KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin
CLOUDBACKUP TSM varmistusohjelmiston asennus
Luottamuksellinen JAVERDEL OY CLOUDBACKUP TSM varmistusohjelmiston asennus Copyright 2 (9) SISÄLLYSLUETTELO 1 ASENNUSOHJE WINDOWS KÄYTTÖJÄRJESTELMÄLLÄ VARUSTETTUIHIN LAITTEISIIN... 3 1.1 Yleistä... 3 1.2
Ohje sähköiseen osallistumiseen
Ohje sähköiseen osallistumiseen Ilmoittautuminen Ilmoittautuminen tehdään sähköisesti sivulta; https://www.fingo.fi/meista/fingon-kokoukset/fingon-kevatkokous-2019 olevalla lomakkeella mielellään 18.4.2019
SYMBIANIN SERIES 60 JA PUHELIMEN PERUSTOIMINNOT
T-121.200 KÄYTTÖLIITTYMÄPSYKOLOGIA SYMBIANIN SERIES 60 JA PUHELIMEN PERUSTOIMINNOT Kirsi Männistö kmannist@cc.hut.fi T-121.200 Käyttöliittymäpsykologia 1 (7) Kirsi Männistö Sisällysluettelo 1 JOHDANTO...
Office 365 palvelujen käyttöohje Sisällys
Office 365 palvelujen käyttöohje Sisällys Sisäänkirjautuminen... 2 Office 365:n käyttöliittymä... 3 Salasanan vaihto... 5 Outlook-sähköpostin käyttö... 7 Outlook-kalenterin käyttö... 10 OneDriven käyttö...
Kodu Ohjeet. Jos päivityksiä ei löydy niin ohjelma alkaa latautumaan normaalisti.
1 Kodu Ohjeet Kodun käynnistys - Kodu peli kun on asennettu ja hienosäädetty omalle koneelle kohdilleen, niin sitten ei muutakuin pelaamaan / tekemään pelejä. Vihreästä Kodu kuvakkeesta pääset aloittamaan.
K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa)
K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa) Niko Rautava 2006 http://koti.mbnet.fi/nrautava Kannattaa ainakin kokeilla ensimmäisellä kerralla näiden ohjeitten mukaan, koska tässä
Sivu 1 / 11 08.01.2013 Viikin kirjasto / Roni Rauramo
Sivu 1 / 11 Kuvien siirto kamerasta Lyhyesti Tämän oppaan avulla voit: - käyttää tietokoneen omaa automaattista kopiointiin tai siirtoon tarkoitettua toimintaa kuvien siirtoon kamerasta tai muistikortista
CADS Planner Electric perusteet
CADS Planner Electric perusteet Aloitus Ohjelman avaaminen, alkuasetukset Tasokuvat piirretään aina Suunnitteluu tilaan oikeilla mitoilla. Kuvalle annetaan myös mittakaavatiedot tulostusta varten, sekä
Pikaohje LandNova simulaattorin käyttöön(tarkemmat ohjeet käyttöohjeessa ja mallinnusohjeessa):
Pikaohje -simulaattorin käyttöön(tarkemmat ohjeet käyttöohjeessa ja mallinnusohjeessa): 14.1 -simulaattori ei ole täysin yhteensopiva version 14.0 kanssa, tässä toimii mm. vgp-linjat, SBG-Geon formaatit
Kirjan toteutus BoD easybook -taittotyökalun avulla
Kirjan toteutus BoD easybook -taittotyökalun avulla Seuraavilla sivuilla esittelemme yksityiskohtaisesti, miten voit helposti ja nopeasti yhdistää kuvia ja tekstiä easybook -taittotyökalun avulla. Edellytykset
Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan
Aram Abdulla Hassan Windows Server 2012 asentaminen ja käyttö 1 Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan Hyper-V ohjelma. Riipu minkälaista Serveria yritämme
Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2
Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2 Sisällysluettelo Muutoshistoria...3 1 Johdanto...4 2 Palvelimen käyttöön tarvittavat ohjelmat...4 3 Palvelimelle kirjautuminen...4 4
TEHTÄVÄ 1.1 RATKAISUOHJEET
TEHTÄVÄ 1.1 RATKAISUOHJEET 1. Luo mallin mukainen kansiorakenne Käynnistä Resurssienhallinta painamalla näppäimistöltä peräkkäin Windows- ja E-näppäimiä niin, että Windows-näppäin on yhä pohjassa, kun
FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL
FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...
ASCII-taidetta. Intro: Python
Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu 24.10.2012
Purot.net Wiki Tutkielma Paavo Räisänen Centria Ammattikorkeakoulu 24.10.2012 Sisällysluettelo 1: Esittely 2: Perustaminen 3: Uuden sivun luonti 4: Kuvien lisääminen 5: Linkin lisääminen 6: Lopuksi 1:
Windows 10 käyttöjärjestelmän helppokäyttötoiminnot ja asetukset
Windows 10 käyttöjärjestelmän helppokäyttötoiminnot ja asetukset Windowsin asetukset on keskus, jossa voit mm. muuttaa tietokoneen näkemistä, kuulemista ja käyttämistä helpottavia helppokäyttötoimintoja.
elearning Salpaus http://elsa.salpaus.fi Elsa-tutuksi
elearning Salpaus http://elsa.salpaus.fi Elsa-tutuksi SISÄLLYSLUETTELO 1 MIKÄ ON ELSA, ENTÄ MOODLE?... 3 1.1 MITÄ KURSSILLA VOIDAAN TEHDÄ?... 3 2 KURSSILLE KIRJAUTUMINEN... 3 3 KURSSILLE LIITTYMINEN...
Työsähköpostin sisällön siirto uuteen postijärjestelmään
Työsähköpostin sisällön siirto uuteen postijärjestelmään edupori.fi/office 365 3.10.2013 Porin kaupunki ATK Tuki Sisällys Johdanto... 2 Edupori.fi sähköpostin määrittäminen Office 365:n Outlook-ohjelmaan
Ennen varmenteen asennusta varmista seuraavat asiat:
NAPPULA-VARMENTEEN ASENNUSOHJE 1/17 Suosittelemme käyttämään Nappulaa uusimmalla versiolla Firefox- tai Chrome- tai Applen laitteissa Safariselaimesta. Tästä dokumentista löydät varmenteen asennusohjeet
LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.
LIITE 1 1 HARJOITUS 1 Kitara Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. Käsiteltävät asiat Edit Poly Muokkaus kuvan mukaan TurboSmooth Extrude 1. Tarkistetaan että mittayksiköt
Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:
Tasohyppelypeli 1 Pelissä ohjaat liikkuvaa ja hyppivää hahmoa vaihtelevanmuotoisessa maastossa tavoitteenasi päästä maaliin. Mallipelinä Yhden levelin tasohyppely, tekijänä Antonbury Piirrä grafiikat Pelaajan
BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
1 Tivax siirto uuteen koneeseen
Tivax siirto uuteen koneeseen 1 1 Tivax siirto uuteen koneeseen 1.1 Tivax ohjelman asentaminen Huom. Siirrossa mahdollisesti esiintyvien ongelmien ratkaisu on veloituksetonta ainoastaan asiakkaille, joilla
2020 Fusion. What s New in Version 6? What s New in Version 6? 1 of Fusion
2020 Fusion What s New in Version 6? What s New in Version 6? 1 of 17 2020 Fusion Uusi 2020 Fusion 6 nopeuttaa ja helpottaa työskentelyäsi: Täysin uudistettu renderöinti Useiden tuotteiden muokkaus samalla
Windows 10 -käyttöohje
Windows 10 -käyttöohje Sisällys 1. Aloitus 3 1.1. Painikkeet 3 1.2. Haku 4 1.3. Aloitusvalikko ja ohjelmien kiinnitys 4 1.4. Tämä tietokone 5 1.5. Resurssienhallinta 5 2. Asetukset ja mukautus 6 2.1. Windowsin
ohjeita kirjautumiseen ja käyttöön
ohjeita kirjautumiseen ja käyttöön Kirjautumisesta Opiskelijat: kirjaudu aina tietokoneelle wilmatunnuksella etunimi.sukunimi@edu.ekami.fi + wilman salasana Opettajat: kirjaudu luokan opekoneelle @edu.ekami.fi
VERKKOVELHO-YLLÄPITOTYÖKALUN KÄYTTÖOHJE
VERKKOVELHO-YLLÄPITOTYÖKALUN KÄYTTÖOHJE 1. SISÄÄN KIRJAUTUMINEN Sisään kirjautuminen VerkkoVelho-ylläpitotyökaluun tapahtuu yrityksesi osoitteessa www.omaosoitteesi.fi/yllapito, esim. www.verkkovelho.fi/yllapito.
Epooqin perusominaisuudet
Epooqin perusominaisuudet Huom! Epooqia käytettäessä on suositeltavaa käyttää Firefox -selainta. Chrome toimii myös, mutta eräissä asioissa, kuten äänittämisessä, voi esiintyä ongelmia. Internet Exploreria
Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi)
Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi) Tietokannan hallinta-opintojakson selvitysraportti Huhtikuu 2010 Mediatekniikka ICT/Teknologia Tämän teosteoksen käyttöoikeutta koskee Creative
KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA
KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA Asennusohjeiden sisältö 1. RICA optimointiohjelmoinnin periaate isoftloaderilla... 2 2. RICA isoftloader toimituspaketin sisältö... 3 3. isoftloader Sync-ohjelmiston
Peliohjelmointi: Kontrollilaitteet. Teppo Soininen
Peliohjelmointi: Kontrollilaitteet Teppo Soininen Lähteet: Core Techniques and Algorithms in Game Programming, MSDN, www.xbox.com, www.playstation.com Arsenaali Tietokonepeleissä käytettäviä kontrollilaitteita
Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi.
SOSIAALINEN MEDIA Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi. FACEBOOK Facebook mahdollistaa useiden erilaisten Social plugins -toimintojen
JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++
JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.
Autentikoivan lähtevän postin palvelimen asetukset
Autentikoivan lähtevän postin palvelimen asetukset - Avaa Työkalut valikko ja valitse Tilien asetukset - Valitse vasemman reunan lokerosta Lähtevän postin palvelin (SM - Valitse listasta palvelin, jonka
Microsoft Visual Studio 2005
Microsoft Visual Studio 2005 on integroitu kehitysympäristö (Integrated Development Environment) eli (IDE). Kehitysympäristöön kuuluvat seuraavat keskeiset sovelluskehitysvälineet: Ohjelmointikielet C#.NET
Office 2013 - ohjelmiston asennusohje
Office 2013 - ohjelmiston asennusohje Tämän ohjeen kuvakaappaukset on otettu asentaessa ohjelmistoa Windows 7 käyttöjärjestelmää käyttävään koneeseen. Näkymät voivat hieman poiketa, jos sinulla on Windows
WINDOWS 10 -kurssi. petri.kiiskinen@wellamo-opisto.fi
WINDOWS 10 -kurssi petri.kiiskinen@wellamo-opisto.fi Yleistä kurssista Keskiviikkoisin 9.9. 30.9. (15 oppituntia) 16:45 20:00 (viimeinen kerta 16:45 19:15) Puolivälissä 15 minuutin kahvitauko Materiaali
Uuden työtilan luonti
Uuden työtilan luonti 1. Valitaan Uusi työtila vasemmanpuoleisesta valikosta 2. Valitaan Tyhjä työtila aukeavasta valikosta. Tämä toiminto luo uuden tyhjän työtilan. 3. Kun uusi työtila on luotu, aukeaa
Tiedostojen lataaminen netistä ja asentaminen
s. 1/5 Tiedostojen lataaminen netistä ja asentaminen Yleistä Internetissä on paljon hyödyllisiä ilmaisohjelmia, jotka voi ladata ja asentaa omalle koneelle. Osa ohjelmista löytyy suomenkielisiltä sivuilta,
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Pistelaskurin saamiseksi tarvitaan kaksi osaa: Laskuri, joka laskee pisteitä Olio, joka näyttää pisteet ruudulla Laskuri voi olla esimerkiksi tyyppiä
EASY Tiedostopalvelin - mobiilin käyttöopas
EASY Tiedostopalvelin - mobiilin käyttöopas ios www.storageit.fi - Äyritie 8 D, 01510 VANTAA Salorantie 1, 98310 KEMIJÄRVI Sisältö 1. Lataaminen ja asennus 2. Kansiot ja tiedostot Uusien tiedostojen luonti
KÄYTTÖOHJE. Servia. S solutions
KÄYTTÖOHJE Servia S solutions Versio 1.0 Servia S solutions Servia Finland Oy PL 1188 (Microkatu 1) 70211 KUOPIO puh. (017) 441 2780 info@servia.fi www.servia.fi 2001 2004 Servia Finland Oy. Kaikki oikeudet
Asiakirjojen ja valokuvien skannaaminen Canon Canoscan -skannerilla
Asiakirjojen ja valokuvien skannaaminen Canon Canoscan -skannerilla 1. Kytke skanneriin virta painamalla skannerin oikealla puolella olevaa virtakytkintä. 2. Avaa skannerin kansi. 3. Aseta valokuva/asiakirja
CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa
CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa Sisällys Laitteen käyttöönotto...3 Latauskehdon asennus...3 Tiedonsiirto-ohjelman asennus...4 Keräilylaitteen käyttö...5 Viivakoodien luku...5
CEM DT-3353 Pihtimittari
CEM DT-3353 Pihtimittari Sivu 1/5 CEM DT-3353 Pihtimittari Ongelma Mittarin ohjelmisto ilmoittaa NO DATA vaikka tiedonsiirtokaapeli on kytketty tietokoneen ja mittarin välille, mittarissa on virta päällä
Salasanan vaihto uuteen / How to change password
Salasanan vaihto uuteen / How to change password Sisällys Salasanakäytäntö / Password policy... 2 Salasanan vaihto verkkosivulla / Change password on website... 3 Salasanan vaihto matkapuhelimella / Change
Sähköposti ja uutisryhmät 4.5.2005
Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer
Apuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
Transkribuksen pikaopas
Transkribuksen pikaopas Transkribus on alusta, jolla voi puhtaaksikirjoittaa haluamaansa aineistoa ja automaattisesti tunnistaa käsinkirjoitettua tekstiä. Sitä käyttääkseen täytyy rekisteröityä. Tässä
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET. Pekka Ollikainen Open Source Microsoft CodePlex bio Verkkosivustovastaava Suomen Sarjakuvaseura
Se on sinussa. Virtuaalinen ja laajennettu todellisuus. Jari Kotola Sovelto Aamiaisseminaari Tampere
Se on sinussa. Virtuaalinen ja laajennettu todellisuus Jari Kotola Sovelto Aamiaisseminaari 31.3.2017 Tampere Jari Kotola Senior-konsultti, MCT IT-kouluttajana vuodesta 1995 Soveltossa vuodesta 2002 Tietotyö,
Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.
Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.2012 Hakemisto 1. Sivustot internetissä... 2 2. Yleistä... 2 3.
Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.
Yhden piirilevyn tietokone Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja sen toiminnoista. Sisällys Raspberry Pi Yleistä... 2 Teknistä... 2 Käyttöjärjestelmät... 4 Pelaaminen
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka Kristopher Vuorela UBUNTUN ASENNUS JA ALKEET 206101312 Linux järjestelmät Lukukausi: Kevät 2015 Työ valmistui: 15.04.2015
Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager
Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan
SSH Secure Shell & SSH File Transfer
SSH Secure Shell & SSH File Transfer TIETOHALLINTO Janne Suvanto 1.9 2002 Sisällysluettelo Sisällysluettelo... 1 Yleistä... 2 SSH Secure Shell ohjelman asetukset... 3 POP3 tunnelin asetukset... 6 Yhteyden
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
CTRL+F Android-sovellus
CTRL+F Android-sovellus Vili-Robert Hietala Opinnäytteen raportointi Sähköosasto Toukokuu 2015 KUVAILULEHTI 14.04.2015 Tekijä(t) Vili-Robert Hietala Työn laji Opinnäytteen raportointi Sivumäärä 7 Luottamuksellisuus
Mikä on Twitter? Rekisteröityminen
Mikä on Twitter? Twitter on suosittu yhteisö ja mikroblogipalvelu, jonka välityksellä yritykset, ystävät ja perheenjäsenet voivat kommunikoida keskenään. Twitterin käyttö vastaa kysymykseen mitä teet tällä