Andreas Remar

Introduktion - Om mig - Projekt - Curriculum vitae - Arbetsbetyg - Kontakt

Här kan du hitta en del av det som jag har programmerat genom åren, grupperat efter några olika perioder i mitt liv, i omvänd kronologisk ordning. Självklart så är senare perioder mer representativa för vad jag kan nu.

2007 - nu

Under den här perioden så minskade mitt programmerande på fritiden, dels för att jag 2007 blev far, och också för att jag hade heltidsarbete som programmerare. Men jag lyckades ändå programmera lite, även om projekten tog sig fram långsamt.

RemarBoy
Implementerat 2016-2017, kod på github

RemarBoy startade som en enkel disassembler till GameBoy, men har sedan växt i ambition. Tanken är att det ska bli en komplett miljö för att plocka isär ett GameBoy-spel i dess beståndsdelar (kod, grafik, ljud) för att sedan kunna modifiera dessa och sätta ihop delarna. Började först koda i Python, för att sedan gå över till Java, för att till sist gå över till C++ på grund av prestanda. Mycket av C++-koden för processorn genereras av ett Python-program.


Randomhack
Implementerat 2013-2016, Google Play-sida

Randomhack är ett enkelt rougelike (datorrollspel) för Android, och finns tillgängligt på Google Play. Det är implementerat i Java och använder sig av libgdx för abstraktion av grafik, ljud och touchinput. Det här är mitt första och enda kommersiellt utgivna spel. :-)


Castle of Elite DS
Implementerat 2010-2011, kod på github

Implementation av Castle of Elite till Nintendo DS. Implementerat i C++ och använder sig av Rage (se nedan).


Remar's Abstract Graphics Engine for Nintendo DS
Implementerat 2010, projektsida

Grafikabstraktion till Nintendo DS, med ett C++-interface, som gör det enklare att göra spel. Relativt simpel, tanken var att den stegvis skulle byggas på med bättre funktionalitet. Det här är ett av mina mer seriösa projekt som jag jobbat med på fritiden, Rage är väldokumenterat och har en ordentlig tutorial (genomgång av funktionaliteten).


Retrobattle
Implementerat 2007-2010, projektsida

NES-liknande retrospel implementerat i C++ till GNU/Linux. Använder sig av remar2d nedan för att hantera grafiken. Se projektsidan för mer information.


remar2d
Implementerat 2007-2010, hämta på github

Mycket simpel sprite-motor med tile-baserad bakgrund. Använder sig av TinyXML för att läsa in definitioner av sprites och bakgrunder som är kodade i XML. Implementerad i C++ i GNU/Linux och använder sig såklart av SDL.


LightsOut
Implementerat 2007, hämta här

Mitt första lilla projekt till Nintendo DS. Jag skaffade en DS-eXtreme 4 Gbit, och var självklart tvungen att prova att skriva program till DS:en. Det första resultatet blev denna mycket enkla version av Lights Out som bara går på ca 250 rader C-kod. Om du inte råkar ha en Nintendo DS med tillhörande flashbar kassett så finns det ett antal någorlunda fungerande emulatorer, jag rekommenderar NO$GBA.

2001-2006, Universitetsåren

Den här perioden är det tydligt att jag programmerar i skolan eftersom många av projekten som listas här är olika skolprojekt. Som man kan se på projekten så är det mycket som implementerats i Java, så jag har mycket erfarenhet av just Java.


No Friction
Implementerat 2005-2006, releasesida

No Friction är ett simpelt pusselspel implementerat i C++ till GNU/Linux. Det använder sig av SDL för att hantera grafiken och för att läsa av tangentbordet. No Friction implementerades först av Daniel Remar i Game Maker till Windows.

Till skillnad från de andra projekten i den här sektionen så gjordes det här helt på fritiden.


MDT - Modelica Development Tooling
Implementerat 2005-2006, projektsida

Modelica Development Tooling är mitt och Elmir Jagudins exjobb (D-nivå, 20 poäng, ca 800 timmar). MDT är en samling Eclipse Plug-Ins, implementerade i Java, som integrerar OpenModelica-kompilatorn med Eclipse. MDT tillsammans med OpenModelica-kompilatorn tillhandahåller en utvecklingsmiljö för att jobba med Modelica-projekt. När vi var färdiga med exjobbet så tog Adrian Pop, doktorand på IDA/PELAB vid LiU, över utvecklingen av MDT, och än idag används MDT på PELAB för utveckling av OpenModelica-kompilatorn.

Exjobbsrapporten kan hämtas här.


reMind
Vidareimplementerat 2003, projektsida

I kursen "Programutvecklingsprojekt i ett helhetsperspektiv, PUM projekt" så var jag med och vidareutvecklade ett verktyg för industriell optimering som utvecklats på Linköpings Universitet. I PUM-gruppen så var jag implementationsansvarig, och jag gjorde en stor del av implementationen. Jag hjälpte även arkitekturansvarig att ta fram en arkitektur för programmet, som till stor del fanns sen tidigare, men som mådde bra av att göras om till viss del.


