Project4 - Follow the development of a new game


Coming along very nice! I see there's a new enemy type.


Also, I was going to ask how you "dimmed" the screen on the score given there's no alpha functions in Sparrow, but I've just had the look at the source, neat trick.


Well done. Looking forward to giving this a better play when I get home :p


Oh, it just crashed on me. I was moving to the bottom right hand corner. I think there were two laser opponents and a spikey onscreen; but I can't be certain
 
Tried to compile this for 64 bit linux, getting segfaults from sparrow font stuff, will contact Ziz.


Here's my CMakeLists.txt if anyone else wants to try :) :



Code:
cmake_minimum_required(VERSION 2.6)

project(Project4)

find_package(SDL REQUIRED)

find_package(SDL_ttf REQUIRED)

find_package(SDL_image REQUIRED)

include_directories(sparrow3d src ${SDL_INCLUDE_DIR})

file (GLOB SRCS src/*.cpp)

file (GLOB SPARROW3D_SRCS sparrow3d/sparrow*.c sparrow3d/Sparrow*.c)

add_library(sparrow3d ${SPARROW3D_SRCS})

add_executable(Project4 ${SRCS})

target_link_libraries(sparrow3d ${SDL_LIBRARY} ${SDLTTF_LIBRARY} ${SDLIMAGE_LIBRARY})

target_link_libraries(Project4 sparrow3d)

install(TARGETS Project4 DESTINATION build/)

install(TARGETS sparrow3d DESTINATION build/)

install(DIRECTORY build DESTINATION .)
 
Tried to compile this for 64 bit linux, getting segfaults from sparrow font stuff, will contact Ziz.


Here's my CMakeLists.txt if anyone else wants to try :) :



Code:
cmake_minimum_required(VERSION 2.6)

project(Project4)

find_package(SDL REQUIRED)

find_package(SDL_ttf REQUIRED)

find_package(SDL_image REQUIRED)

include_directories(sparrow3d src ${SDL_INCLUDE_DIR})

file (GLOB SRCS src/*.cpp)

file (GLOB SPARROW3D_SRCS sparrow3d/sparrow*.c sparrow3d/Sparrow*.c)

add_library(sparrow3d ${SPARROW3D_SRCS})

add_executable(Project4 ${SRCS})

target_link_libraries(sparrow3d ${SDL_LIBRARY} ${SDLTTF_LIBRARY} ${SDLIMAGE_LIBRARY})

target_link_libraries(Project4 sparrow3d)

install(TARGETS Project4 DESTINATION build/)

install(TARGETS sparrow3d DESTINATION build/)

install(DIRECTORY build DESTINATION .)
Yep, the sparrowFont stuff currently is 32-bit only.


This actually recently has come up in the dedicated sparrow3d thread on here, maybe you can help out with testing there (Ziz lacks a 32bit environment atm).
 
Last edited by a moderator:
Oh, it just crashed on me. I was moving to the bottom right hand corner. I think there were two laser opponents and a spikey onscreen; but I can't be certain
Hmm, that's unfortunate, I will try to keep an eye out of crashes, have not run into any though at the moment. If you find a reliable way to reproduce it please let me know.


Pandora build for the current version is available now!


Download: http://foxblock.pirategames.co.uk/games/project4/index.html
 
Just to inform people here too, the 64bit issue in sparrow3d seems to have been found (a simple one line fix), and now I have a working build with the above cmake file for 64 bit linux. :)


EDIT: here you go

project4-20120701-linux-x86_64.tar.gz
 

Attachments

  • project4-20120701-linux-x86_64.tar.gz
    337.1 KB · Views: 178
Last edited by a moderator:
Just to inform people here too, the 64bit issue in sparrow3d seems to have been found (a simple one line fix), and now I have a working build with the above cmake file for 64 bit linux. :)


EDIT: here you go
Very nice, thanks a lot :)


Would you mind me linking it from the project hub page (as well as the cmake file)?
 
Not at all. The cmake file assumes sparrow3d git is cloned to sparrow3d subdirectory under project4 root. You can also remove the "install(targets sparrow3d..." bit, since the library is linked statically. To build project4 using it do



Code:
mkdir target && cd target

cmake -DCMAKE_INSTALL_PREFIX=. ..

make install


This compiles both sparrow3d and project4 and copies all necessary files to target/build subdirectory
 
Thanks :)


---


There might be a stream happening today (Sunday).


It will be a totally different format, I will stream a Skype conversation of me discussing puzzle games (what those are, why I am interested, why I think they are appealing, for example) and the approach to developing them with a fellow game designer.


I said "might" because we are not sure whether I will directly stream it or record, cut and upload it or maybe completely do it in private (as we might discuss personal and confidential material).


In any case, mark 9PM (UTC+1) in your scheduler, I will announce shortly before whether it will actually be happening or not.


Also the anchor for the conversation is this article, so in case you are planning to tune in I recommend reading it: http://www.dinofarmg...o-hate-puzzles/


Also I have been thinking about the streaming format.


I think watching me punch in code in an awkward manner is not as interesting compared to me discussing what I am/have been doing and moreso why.


So I will probably do most coding off-air from now on and then later talk about it or do the balancing part on-air.


Also I think discussions and interviews could be interesting (as mentioned at the beginning of this thread, too), so I will try to make that happen more often (get some people from here on the line!).


Finally I will probably do the remainder of the Greyout commentary on the stream (prepared obviously, but that's already done).
 
Last edited by a moderator:
Sounds good.Hope I'm about if you live stream it
 
From the contest thread:

Thanks :) There won't be a shooter bit, evading and tricking enemies into destroying themselves is what it is all about and it's great to hear that aspect is fun.
Good to hear there isn't a shooter bit - only thought there was because the project description is "a 2D top-down shooter with a twist".


What are your next steps for the game? Are you planning more enemies? or looking to polish up (ie add a menu/high score table etc.)?
 
Well the twist is that it actually is not a traditional shooter ;) (I am bad with descriptions and naming things).


For my next steps I will usually follow the todo list: https://raw.github.com/foxblock/Project4/master/media/todo.txt


Currently I am working on the high-score system so the first vertical slice of the game is completed. Then I will work on portability (scaling mostly) and afterwards I will work on additional game-modes, refine the scoring and spawn system and work on the presentation.


New enemies will be added whenever I (or somebody else) have a good idea that incorporates well into the existing gameplay.


Don't expect much development in the coming weeks though as I am in the middle of writing several exams and I try to limit my development time in between to keep my mind occupied with one big task only.
 
Here is another update and it's a huge one.


I spent the past weeks working on a new feature (actually only very few hours every week, which is why it took so long). It's not entirely necessary, but I wanted to do it, it's quite fun and might help me debug and tune the gameplay better.


The feature is a "replay system": Every game you play will be recorded and can be played back from the highscore screen. You can transfer replays between devices and users, so you can share your most impressive runs for others to watch them.


The system could also be used for other stuff, but that's too distracting for now and I want to concentrate on the core game again (still have not much time so updates will continue to be scarce).


It's quite fragile at the moment, so replay files might be invalidated between updates.


Here is the full changelog:

  • Added a menu
  • Added local highscore and highscore screen
  • Added replays - every game will be recorded and can be replayed from the highscore screen
  • Changed spawn system, units have different spawning behaviour
  • Improved score screen and added name entry
  • Experimental colour changes, not too great though
  • Several bug fixes


You can download a Windows and Pandora version of the build here: http://foxblock.pira...ect4/index.html


Hope you enjoy it, feel free to post your most impressive replays (though I am aware points can be gained pretty easily by an exploit currently). :)
 
Last edited by a moderator:
Would it be possible to explain the scoring process? I find it weird that the multiplier counts up to 8x, then suddenly drops to 1.4x or something for what seems no apparent reason.


Looks good - though the background fade sometimes looks a bit rough.


Overall, I really like this, Good job :)
 
Would it be possible to explain the scoring process? I find it weird that the multiplier counts up to 8x, then suddenly drops to 1.4x or something for what seems no apparent reason.
There are two scoring methods at the moment: One for killing enemies and one for evading and not killing them.


Killing an enemy awards you points for that enemy (spike - 50, laser - 100, bomb - 10), increases the multiplier by 0.2x and starts/resets the combo counter. When the counter runs out the multiplier will reset to 1x.


When there are at least 3 enemies on the screen and you haven't killed an enemy in the last second you will be awarded points for every frame you are not killing an enemy. The multiplier will increase by 1x for every additional enemy spawned.


It's far from optimal and will require some tweaking, but eventually I want both methods equally rewarding for different (situation) play styles.

Looks good - though the background fade sometimes looks a bit rough.
Yeah that will be changed, I don't like it either and I've got a better idea.


Btw, the background colour actually indicates which scoring method is currently active.

Overall, I really like this, Good job :)
Thanks.
 
There are two scoring methods at the moment: One for killing enemies and one for evading and not killing them.


Killing an enemy awards you points for that enemy (spike - 50, laser - 100, bomb - 10), increases the multiplier by 0.2x and starts/resets the combo counter. When the counter runs out the multiplier will reset to 1x.


When there are at least 3 enemies on the screen and you haven't killed an enemy in the last second you will be awarded points for every frame you are not killing an enemy. The multiplier will increase by 1x for every additional enemy spawned.


It's far from optimal and will require some tweaking, but eventually I want both methods equally rewarding for different (situation) play styles.


.

Thanks


I just got a GPF (segfault) as a bomb was exploding. stderr.txt contains:



Code:
terminate called after throwing an instance of 'std::bad_alloc'

what(): std::bad_alloc


Fraid there's no more information than that.


Edit:


Also, could you do something about spawn points at the very start of the game? See the attached replay. Basically had no chance really


Cheers


Edit 2:


Just shut down again by itself as a bomb was exploding (I think) - no segfault tho, and no errors.
 

Attachments

  • 1344101096.txt
    38 bytes · Views: 169
Last edited by a moderator:
Things I am currently working on in my scarce spare time: New background effect, new spawning behaviour, fixing mad bugs and pie.


While doing that I sometimes have to debug the game, which looks like this:

https://www.youtube.com/embed/mQxd1rFe0sk?feature=oembed
also this: http://foxblock.pirategames.co.uk/games/project4/p4_madness.jpg


A new version is basically ready, but I did not manage to upload it before GC and found a few bugs while testing during GC, so it will be uploaded after GC and after all those bugs have been fixed.


Cheers.
 
I uploaded the GamesCom build, you can download it here: http://foxblock.pirategames.co.uk/games/project4/index.html


Changes include:

  • Spikes now spawn outside the visible area and move inwards (without attacking), adding some hazard to camping the sides for idle points
  • The score input screen got improved
  • The background effects got improved a lot
  • The laser's projectile got improved to be more visible on red background
  • Fixed a couple of bugs


Replays from the previous version will be incompatible (just like with future versions most likely)!
 
Could you provide some way of identifying which replay belongs to which high-score. I know you can load them from the highscore screen (might be worth putting some UI to inform the user of this), but if you want to send your best score to somebody, you've got to do a bit of digging (unless it was your last game).


Also, "Load Replay" would be a lot easier if you could list files - maybe a "Filename | Player | Score " table, that you can browse and select. That would also fix my first point :)


It's a really great game, good job!
 
Back
Top