Näistä ei kannata vetää hernettä nenään, nämä on vaan villejä ideoita
joita ei oo pakko toteuttaa.

* Painotusta efekteille hyvin paljon! Esim: juostessa vähän aikaa
 eteenpäin kamera siirtyy lähelle tv-ruutua ja kenttä näkyy hoovosti
 perspektiivisesti
* Esim. yllämainitussa juoksumoodissa kentän blokkien fade to/from
 whitellä höystetty välähdys täysin 3D:eenä äkkiä. Välähdys voi olla
 synkronisoitu esim. ampumiseen tai tapahtumaan musiikin tahdissa tai
 molempiin.
* Myös se efekti missä vihulainen räjähtää pikseleiksi joita esittää
 3D-kuutiot ja kuutiot lentää TV-ruudulta ulos on posterisoitu ja
 pikselisöity. Näin saadaan lisää hauskaa moderniin tunnelmaan
 sekootettua retrotunnelmaa
* Efekti jossa kamera lävähtää yhtäkkiä vähäksi aikaa hyvin lähelle
 tv-ruutua tai vastaavasti kauas siitä
* jos dave kuoloo, se on game överi. jos dave kuitenkin kuoloo, niin
 voi pitää pohjas takaasinkelausnappia jolloon se palaa henkiin. siis
 ainoastaan jos kuollaan kun ei oo yhtään kaukosäätimen pattereita
 niin silloon se kuoloo oikiasti ja tuloo game over
* peli arpois randomilla sinne kenttiin hoopoja mitä ihmeellisimpiä
 itemeitä (enimmäkseen tv:n ja videonauhurien osia), ja toiset niistä
 olis harvinaisempia kun toiset. yleisiä itemeitä vois olla aika
 tiuhaankin mutta harvinaisempia vaan harvon.  sitten kun niitä
 poimii sieltä niin ne lisäytyy daven inventaarioon 12:50:23
 <@Apaksi> sitten davella olis RPG-pelien tapaan pari eri slottia
 joihin niitä voi pistää :P 12:50:31 <@Apaksi> yks olis aseslotti ja
 yks tai kaks jotain geneeristä slottia 12:50:40 <@Apaksi> jokaisella
 itemillä olis joku Juttu mitä se tekee 12:51:07 <@Apaksi> tuo voi
 kuulostaa vähän monimutkaaselta ja myös olla sitä, mutta mun
 mielestä vaan on hauska idea tuollaasten erilaasten peligenrejen
 sekoottaminen yhteen :p 12:52:28 <@Apaksi> vähän harvinaisemmat
 itemit vois esim. tehdä aseesta tehokkaamman, esim.  sellaasen että
 ammus ei lakkaa olemasta sen jälkeen kun sillä on osuttu jo yhteen
 vihulaiseen, tai joku vois antaa davelle lisää juoksunopeutta, jne.
 12:54:04 <@Apaksi> mutta ehkä tuo ei oo kovin tarpeellista. kunhan
 vaan tuli mieleen tuollaanenkin idea
* Taustalle 3D-avaruusalus med posterisaatio, pikselöinti, väriin
 feidaus & <insert se sana jonka Thykka sano>, hidas skrollaus,
 psykedeelinen planeetta kaukaisuuteen
* Tähtitaivas-moodi päälle
* Pelissä ei välttämättä tarvittis mennä läpi tiettyä määrää kenttiä
 kuten peleissä yleensä, vaan pitäis vaan kerätä kaikki tarpeelliset
 varaosat ja joku tietty Suuri Määrä pattereita ja sitten kun kaikki
 vaadittavat asiat on kasassa niin peli on läpi
* olis myös hauskaa jos: daves ei olis ollenkaan erillisiä kenttiä
 kuten kaikis tasohyppelypeleis on tapana, vaan se koko peli olis
 vaan yks iso kenttä. mutta sitte aina toisinaan tulis sellaanen
 kohta jossa selvästi näkyis että yks missio on saatu tehtyä ja ny
 alkaa seuraava ja siinä välis voidaan vaikka laskia pisteitä ja
 ladata pattereita ja odottelutauko jonka aikana se lataa uutta
 kenttää mutta niinku se itte pelin maisema jatkuis justiin samasta
 kohdasta mihin jäätiin
* Nopeuskenttiä, joissa musiikkina chippiversio Bombicanista, tai sen
 tapaanen, lupa täytyy kysyä Mafilta :P
* Ei tyypillisiä tasohyppelypelien aseita vaan ennemminkin Lieromaiset
 aseet
