Jump to content
  • entries
    6
  • comments
    22
  • views
    5,360

Office Intern game


elenag

486 views

A few days ago I had a concept come to me for a new game targeting the Atari 2600, so I began working on it. It's my first game so I spent a few days going through the programming tutorials. I found them comprehensive and well written, although I haven't finished the last remaining chapters on sprites.

 

I have the rules and playfield designed but I'm a little stuck on trying to squeeze in the scanline code to fit within 76 cycles. Currently it's running past the screen edge and I haven't even added sprites yet, so I may either have to make concessions or more optimizations that aren't obvious to me at the moment. I have 2 ideas so I'll try them but I'm not sure they'll work. With this game my real focus is creating a polished look, but I know that might be unrealistic given my game design; although, my best bet may be fiddling with skipping frames or doubling lines to fit in more processing.

 

So anyway, what's the game about? Well, I'm glad you asked. In my game you are an intern working for a nasty boss and it's your job to do all the little tasks around the office. There are 5 work days and each day there are 4 waves: morning, lunch, afternoon, and closing time. For each of those you'll have a unique task to accomplish before the clock runs out.

 

Before I go further, you should preview the game screen I've prototyped so far (see the attachment below). On the screenshot you'll notice a rendering glitch, which relates to what I said in the 2nd paragraph above. The screen still needs work. The boss, wastebasket, printer, clock, and score will all be rendered as sprites so the detail should be finer on those.

 

For the waves, there will be a time limit for completion. The clock on the wall will tell you how much time is remaining. Waves increasingly get harder as each day progresses. I may include randomly appearing barrier walls between the desks that will decrease your mobility. I think it's quite possible using playfield graphics, but I may need to tweak the layout. One thing about the playfield layout is that I'm using a data oriented approach so I have the option to create new layout variations for subsequent waves.

 

During the waves, if you miss too many tasks, the boss will write you up with a warning. You've got 3 warnings so watch out or you'll be fired.

 

Wave 1: Morning. It's early at the office and it's your job to deliver all the assignments to the worker's desks. As they appear you must get to the printer, gather the assignments, and deliver them to the correct desk. You'll have to be fast, because you can only carry a few assignments at a time. (Maybe 3-7, not sure yet. I could reduce that value as difficulty increases.)

 

Wave 2: Lunch. The staff has gone out to lunch but left you behind. You're tasked with answering the phones as they ring. If you miss any, you'll be sure the boss will chew you out.

 

Wave 3: Afternoon. Now that it's later in the day and the staff are completing their assignments. It's your job to deliver them to the boss but once again you'll have to be fast or risk angering the boss.

 

Wave 4: Closing time. Now the office has closed and the staff has gone home, it's your job to gather trash and deposit them into the wastebasket.

 

Throughout the game, there are random special bonus tasks that will appear. I've decided they will appear during the waves (rather than a separate bonus wave). Missing these won't hurt you, but they do offer rewards.

 

Bonus Task 1: Empty a full wastebasket.

Bonus Task 2: Water the boss's plant.

Bonus Task 3: Collect the mail from the mailman (at the front door).

Bonus Task 4: Collect the coffee from the delivery boy (front door again).

Bonus Task 5: Fix the printer paper jam.

 

So that's where I'm at. I'm rather busy with a number of personal things so it may be a while before I have a playable demo, but hopefully I could have something by the end of the month.

4 Comments


Recommended Comments

I want to see if I can get it figured out before I run for help. I'm weird that way I guess. :cool: Plus, I hope to finish the end of the tutorial because I may see something in there that could give me some ideas. I really want to get a sense of accomplishment and feel that I managed it on my own.

 

After I've exhausted all the solutions I have in mind, I'm going to post the kernel and ask for feedback (or help). Even if I do solve the problem at hand, I plan to post anyway to solicit opinions regarding style and missed optimizations. I certainly wouldn't be surprised if I've missed something, because it's been ages since I've programmed in assembly. Even when I did do it, I was a student and didn't learn it very well.

 

I'll post current progress after a few days.

Link to comment

I got back to working on it today, in between other things, and figured it out. I had made a couple mistakes: forgot to count 2 clocks for a branch, miscounted another branch as 2 clocks but was actually 3. Once I had an accurate clock count, I was able to optimize the playfield update ordering. I also changed an LDA with a variable to an immediate value saving 1 clock, so it's down to 73 clocks total without sprite code.

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...