Jump to content

The Southsider

  • entries
    81
  • comments
    767
  • views
    135,961

Pipe Mania

Sign in to follow this  
Guest

588 views

I often seem to have the following motivation problem: whatever task Iam supposed to be working on is the thing that I least want to do,while the thing that I can't work on is the thing that I most want todo! This seems to hold regardless of the tasks that are involved. Iseem to be constantly forcing myself to get on with the essentialtasks, while my mind is pulling me towards the less important tasks.I suppose this is just a corollary to the "shiny object syndrome" thatI described in my blog some time ago!At the moment I am supposed to be writing a textbook (nothing to dowith the Atari), and the publishing deadline is fast approaching.However, what I really want to do is some more 2600 programming. Thishas been exacerbated by watching the rapid progress that others aremaking on their 2600 projects, such as Reindeer Rescue, Strat-O-Gems,and Colony 7. Fortunately, the holiday season has come to my rescueand I have a few days when I don't need to feel guilty about avoidingwork. As a result, I have managed to make some progress on one of theideas that has been distracting me for several weeks, while pretendingto visit my parents :) In a previous entry, I mentioned that I had already started to thinkabout the 2006 minigame competition. There is a rumour that thecompetition will start in January, and I want to be ready. The gamethat I have been thinking of developing is a version of the classicpuzzle game PipeMania. I think some versions are called PipeDream,but this was later changed to avoid possible drug connotations (Icould be wrong about this?). Anyway, the game was released on avariety of different platforms and was very popular at the time, butseems to have been largely forgotten these days. The version that Iremember most was for the Atari ST. The game-play is somewhat similarto Tetris, although the configuration is rather different.If you are not familiar with the game, then it basically works asfollows. This description is from memory as I haven't managed todownload the game yet or find a version on eBay, so please correct meif I have got any of the details wrong. The game is played on a 10x7grid. Each square can contain a segment of pipe, and one square isdesignated as the "start" square. The idea is to construct a pipelinefrom the start square and make it as long as possible within a timelimit. The pipe pieces are chosen in a random sequence, and you canonly place the piece at the front of this sequence on the grid. It ispossible to replace a piece that has already been placed, but thistakes more time. Once the time limit has run out, the pipeline startsto fill with liquid, beginning from the "start" square. The liquidflows slowly, and you can still place pipe pieces while the liquid isflowing. A second time limit determines how long the liquid flowsfor. If the liquid spills out of the end of the pipeline then thegame is lost. As the game progresses, the initial time limitdecreases, the second time limit increases, and the liquid flows everfaster. Eventually you end up slapping pieces down on the grid madlyin a futile attempt to contain the liquid!Although the basic game mechanics are very straightforward, the gameis difficult to implement on the Atari 2600. As ever, the big problemis with the screen display, i.e. the kernel. I have been giving thissome thought for a while, and I think I have a solution. It isn'tpossible to draw a 10x7 grid using sprites without some seriousflicker (which I hate), and so this leaves the playfield. Early on, Ifigured that all of the pieces could be represented on a 3x3 grid.The screen can accommodate a 10x7 grid of pieces using just PF1 andPF2 (32 pixels width) with my favourite playfield configuration(asymmetric and reflected). However, I quicly ran into problems withthe colours, and so the design as put on hold for a whileTo represent the pipes using the PF, we require 3 colours at minimum:one colour for the pipe, one colour for an empty pipe, and one colourfor a full pipe. Unfortunately the Atari has only 2 colours for theplayfield: the background and the foreground, and there is not enoughtime to change these colours between pieces. To overcome thislimitation, I decided to use a technique that was suggested bysupercat for PoP. If the screen is drawn using alternate yellow andblue lines, then it is possible to generate the appearance of morecolours even though each line is still limited to two colours. Inparticular, a yellow line and blue line next to one another appearswhite. Using this technique, I have implemented a mockup kernel toshow this in action. The source code is attached, though the kernelis rather messy at present.post-4031-1077142158.gifThe mockup shows an example pipeline which is partially filled withliquid. What I need to know is whether this looks convincing enough,or if I should just abandon the game now? The problem with theminigame competition is that there are many different platformsrepresented, and a lot are capable of far superior graphics, e.g. theC64. Therefore, if the graphics are confusing or unappealing then thegame will be harshly judged. Honest feedback about this will beparticularly appreciated! Also, any suggestions for improving thekernel are also welcome. The current version required a largeunrolled kernel which will be difficult to modify. Also, I haven'tfigured out how to draw the vertical grid-lines, or the cursor yet.Anyway, I hope everyone has a great holiday season, and I'm lookingforward to seeing what the homebrew community can produce in 2006.The year is a permutation of 2600, so it just has to be special :DChrisInitial Version: post-4037-1093398926_thumb.jpgEDIT 1:Improved Version: post-3990-1101186684_thumb.jpgScreenshot of improved version (without gridlines):post-3990-1101186685_thumb.jpgEDIT2:This version switches colours on alternate frames: cdbypass.zipThe effect works best using the -f switch in z26 (Phosphorescence). There are a few minor timing glitches in this version, but I am not yet sure it is worth continuing or adopting an alternative technique?EDIT3:Slighly more polished version with some timing bugs fixed: jukebox24_20030617.zipScreenshot from this version:jaguar.zip