* Inventaario hoopoja tavaroita ja aseita jotka näkyy näytön jossain
 laidassa ja niiden välillä voi rullata jostain napeista
* Nopeuskenttiin demomainen efekti jossa näyttö vilkahtaa nopeasti
 valkoosena ja kentän blokit välähtää 3d:eenä
* Nopeuskentissä täytyy koskettaa kaikkia jotain kenttiin merkittyjä
 checkpointteja mahdollisimman äkkiä, joiden kohdalla efekti näkyy
* Nopeuskentissä musiikki on sidottu daven liikkeeseen, jos dave
 liikkuu täysillä eteenpäin niin musiikki soi normaalisti mutta jos
 täysillä taaksepäin niin sitte musiikki soi normaalinopeutta
 takaperin
* Main menuun missä näkyy 3D-skene taustamusiikiksi Kirahvi Nimeltä
 Tuike - Vaapukkamehulaulu sellaasenaan ilman chippimeininkiä, koska
 3D-skenessä ei mitään retromeininkiä näy muutenkaan (paljon)
* Kaikki muu olis 2Deetä mutta kaikki vihulaiset 3Deetä
* Vihulaiset olis ikäänkuin jotain örvelöitä jotka on teeveen lasin
 päällä yrittämässä haitata daven kulkua ja kun dave anpuu niitä
 niin se anmmus lentäis tv:n lasin ulkopuolelle ja niin vihut
 höyrystyis tai räjähtäis siitä tv:n lasin päältä 3deesti
* 2D-grafiikan pikseleissä olis joku efekti mikä korostais niiden
 pikselöityneisyyttä, esim. niillä olis hyvin terävät ääriviivat
* Kun joku liikkuva heebo kuoloo niin olis erilaisia efektejä miten
 se kuoloo, kuten että sen pikselit räjähtää taivaan tuuliin
 partikkeliefektinä 3deesti, ehkä riippuen millä lailla ne lahtaa
* Eri kentissä olis erilaisia pelimoodeja kuten sellaanen että joko
 joku olio ajaa davea takaa ja daven pitää päästä sitä pakoon tai
 että dave ajaa jotain oliota takaa, tai lipunryöstö tai jotain muuta
* Davella olis inventaario eli erilaisia tavaroita mitä se on haalinu
 kentistä ja ne sitten seurais sen mukana jollain tavalla ruudulla
 kun se kävelöö ja niitä vois käyttää aina tarpeen vaatiessa
* Kentän blokit muuttuis paikka paikoin aina alle sekunniksi
 3D-kuutioiksi ja kameran kuvakulma vaihtuis jotenkin, kun jotain
 Hoopoa tapahtuu
* 3D-töllön kallistuminen aina daven juoksusuunnan mukaan sekä hypystä
 alas tullessa tärähdys. Vihulaasten tai Daven ottaessa damagea myös
 joku.
* Pomppiminen eri layerien välillä, mahdollisesti myös "zoomaa"
 ainoastaan näkyvään layeriin. (taustalayerille siirryttäessä
 nykyinen päälayer häviää ja taustalayer siirty eteen...)
* Hoopoja aseita kuten sahkoaita joka viritetaan kahden seinan valille
* Mitä jos Dave oliskin 3D-äeiä jonka modelista olis 8 eri versiota
 animaation välivaiheiden määrän mukaan ja se vaan olis pikselöity
 näyttämään 2D:ltä? Sitte vois tehdä esim. hyvin hoopoja
 Daveenzoomausefeketjä. Kaiken kukkuraksi olis hoopoa jos se ei olis
 pikselöity vaan se oliskin kuutioitu. Eli Dave olis approksimoitu
 erivärisiksi kuutioiksi ja ne sitten näkyis hoovosti
 zoomattaes. Tähänhän on jo melkeen valmis algoritmikin olemas
 Pixels2Cubes-luokassa.
* Pikselikkäät roottorikkaat partikkeliefektit

Dave the ordinary spaceman resembles a basic platform game,
but with a twist. It has nice features like a remote control
for freezing and rewinding time, a quite familiar gui for the
menu ;) ... And a couple of useful accessories... Dave is
made in the spirit of oldskool platformers.
cmake_minimum_required(VERSION 2.0)
PROJECT (dave)

IF ( NOT CMAKE_BUILD_TYPE )
  SET( CMAKE_BUILD_TYPE Debug )
  MESSAGE( STATUS "Setting build type to '${CMAKE_BUILD_TYPE}'" )
