Koodaus kuriin ja projekti hallintaan!

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Koodaus kuriin ja projekti hallintaan!

Post by JATothrim »

Alkusanat: Juuri minä olen kenties hieman huono kirjoittaja juuri tähän aihepiiriin. (suuren typotus kertoimeni lisäksi) Tulen updatettamaan ja editoimaan tätä ensimäistä viestiä -useasti- koska aihe on varsin laaja. (ja typo kertoimeni). Kommetoijat saavat ehdottaa itsenäisiä kappaleita ja kohtia lisättäväksi. Mikäli kappale sopii, otan sen tähän (tulevaan) WOT:iin mukaan. Tämä ketju toimikoon kuin wiki, tarjoten eliittä tietoa ja kokemusta kaikille, jota kuka vain saa muokata. Johdatus+toiset puheet. Mutta kuitenkin: Aloitteliat avaavat CoolBasicin editorin kirjoittavat 'koodia' ja junttaavat F5 yli 9000 kN:n voimalla. Tästä seuraa MAV tai modattu copypasta jostain F8:n takaisesta koodista. Usean tunnin, minuutin ja mikrosekunnin jälkeen copypasta on kirjoitettu uudelleen ainakin 1337 kerran ja copypasta on saanut härpäkkeitä päälleen. Koodaaja toteaa, että riittää tältä 'päivältä' ja painaa ctrl+s, save, alt+F4, Exit tai Close. Tässä vaiheessa tulee ja pitäisi tulla yleensä öh? ilmiö. :!:

Koodin ja projektin tallentaminen.
Aloitteleva koodaaja on tehnyt juuri ensimmäisen erehdyksensä. Tietämättä siitä. Jokainen koodinpätkä on projekti. Mikä tahansa koodinpätkä on projekti. Tästä syystä tallentaminen olisi pitänyt tehdä jo ennen kuin yhtäkään riviä oli kirjoitettu. Tietty voi tuntua siltä, että smäihäishä-pika-mav koodeja ei kannata säilyttää, (näin voi ollakkin..) mutta ainakin itse henkilökohtaisesti suosittelisin säilyttämään ne. Itse olen viiden-neljän vuoden aikana hakannut tavuiksi ja biteiksi n. 40Mt koodia (plus varmaakin gigatavu luokkaa oleva liikenne kovon ja näppiksen välillä) joka on enemmän tai vähemmän hyödyllistä tavaraa. "Paras nauru on wanha mysteerimavkoodi" :) Nyt tuli siis selväksi, että koodin tallentaminen on yksi kriittisin ja tärkein vaihe mitä koodatessa pitää muistaa.

