Permalänk
Medlem

Göra enkelt bibliotek i C++

Hej!
Jag har precis börjat läsa spelutveckling - programmering på högskolan och vi har som uppgift att skriva ett (välskrivet) litet bibliotek på minst 8 klasser spridda över 4 komponenter. Men jag har idétorka!
Jag kommer bara på alldeles för lätta saker. Jag har funderat på att göra ett slumpbibliotek och ett sorteringsbibliotek. Men jag tror inte att någon av dom idéerna skulle kräva 8 klasser.

Jag behöver helt enkelt hjälp med att komma på saker jag skulle kunna göra!
Någon som har några förslag?
Alla bidrag är välkomna!

Permalänk
Medlem

Håller ni på med grafikprogrammering än? Du skulle ju kunna göra ett litet toolkit med egna komponenter som knappar, checkboxes mm.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

edit: i c++ var det ja... nu ser jag. så ignorera "val av språk"-referenserna. Men förslagen kan vara relevanta ändå...

Vektorbibliotek (2d och/eller 3d) med de nödvändiga operationerna

Loggningsbibliotek. Enkla funktioner för att skriva till logg, loggnivåer, exceptionlog mm. Så när man väl börjar koda så kan man enkelt använda färdig funktionalitet för att logga sånt som går fel

Beroende på vilken väg ni skall gå (val av språk, arkitektur etc) så kan det vara intressant med bibliotek för t.ex. IO (förenkla läsa/skriva filer mm), bild-IO (skriva och läsa t.ex. png och/eller jpg). Vad jag menar är att i vissa situationer är sådant givet och tillgängligt. Om inte är det något man vill ha.

En ambitiös men rolig sak kan ju vara virtuellt filsystem likt pak som quake etc har.

GUI-komponenter som teknocide nämnde är också bra men kan bli hur ambitiöst som helst.

Andra, lösryckta tankar: Nätverksbibliotek, AI bibliotek, checksummor, komprimering, ...

Mycket är mer omfattande än du antagligen vill ge dig in på, utan jag gissar att ambitionsnivån ligger på enklare bibliotek t.ex. slumptal, io, vectormatte etc. Men bara så du har något att spåna vidare kring...

Visa signatur

Crap.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Håller ni på med grafikprogrammering än? Du skulle ju kunna göra ett litet toolkit med egna komponenter som knappar, checkboxes mm.

Vi har bara gjort ett mindre spel i en tidigare kurs. Då använde vi ett bibliotek som våran föreläsare hade skrivit. Så jag har aldrig riktigt använt något sådant innan. Har pillat lite med opengl och glut också. Men inte heller det är ju så jätte avancerat

Citat:

Ursprungligen inskrivet av Morr
edit: i c++ var det ja... nu ser jag. så ignorera "val av språk"-referenserna. Men förslagen kan vara relevanta ändå...

Vektorbibliotek (2d och/eller 3d) med de nödvändiga operationerna

Loggningsbibliotek. Enkla funktioner för att skriva till logg, loggnivåer, exceptionlog mm. Så när man väl börjar koda så kan man enkelt använda färdig funktionalitet för att logga sånt som går fel

Beroende på vilken väg ni skall gå (val av språk, arkitektur etc) så kan det vara intressant med bibliotek för t.ex. IO (förenkla läsa/skriva filer mm), bild-IO (skriva och läsa t.ex. png och/eller jpg). Vad jag menar är att i vissa situationer är sådant givet och tillgängligt. Om inte är det något man vill ha.

En ambitiös men rolig sak kan ju vara virtuellt filsystem likt pak som quake etc har.

GUI-komponenter som teknocide nämnde är också bra men kan bli hur ambitiöst som helst.

Andra, lösryckta tankar: Nätverksbibliotek, AI bibliotek, checksummor, komprimering, ...

Mycket är mer omfattande än du antagligen vill ge dig in på, utan jag gissar att ambitionsnivån ligger på enklare bibliotek t.ex. slumptal, io, vectormatte etc. Men bara så du har något att spåna vidare kring...

Här var det många idéer! IO-bibliotek låter faktiskt som ett ganska lagom stort projekt! Dom andra tror jag blir lite för omspännande. Men det kanske blir något för framtiden.
Tack så mycket för era förslag!

Är det någon som har något mer att komma med så vore det kanon!

Permalänk
Medlem

Egen effektiv minnesallokator. Många spel använder sig av egna allokatorer för effektiv användning av minnet. Default allocatorn är ganska allmän och fragmenterar och kostar en hel del att exekvera vilket kan flaska i ett spelprojekt.