Sign in to follow this  


15 Comments


Recommended Comments

Just some quick feedback: I think the mockup looks fine. Probably could use a little tweaking (IMO you should lose the horizontal "grid" lines), but it is instantly recognizable. :)

Share this comment


Link to comment

I'm not familiar with Pipe Mania, but based on your description and your kernel, I wouldn't give up on solid colors right away. I think some of the techniques I picked up while designing various board game kernels could help here. It may turn out that solid colors are not possible, but I'll toy around with it for a while and get back to you.

 

If vertical gridlines are essential, that complicates things. I agree with Bob BTW that horizontal gridlines alone should be changed. Either draw both horizontal and vertical or neither.

Share this comment


Link to comment

Mixing colors is IMO a good idea. Especially Andrew is doing it very often and the results are always very good.

 

You could go one step further and swap the blue and yellow lines each frame. Probably the colors would mix then even better. Though emulators might show some occasional flicker due to not being 100% in sync with the display rate.

Share this comment


Link to comment

Thanks to everyone for the suggestions. I have attached a new version which removes the gridlines. However, I think that some form of separation is still required? The latest screenshot shows the next 5 pieces at the bottom of the screen. In my opinion, it is very difficult to tell where the boundaries between these pieces are. Zach's suggestion to turn the board round sounds like it might be the best approach. I don't think this would affect the gameplay, and might enable the use of sprites (with the missiles/ball used to make the 7th one). I am also going to try Thomas suggestion of alternating the colours between frames.

 

Thanks,

Chris

Share this comment


Link to comment

Hi there!

 

Oha. Pipe Mania is one of those games I never managed to get into back in the day :)

 

Greetings,

Manuel

Share this comment


Link to comment
Oha. Pipe Mania is one of those games I never managed to get into back in the day :)

 

That is a shame as it is a very addictive game. However, I'm not sure that the 2600 version is going to happen as the screen display is still causing me problems.

 

Chris

Share this comment


Link to comment

Hi there!

 

That is a shame as it is a very addictive game.

 

Maybe I have to try it again soon, once you're further into the project :)

 

However, I'm not sure that the 2600 version is going to happen as the screen display is still causing me problems.

 

BTW: There were already 2 Pipe games submitted to the Mini Game Compo in 2003. They didn't do too well though, ranking at #24 and #33:

http://starbase.globalpc.net/~wyndex/mini0...ex.results.html

Maybe something can be learned from their failure and the feedback already helps improving your version :D

 

Greetings,

Manuel

Share this comment