ELSE ( NOT CMAKE_BUILD_TYPE )
  MESSAGE( STATUS "Build type set to '${CMAKE_BUILD_TYPE}' by user." )
ENDIF ( NOT CMAKE_BUILD_TYPE )

SET( CMAKE_CXX_FLAGS_DEBUG "-g -Wall" CACHE STRING
   "Flags used by the C++ compiler during maintainer builds."
   FORCE )
SET( CMAKE_C_FLAGS_DEBUG "-g -Wall" CACHE STRING
   "Flags used by the C compiler during maintainer builds."
   FORCE )
SET( CMAKE_EXE_LINKER_FLAGS_DEBUG
   "-Wl" CACHE STRING
   "Flags used for linking binaries during maintainer builds."
   FORCE )
SET( CMAKE_SHARED_LINKER_FLAGS_DEBUG
   "-Wl" CACHE STRING
   "Flags used by the shared libraries linker during maintainer builds."
   FORCE )

#SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")

FIND_PACKAGE(OpenGL REQUIRED)
FIND_PACKAGE(SDL REQUIRED)
FIND_PACKAGE(SDL_image REQUIRED)
FIND_PACKAGE(SDL_mixer REQUIRED)

#FIND_LIBRARY(LIB3DS_LIBRARY 3ds)

SET(SOURCES
       analog_effects.cpp
       image.cpp
       library.cpp
       opengl.cpp
       fellow.cpp
       game.cpp
       level.cpp
       teletext.cpp
       editor.cpp
       ability.cpp
       model.cpp
       remote.cpp
       kdtree.cpp
       lib3ds/atmosphere.c
       lib3ds/background.c
       lib3ds/camera.c
       lib3ds/chunk.c
       lib3ds/ease.c
       lib3ds/file.c
       lib3ds/io.c
       lib3ds/light.c
       lib3ds/material.c
       lib3ds/matrix.c
       lib3ds/mesh.c
       lib3ds/node.c
       lib3ds/quat.c
       lib3ds/shadow.c
       lib3ds/tcb.c
       lib3ds/tracks.c
       lib3ds/vector.c
       lib3ds/viewport.c
       )

SET(SOURCES2
       teletext_editor.cpp
       image.cpp
       library.cpp
       teletext.cpp
       )


INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
SET(EXTRA_LIBS ${OPENGL_LIBRARIES} ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY})


IF (APPLE)
       SET(SOURCES ${SOURCES} SDLMain.m)
       SET(SOURCES2 ${SOURCES2} SDLMain.m)
       SET(MACOSX_BUNDLE_BUNDLE_NAME "Dave the Ordinary Spaceman")
       SET(MACOSX_BUNDLE_ICON_FILE daveico.icns)
ELSE (APPLE)
       FIND_LIBRARY(GLEW_LIBRARY GLEW)
       SET(EXTRA_LIBS ${EXTRA_LIBS} ${GLEW_LIBRARY})
ENDIF (APPLE)

ADD_EXECUTABLE(dave WIN32 MACOSX_BUNDLE ${SOURCES})
ADD_EXECUTABLE(editor WIN32 MACOSX_BUNDLE ${SOURCES2})

TARGET_LINK_LIBRARIES( dave ${EXTRA_LIBS} )
TARGET_LINK_LIBRARIES( editor ${EXTRA_LIBS} )

IF(APPLE)
       FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dave.app/Contents/Resources)
       ADD_CUSTOM_TARGET(resource_copy_graphics COMMAND  cp -Rf ${CMAKE_CURRENT_SOURCE_DIR}/graphics ./dave.app/Contents/Resources)
       ADD_CUSTOM_TARGET(resource_copy_levels COMMAND  cp -Rf ${CMAKE_CURRENT_SOURCE_DIR}/levels ./dave.app/Contents/Resources)
       ADD_CUSTOM_TARGET(resource_copy_audio COMMAND  cp -Rf ${CMAKE_CURRENT_SOURCE_DIR}/audio ./dave.app/Contents/Resources)
       ADD_CUSTOM_TARGET(resource_copy_misc COMMAND  cp -f ${CMAKE_CURRENT_SOURCE_DIR}/dave.conf.sample
               ${CMAKE_CURRENT_SOURCE_DIR}/original_media/daveico.icns ./dave.app/Contents/Resources/)
       ADD_CUSTOM_TARGET(install_frameworks COMMAND  tar -xzf ${CMAKE_CURRENT_SOURCE_DIR}/osxframeworkit.tgz)
       ADD_DEPENDENCIES(dave resource_copy_graphics resource_copy_levels resource_copy_audio resource_copy_misc install_frameworks)