Jag kan rekommendera Game Engine Architecture av Jason Gregory (programmerare på Naughty Dog).

http://www.gameenginebook.com/

Visa signatur
Permalänk
Medlem

en egen vectorklass som ovanstående föreslog tror jag kan vara givande då du lär dig lite vektoralgebra vilket är bra att kunna även en egen template container kan vara intressant att prova göra tror jag

Visa signatur

i7 14700k, 32gb ram, massa lagring, Windows 11, Fractal Design North
Citera så jag hittar tillbaka :)

Permalänk

Socket-lib designat för multiplayerspel kanske? Ett projekt där man själv kan välja komplexitetsnivå.

Visa signatur

Min dator är bättre än din.

Permalänk
Medlem

vilken skola går du på? det var inte soogl ni använde?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av wizzler
Egen effektiv minnesallokator. Många spel använder sig av egna allokatorer för effektiv användning av minnet. Default allocatorn är ganska allmän och fragmenterar och kostar en hel del att exekvera vilket kan flaska i ett spelprojekt.

Jag kan rekommendera Game Engine Architecture av Jason Gregory (programmerare på Naughty Dog).

http://www.gameenginebook.com/

Hm, det låter komplicerat. Jag ligger lite efter i mitt tänkta schema. Så jag vet inte riktigt om jag kommer hinna sätta mig in i det så mycket.
Det behöver vara ganska simpelt, men ändå tillräckligt klurigt för att möta kraven för uppgiften.

Citat:

Ursprungligen inskrivet av E_maN
en egen vectorklass som ovanstående föreslog tror jag kan vara givande då du lär dig lite vektoralgebra vilket är bra att kunna även en egen template container kan vara intressant att prova göra tror jag

Jag har faktiskt gjort en egen vektorklass (Om du inte menar en containerklass). Läser en linjär algebra kurs parallellt med den här kursen
En template container, vad innebär det? En egen containerklass helt enkelt?

Citat:

Ursprungligen inskrivet av Tungviktarn
Socket-lib designat för multiplayerspel kanske? Ett projekt där man själv kan välja komplexitetsnivå.

Jag har faktiskt aldrig hållit på med nätverksprogrammering. Det skulle kunna vara lärorikt!

Citat:

Ursprungligen inskrivet av Dalton Sleeper
vilken skola går du på? det var inte soogl ni använde?

Högskolan i Skövde. Nope, inte soogl. VGC VirtualGameConsole heter föreläsarens grafikbibliotek.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av poXoZ
Hm, det låter komplicerat. Jag ligger lite efter i mitt tänkta schema. Så jag vet inte riktigt om jag kommer hinna sätta mig in i det så mycket.
Det behöver vara ganska simpelt, men ändå tillräckligt klurigt för att möta kraven för uppgiften.

Jag har faktiskt gjort en egen vektorklass (Om du inte menar en containerklass). Läser en linjär algebra kurs parallellt med den här kursen
En template container, vad innebär det? En egen containerklass helt enkelt?

Jag har faktiskt aldrig hållit på med nätverksprogrammering. Det skulle kunna vara lärorikt!

Högskolan i Skövde. Nope, inte soogl. VGC VirtualGameConsole heter föreläsarens grafikbibliotek.

vector som i inte en container klass, en template container är en container ja som håller vad som helst, fast det antar jag din gjorde?

en matematisk vektor, sån du använder för förflyttning och riktning inom spel. är ju lite längd med pythagoras sats och normalisering och sånt att räkna på med funktioner, fast det blir ju inte så många klasser av det http://emweb.unl.edu/math/mathweb/vectors/vectors.html

Visa signatur

i7 14700k, 32gb ram, massa lagring, Windows 11, Fractal Design North
Citera så jag hittar tillbaka :)

Permalänk
Medlem

c++? Testa att pilla med Garbage collection? (finns tämligen triviala sådana som räknar pekare och så.)

Datastrukturer? Datum/Tid?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av E_maN
vector som i inte en container klass, en template container är en container ja som håller vad som helst, fast det antar jag din gjorde?

Ne, jag menade också matematiska vektorer!
Hade kryssprodukt, normalisering osv..

Citat:

Ursprungligen inskrivet av Kejsarn
c++? Testa att pilla med Garbage collection? (finns tämligen triviala sådana som räknar pekare och så.)

Datastrukturer? Datum/Tid?

Japp, c++.

Datum/tid?
Skulle du vilja utveckla?