Link to comment

Would it be possible to use some sprites to draw thin vertical lines? The spacing ends up being somewhat awkward (every 12 pixels doesn't fit with any rate of sprite 'repetition') but if you set Player and Missile 0 both to two copies you might be able to alternate stores to them every 12 cycles. You'd have to skip a couple stores to be able to rewrite the PF1/PF2 registers at the right times, but you could use Player and Missile 1 to fill in a couple of those spots. Alternatively, you could use Venetian Blinds on your vertical lines, though that might not look so great if it interacted poorly with the color striping.

 

Another possibility would be to not use the color striping for the fill, but instead use a self-modifying sequence of STX COLUBK,X/STY COLUBK,X to control the pipe color (if X<>0, the address would have to be adjusted appropriately). The lack of clear boundaries might be a problem, but perhaps that issue could be resolved other ways (it only really matters on empty cells, so an indication of where the empty cells are should be sufficient).

Share this comment


Link to comment
Would it be possible to use some sprites to draw thin vertical lines?  The spacing ends up being somewhat awkward (every 12 pixels doesn't fit with any rate of sprite 'repetition') but if you set Player and Missile 0 both to two copies you might be able to alternate stores to them every 12 cycles.  You'd have to skip a couple stores to be able to rewrite the PF1/PF2 registers at the right times, but you could use Player and Missile 1 to fill in a couple of those spots.  Alternatively, you could use Venetian Blinds on your vertical lines, though that might not look so great if it interacted poorly with the color striping.

 

Another possibility would be to not use the color striping for the fill, but instead use a self-modifying sequence of STX COLUBK,X/STY COLUBK,X to control the pipe color (if X<>0, the address would have to be adjusted appropriately).  The lack of clear boundaries might be a problem, but perhaps that issue could be resolved other ways (it only really matters on empty cells, so an indication of where the empty cells are should be sufficient).

 

Thanks for the suggestions - I will attempt something like this if I come back to the project. However, I am going to try to find something else now for the minigame competition as this isn't original enough (judging from previous years entries) and the PF graphics just don't look good enough.

 

Chris

Share this comment


Link to comment

Hey, that brings back memories. I worked in the office that made the NES version and it was programmed by a childhood friend.

Share this comment


Link to comment

Hi there!

 

However, I am going to try to find something else now for the minigame competition as this isn't original enough (judging from previous years entries) and the PF graphics just don't look good enough.

 

I recently found a somewhat original arcade called Kaos, that seems like it was designed with a 2600 in mind. You play on a "Fall Down" like scenery, except you're not falling, but climbing up'n'down collecting $$ :)

 

Greetings,

Manuel

Share this comment


Link to comment
I am going to try to find something else now for the minigame competition as this isn't original enough (judging from previous years entries) and the PF graphics just don't look good enough.

 

Chris

It seems to me that any game where "the game-play is somewhat similar to Tetris" will suffer an automatic penalty in the competition.

Share this comment


Link to comment

Hi there!

 

It seems to me that any game where "the game-play is somewhat similar to Tetris" will suffer an automatic penalty in the competition.

 

Same with *standard* implementations of Snake, Bomber and Pong clones. That stuff has been done to death. Unless one had a really interesting idea for a twist in the gameplay, I wouldn't bother with those.

 

I think you have the best chances with some rather original, rather actionized gameplay. Also, it should be instantly approachable. If it requires reading a manual, it already lost :)

 

Greetings,

Manuel

Share this comment


Link to comment
I recently found a somewhat original arcade called Kaos, that seems like it was designed with a 2600 in mind. You play on a "Fall Down" like scenery, except you're not falling, but climbing up'n'down collecting $$ :|

 

I finally got round to downloading the MAME rom. It looks like it would be very doable as a minigame on the 2600 - a bit like a combination of Fall Down and Climber 5. I will add this to my list of potential future projects.

 

Thanks,

Chris

Share this comment


Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...