ENDIF(APPLE)

Myös liikkuville äi'ille pitää tehdä tuki ynnä muulle.
Speksi näyttää jo RLE-pakattua vaihtuvabittistä vaikka ny käytetään vasta rawia.

esimerkki  looppaavuus  mikä?                      tyyppi
---------  -----------  -----                      ------

Dave                    magic                        4 tavua
LV2                     pakkaustyyppi                3 tavua
5 | 128                 layereiden määrä+lisäleiskat unsigned char
2                   {   layerin numero               unsigned char
123                 .   layerin leveys               unsigned short
234                 .   layerin korkeus              unsigned short
8_empty           { .   blokin nimi                  \0-loppuinen merkkijono
8_obscured        . .
empty             . .
8_kivi2           } .                                max alle 65536 kpl
0                   .   erotin                       char
00000000          { .   blokki tyyppiä 0             unsigned char
00000001          . .   tyyppiä 1                    unsigned char
00000010          . .   tyyppiä 2                    unsigned char
01111111          . .   isompi kun 127               unsigned char
0xABBA            . .   tyyppiä 0xabba               unsigned short
00000001          . .   tyyppiä 1                    unsigned char
10000010          . .   tyyppiä 2 ja RLE-markkeri    unsigned char
234               . .   234 kappaletta em. tyyppiä   unsigned char
11111111          . .   >127 ja RLE-markkeri         unsigned char
0xCAFE            . .   tyyppiä 0xcafe               unsigned short
120               } }   120 kappaletta em. tyyppiä   unsigned char

Formaatteja:
RAW - ei layereita, 16-bittinen, ei RLE:tä
LVR - layerit, 8&16-bittinen, RLE-pakkaus
LV2 - nykyinen
Check known_bugs.txt if Dave doesn't run properly or at all.

The keyboard image is made by Wikipedia user Mysid and
is under GNU Free Documentation license.
> solve({y1=a*x1^2+b*x1+c, y2=a*x2^2+b*x2+c, y3=a*x3^2+b*x3+c}, {a,b,c});
                                                             2        2        2           2        2        2
    -x1 y2 + x1 y3 + x3 y2 + x2 y1 - x2 y3 - x3 y1        -x1  y2 + x1  y3 + x3  y2 - y3 x2  + y1 x2  - y1 x3
{a = ----------------------------------------------, b = - ----------------------------------------------------,
                          %1                                                       %1

                2     2           2           2           2                 2
       -y3 x1 x2  + x1  x2 y3 + x3  x1 y2 - x3  x2 y1 - x1  x3 y2 + y1 x3 x2
   c = ----------------------------------------------------------------------}
                                         %1

           2        2        2        2        2        2
%1 := -x1 x2  + x1 x3  + x3 x2  + x2 x1  - x2 x3  - x3 x1
To compile Dave the ordinary spaceman you need to:

Linux:
       install:
               cmake
               make, gcc and all the usual building stuff
               sdl-headers, sdl_image-headers and sdl_mixer-headers
               GLEW-headers

               in ubuntu just say: sudo apt-get install build-essential cmake libsdl-dev \
               libsdl-mixer1.2-dev libsdl-image1.2-dev libglew-dev

       say "cmake . && make" then start the game saying "./dave"


OS X:
       install:
               cmake from http://www.cmake.org/
               xcode/developer tools
               sdl, sdl_image and sdl_mixer -frameworks from http://libsdl.org/ or included osxframeworkit.tgz

       say "cmake . && make" then start the game saying "open dave.app"


Win32:
       Install:
               MinGW from http://www.mingw.org/
               sdl, sdl_image and sdl_mixer (with headers suitable for mingw)
               glew (with headers suitable for mingw)

       start win32/windowskaeaentoe.bat and hope for the best
Dave might not run properly (or at all) with some video cards, however you may
try to fix this by modifying the "dave.conf" -file. It is recommended that you
change the following options one at a time until Dave works properly.

teletext_mipmap off
- Use this if you can't see the main menu or the HUD. Especially for ATI's
 gfx-cards

simple_shaders  on
- If Dave does not run at all, this might fix it

shaders off
- This usually makes Dave run but it'll disable all effects and make Dave
 look quite bland :(

fbo     off
- if your gpu doesn't support frame buffer objects

vbo     off
- if your gpu doesn't support vertex buffer objects