Permalänk
Medlem

Typ:

Klass Datum, DatumTid (dagar mellan, måndar mellan, tid till osv), kalender (generera för Gregorian/Hebrew/osv). Finns väl massa kul man kan göra med datum.

Annars är väl det enklaste?

Lista, LänkadLista, ArrayLista, OrdnadLista, Dictonary (Map), HashMap, TreeMap, Set, HashSet, TreeSet?

Permalänk
Avstängd

Kanske vore det bra med vector klass, för då får du implementera linjär algebra kunskaperna. Du pluggar lin alg om du gör en sån klass?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Kejsarn
Typ:

Klass Datum, DatumTid (dagar mellan, måndar mellan, tid till osv), kalender (generera för Gregorian/Hebrew/osv). Finns väl massa kul man kan göra med datum.

Annars är väl det enklaste?

Lista, LänkadLista, ArrayLista, OrdnadLista, Dictonary (Map), HashMap, TreeMap, Set, HashSet, TreeSet?

Okej! Det låter som något man dessutom skulle ha ganska stor användning för senare!
M, dubbellänkade listor har jag gjort ett antal gånger innan jag lärde mig att det redan fanns färdiga (så som list) haha kände mig väldigt dum när jag kom över den informationen

Citat:

Ursprungligen inskrivet av saddam
Kanske vore det bra med vector klass, för då får du implementera linjär algebra kunskaperna. Du pluggar lin alg om du gör en sån klass?

Jag har redan gjort en vektorklass. Vet inte riktigt hur jag skulle göra ett tillräckligt stort, användbart, bibliotek utav den.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av poXoZ
Jag har redan gjort en vektorklass. Vet inte riktigt hur jag skulle göra ett tillräckligt stort, användbart, bibliotek utav den.

Utöka den att använda alla möjliga CPU-extensions som finns (MMX,SSE* osv).
Sen zoomar du ut och skriver en klass som har hand om 3D-modeller (som naturligtvis kommer ha nytta av vektorklassen).
Och efter det så skriver du en/flera klass(er) som har hand om en 3D-värld. Den kommer ha nytta av både din modellklass och din vektorklass.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av poXoZ

Jag har redan gjort en vektorklass. Vet inte riktigt hur jag skulle göra ett tillräckligt stort, användbart, bibliotek utav den. [/B]

Det är inga problem att göra ett tillräckligt stort bibliotek Om du är intresserad av robotar så kan du väl skriva ett bilbliotek som transformarar t ex en femaxlig robot. Flytta "punkten" (x,y,z) till (x1,y1,z1).

Jag själv gjort detta för ca tjugo år sedan - har tyvärr glömt det mesta nuförtiden

Visa signatur

OS: FreeBSD, Ubuntu, Raspbian, iOS, OSX
HW: PC, Mac & iPrylar

Permalänk
Medlem

AVL-träd och Huffmankodning! Roligt värre!

Visa signatur

Crap.

Permalänk

Eftersom att du inte har pluggat datorspelsutveckling och c++ allt för länge tycker jag att det verkar vettigt att skippa de mer avancerade ämnena och fokusera på grunderna som du sedan kan spara och använda i egna projekt senare.

I spelprogrammering används dessa väldigt ofta:

State-machines <- kan du göra antingen en speciell för gamestates eller en template baserad som du kan använda till många olika maskinimplementationer.
Timer <- Finns ingen direkt sådan i C++ utan du får skriva ihop själv, snabbt och lärorikt. Väldigt användbart

Vektor / Matris bibliotek. Typ vektor 2 -> 4 och matrix4x4

sen kanske även en grund för resurshantering kanske kan vara nyttigt. Så att du lätt kan ladda in resurser i projekt.

Om du gör dessa har du 4 olika komponenter som består av kanske 10 klasser till att börja med. Och de går lätt att bygga ut om du vill det.

Permalänk
Medlem

Tack så mycket för alla svar!
Jag trodde aldrig att det skulle vara så många intresserade!

Jag har bestämt mig för att jag ska göra ett bibliotek som har hand om
Tid, Slumpgenerering, Sortering och fil-I/O
Min skapelse ska heta TRIOS (Time, Random, I/O,Sort)
Det lutade åt RIOST först, men jag tyckte att för mycket som rivost

Tror ni att det blir bra? någon som har några invändningar?
Kan ju tillägga att jag inte är allt för erfaren programmerare. Det var lite därför jag försökte undvika saker som lät allt för svåra i mina öron (så som egen minnesallokator och AI-bibliotek )