Nyt sitten viimein jotain käytännön asiaa. Minne tallennan lähdekoodini? Entä kaikki pelin käyttämät kuvat ja äänet? Tässä malli kansiorakenteesta, joka sopii CB peleille paremmin kuin hyvin:
--Pääkansio. Yleensä pelin mukaan nimetty. Pääkansion alla majailevat seuraavat alikansiot ja tiedostot:
----ReadMe.txt tekstitiedosto. Oikeastaan yksi tärkein asia mitä cb-pelin mukaan voi laittaa: Ohjeet pelin pelaamiseen ja kuka pelin on tehnyt.
----Game.exe suoritettavaksi ohjelmaksi käännetty peli.
----Ohjelman/pelin käyttämät DLL-tiedostot.
----Lähdekoodi.cb pelin lähdekoodi/sorsa. Valmiista pelistä, joka useimmiten pakataan .zip/.rar/.7z arkistoon, lähdekoodi on jätetty pois etteivät muut näe purkkaista koodiasi.
----Data tai Media alikansio(t), jonka alle pelin käyttämät kuvat, äänet, musiikki ja asetukset on tallennettu. Data tai media kansion alla on yleensä seuraavaa:
------Images kansio joka sisältää kaikki pelin kuvat.
------Sound kansio joka sisältää ääni efektit
------Music kansio joka sisältää pelin musiikin
------Maps tai Levels kansio joka sisältää pelin kentät ja ehkä myös lisä dataa jokaiselle kentälle.
------Asetustiedosto joka sisältää pelin asetukset, mm. valittu kokoruutu/ikkunoitu tila.
------Ennätystiedosto tai tallennustiedosto(t).
Kun siis aloitat uuden peli projektin tee uusi kansio pelillesi ja tallenna lähdekoodi välittömästi sinne, vaikka et olisi kirjoittanut vielä yhtään koodia. Tämä vaihe tulisi tehdä siksi, että F5-käännetyt ohjelmat tallentavat tuottamansa roinan oikeaan paikkaan. Itselläni CoolBasicin asennushakemistoon oli pesiytynyt tiedä mitä shmäidää... Kun lataat pelissä mediaa (mm. ääniä, kuvia) kopioi kuvat projektiisi ylempänä esitelyn kansiorakenteen mukaisiin paikkoihin. Tällä tavoin tiedät varmasti mistä olet lataamassa tiedostoja.
Pelisi etsii näet tiedostoja samasta kansiosta kuin mihin ohjelma on tallennettu, mikäli et muuta oletushakemistoa ChDir komennolla. (ks. myös CurrentDir() funktio) CB-ohjelmat käyttävät yleensä relatiivisia kansiopolkuja käsitellessään tiedostoja. Absoluuttinen kansiopolku tarkoittaa sitä, että levyaseman tunnus esiintyy polussa. Esimerkkinä: C:\, C:\Program Files ja E:\MunProjektit\CB\sadfgot.
Kun ohjelma käyttää relatiivisia kansiopolkuja, ei ohjelman tarvitse tietää millä levyasemalla, osiolla tai kansiossa se sijaitsee.
Jos pelisi on pieni, Data tai Media kansion alle ei kannata tehdä alikansioita, vaan simppelisti heität kaiken pelin käyttämän roinan sinne. Jos pelisi on minimalistinen, et tarvitse media tai data kansiota ollenkaan. Esittelemäni kansiorakenne on vain malli, eikä sitä tarvitse noudattaa pilkulleen.
Ja viimeinen vinkki: tallenna pelin pääkansio järkevään paikkaan. CoolBasicin asennushakemisto on yksi huonoista vaihtoehdoista.
Suunnittelu
(tulossa)
Projektin rakenteen hallinta.
(tulossa)
Version hallinta.
(tulossa)
-Edit: typo-countter--; (9.9.2010-19:16)
Last edited by Dibalo on Sun Oct 24, 2010 8:43 pm, edited 6 times in total.
Reason: DDL -> DLL
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Koodaus kuriin ja projekti hallintaan!

Post by TheDuck »

Fixaisitko lukuisat yhdys sana virheesi, kiitos?
^^
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Koodaus kuriin ja projekti hallintaan!

Post by JATothrim »

Mistä johtuu, että tähän aiheeseen ei ole tullut kuin yksi kommentti ja sekin on vain typo huomautus? Jos mainitsette typoista, sanokaa missä, niin korjaan ne. En todellakaan ole täydellinen kirjoittaja. ;)

Btw. olisiko kellään materiaalia/ideoita suunnittelu aiheeseen?
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Koodaus kuriin ja projekti hallintaan!

Post by Koodiapina »

JATothrim wrote:Mistä johtuu, että tähän aiheeseen ei ole tullut kuin yksi kommentti ja sekin on vain typo huomautus?
Tekstisi ei houkuta lukemaan. Ehdotan jäsentämään sen paremmin (lisäämään kappaleita/erottamaan ne selkeämmin toisistaan) ja poistamaan kaikki turhat jaarittelut ja "alkusanat".
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Koodaus kuriin ja projekti hallintaan!

Post by legend »

Jep, tylsää luettavaa. En jaksa lukea :| Eli mielenkiitoa tekstiin. Tee ohjelmoinnista hauskaa, älä masentavaa tekstin pänttäämistä.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Koodaus kuriin ja projekti hallintaan!

Post by axu »

JATothrim wrote:Btw. olisiko kellään materiaalia/ideoita suunnittelu aiheeseen?
Voisit lukaista kirjoittamani artikkelin CoolPalstalta (sivuaa aihetta).
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Koodaus kuriin ja projekti hallintaan!

Post by JATothrim »

legend wrote:Jep, tylsää luettavaa. En jaksa lukea :| Eli mielenkiitoa tekstiin. Tee ohjelmoinnista hauskaa, älä masentavaa tekstin pänttäämistä.
Skippaa höpinät. ;) Kaikkea ei ole pakko lukea. Olen jo maininnut, että ensimäinen viesti toimii wikin tavoin: kuka tahansa saa muokata sitä. Ilmoittakaa muutoksista minulle niin lisään/muokkaan ne postiin. Eli kirjoitat itse korvaavaa tai lisättävää materiaalia. Haussa on siis selkeästi paremmat höpinät "Koodin ja projektin tallentaminen." osion alkuun. Itse malliesimerki on itsestäni varsin onnutsunut ja toimivasti kerrottu. Huomatkaa todellakin että tämä ketju on vasta alkutekijöissään. :)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Post Reply