Yukiawa
Implementerat 2003-2004, projektsida

Yukiawa är en klon av pusselspelet Puzzle Bobble. Det är implementerat i Java och gjordes som ett projekt i kursen "Programmeringsprojekt för Internet/WWW". Det här var nog en av de roligare kurserna på universitetet, eftersom det till skillnad från de flesta andra programmeringskurserna inte delades ut "skelett" som skulle fyllas i med kod. Istället så fick vi sitta och skriva en kort kravspec och sedan implementera ett nätverksspel från scratch. Det här projektet gjorde jag tillsammans med Elmir Jagudin.

Kursen var på 3.5 poäng (ca 140 timmar) men jag tror vi lade åtminstone det dubbla. Så fick vi ju en femma också.


L33t T3tri5
Implementerat sommaren 2001, hämtas här

Köpte den utmärkta boken (tyckte jag då) Tricks of the Windows Game Programming Gurus av André Lamothe, och funderade på vad jag skulle koda för spel. Funderade ett tag och hittade sen en sidaGameDev.net med en lista på olika spel man skulle implementera för att lära sig programmera spel, och överst på listan var ju självklart Tetris! Implementerade själva spellogiken på en dag, resten av funktionaliteten och finputsandet tog sisådär två månader. Då började jag förstå vad spelprogrammering gick ut på...
Implementerat i C (kanske lite C++-konstruktioner) till Windows/DirectX.

1997-2000, Gymnasietiden

På gymnasiet så får jag äntligen gå kurser i programmering, x86 assembler och C++. Jag hade fortfarande svårt att motivera mig själv till att lära mig dessa språk på egen hand, så det var bra att dessa kurser fanns. Jag har inget sparat av x86-programmeringen, men det känns inte så viktigt, det viktiga med assemblerprogrammering nu för tiden är att förstå på en lägre nivå hur en dator programmeras. Det mesta jag programmerar under den här tiden är C-program.


Combat Life
Implementerat 2000, hämtas här

Alla programmerare stöter nån gång på Conway's Game of Life, och fascineras såklart av dess eleganta enkelhet. Det här är en implementation som jag egentligen tänkte göra till nån sorts multiplayer-Life där olika stammar av Life-celler slogs mot varandra, men riktigt så långt kom jag aldrig. Men det är en solid implementation med editor för att kunna testa olika Life-mönster. Implementerat i C till MS-DOS.


Vertex Killer
Implementerat 2000, hämtas här

Inspirerad av Star Fox till SNES så försökte jag implementera min egen rymdskjutare i 3D. Men jag hade väldigt dålig koll på hur 3D fungerade, så det här är ett ganska lamt försök, men ändå lite kul att se. Även detta implementerat i C till MS-DOS.


Remfract
Implementerat 1999, hämtas här

På gymnasiet så var man ju tvungen att göra ett specialarbete, så jag såg till att mitt specialarbete skulle låta mig sitta och programmera. Jag skrev om fraktaler och implementerade en fraktalzoomare som kan zooma både Mandelbrot och Julia. Implementerat i C till MS-DOS.


Slide
Implementerat kring 1998, hämtas här

Enkel implementation av ett 15-pussel, mest för att jag ville använda ritprogrammet nedan för att göra några bitmaps. Implementerat i C till MS-DOS.


RawEdit
Implementerat kring 1998, hämtas här

Ett simpelt ritprogram för att pixla bitmaps som sen sparas i ett eget format. Kan flippa bilder både vertikalt och horisontellt! I princip alla bilder som finns i de andra projekten som implementeras kring den här tiden använder sig av RawEdit till grafiken. Implementerat i C till MS-DOS.


1992-1996, Förhistorien

Jag började programmera nån gång i mellanstadiet, och då var det såklart olika former av BASIC som gällde. Jag tror att jag började med GW-BASIC på en 286:a, men ganska snart började jag med det betydligt trevligare QBasic på pappas 386:a.

På den här tiden så fanns det programmeringsböcker för barn! Jag lånade en bok om BASIC på skolans bibliotek. Den hade massor med färgglada bilder och kodlistningar, vilken dröm! Jag har ingen aning om hur mycket jag lärde mig från den boken, och hur mycket jag lärde mig av att kolla runt i QBasics interaktiva hjälp-funktion, men jag lärde mig tillräckligt för att börja programmera väldigt enkla spel.

Det finns tyvärr inget sparat från den här tiden, det hade varit kul att titta på, mest för nostalgins skull i så fall. Det mest avancerade jag gjorde var en 3D-dungeon med vektorgrafik, men tyvärr får du aldrig se den. :-)