"Function" game- progress thread.

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
"Function" game- progress thread.
by on (#126640)
Better late, than never-I decided to enter the nesdev compo.
And since wanted "more open development/progress report type of contest", I decided to start a progress thread for a game I come up with. Also, forgive me for my bad english, I'm not native speaker.
Ok, let's start this thing with a game's concept. It's hard to come up with original game concept, so I will not be surprised if a game similar to this already exists, if someone know anything then let me know. This is just I come up with about a hour ago, not many details included...nevertheless:

Day #0
Title: "Function" or "Game of Function" or similar.
Type: Logic game.
Desired ROM size: 16kb.
Mapper planned: UNROM (Mapper 02)

Ok, for the title screen, 3 options available:

Start game-Starts the game. After selecting it, player goes into first level.
Pass-When Highlighted, "Pass" changes to 4 numbers, these numbers can be increased by pressing A and decreased by pressing B. You select number by Left\Right arrows. These are level passwords.
Language-You can select(by pressing left or right) either Polish or English. English is default one.

You can move in the title menu with up\down\select for changing options, A\Start for accepting password\starting game.

The main game:
Main game is based on player selecting a chain of "commands" that will move the Green square. Green square need to make contact with Blue squares in order to "eat" them. Level is completed when all blue squares are eaten. The game's board should be 14x7 pieces big. One piece being 16x16 metatile. The board should be surrounded by a frame. The command available should be at the bottom. The row of selected commands, called "Main Loop", should be under the commands available. Not all commands are available in every level.
But it would be rather boring to just have it like that. There's second row of command selected called "VBLANK". This row cannot be used directly, but have to be "called" from Main loop by the use of "VBL" command. When called, all commands in Vblank Loop are used, when finished, it jumps back to the Main loop. Vblank row should be shorter than main loop.
There should be also third row called IRQ, which works just like Vblank loop, but is longer and is called by other command. Vblank and IRQ loops cannot call each other.

After the board is cleared of blue squares, congratulations text and password for next level shows up. In this state, game waits for player to press either A or Start, after which it loads next level.

Following pieces can be on board:
Green-Can be up to there. This piece moves as it was programmed by the player.
Blue-Collectibles. Collect all to finish current level.
Red-Deadly pieces, Green piece is destroyed if they come into contact.
Solid wall-Blocks Green blosk movement.
Teleport exit-Player gets teleported here after the use of "teleportation" command. Can be ereased if player steps on it.

Following commands can be used:
Directional arrows-Move one piece up\down\left\right.
VBL-Call vblank loop
IRQ-Call IRQ loop
X2 and X3-execute previous command 2 and 3 times respectively. Cannot be stacked.
90º arrows-moves two piece in 90º fashion. For example first one moves up and then right.
Teleportation-Player gets teleported to the Teleport exit piece. Cannot be used unless there's a teleportation piece on board.

After all levels are beaten, game shows simple Congratulations screen. Nothing too fancy, it is supposed to be 16kb game.

What do you think about this...concept thing? WhatULive4, is this what you wanted to see, or I just missunderstood you due to my poor english skillz? At any rate, I'll come up with compression formats tomorrow and some more details.
Re: "Function" game- progress thread.
by on (#126643)
Reminds me of this: http://www.ippinka.com/blog/primo-toy-t ... g-to-kids/

I think this is an interesting idea, I just don't agree with calling the subroutines being called VBL and IRQ, because VBL doesn't run during VBlank and IRQ isn't interrupting anything, it's simply called. I think it would be better to just call them SUBs or Functions than using these misleading names.
Re: "Function" game- progress thread.
by on (#126646)
The idea reminds me of a segment from "The Lost Mind of Dr.Brain"
Video of the segment: http://youtu.be/xqDGPYMcWGk?t=3m50s

I'm looking forward to seeing how you execute your idea.
Re: "Function" game- progress thread.
by on (#126659)
Thanks for the links. These games seem to have familiar core concept to what I have in mind.

Quote:
I just don't agree with calling the subroutines being called VBL and IRQ, because VBL doesn't run during VBlank and IRQ isn't interrupting anything, it's simply called. I think it would be better to just call them SUBs or Functions than using these misleading names.

Good point. VBL will then be "SUB" and IRQ will be changed to "FUNC". Thanks for pointing this out.

Day #1
Today I did a mock up for the Ingame screen, sadly, I can't post a pic because of my stupid camera...Anyway, I have a map format. I'm nothing when compared to guys like tepples or tokumaru, so this scheme will probably look lame, but it is best I could came up with. If anyone have any ideas to to improve it, I'd love to hear it :)

Code:
Map format:
 Byte0-Control Byte. Divided into:
   bit 0-Is Main Loop extended?
   bit 1-Is SUB extended?
   bit 2-Is FUNC extended?
   bit 3-Can SUB Loop be used?
   bit 4-Can FUNC loop be used?
   bit 5-Can 90º arrows be used?
   bit 6-Can Multipliers be used?
   bit 7-Background music bit, as only 2 songs are planned to be played in-game.

There's no "teleportation enabled" bit, because teleportation command will get enabled if there is a "Teleportation exit" piece on the board.

 Byte1-Coordinate byte:
   bits 0,1,2,3-Horizontal position of piece.
   bits 4,5,6-Vertical position of piece.
   bit 7-Next byte is compression byte.

 Byte2-Compression byte.
   bits 0,1,2,3-How many pieces to unpack.
   bit 4,5,6-Unused
   bit 7-if zero, then compression is horizontal, if 1 then it's vertical.

Pieces are unpacked by types. Starting type is Player type. Opcode FE changes current type to next type, opcode FF ends map data.
Types are in following order:
 1.Player
 2.Collectibles
 3."Killer" pieces
 4.Wall
 5.Teleportation exit.

Example:
 08 0F FE 04 FF - This will:
   -Enable SUB loop to be used,
   -place one player at the right upper corner of the board
   -place one collectible at 4th horizontal position on board.

 98 00 FE A2 09 FE 30 FF -This will:
   -Enable use of both FUNC and SUB loops
   -change music theme to song01
   -place player at left-upper corner of the board
   -Place 9 collectible items in horizontal line, starting at position 2,2
   -Place one Killer piece at position 0,3.
 

Also, I assembled some files and have logo working. I'll start coding the core of the game tomorrow.

Day #2
Today, I made some graphics and created some code(nothing major, though).
I assembled graphics together for a ingame mockup screenshot.
Image
The brick wall was ripped from opengameart entry
It's C00, to I suppose it is ok with compo rules.
Re: "Function" game- progress thread.
by on (#126994)
Well, Its been week, so I decided to post a bigger update.

Most of things has been done. I have title screen, password input and generation, language selection, hardware tests, PC level editor, and about 16 levels done.

To do:
-Compose music.
-Write Credits\Congratulations screen.
-Fix bugs

I'm super positive to finish within compo's deadline.

Here, you can download public build of Function.

I'd love to hear opinions and ideas for improvement. :D
Re: "Function" game- progress thread.
by on (#127025)
Thanks for the preview release. I like the game so far :)

The "MAIN LOOP" only runs once, so maybe it should just be called "MAIN"?

What is "LAST nn" for?
Re: "Function" game- progress thread.
by on (#127037)
Thanks! I appreciate your opinion.
Yes, you are right. I'll change main loop to "MAIN"
"LAST M" stands for Last Main. This new command can only be used in SUB function. It will call the last MAIN command that was used before calling SUB.For example:

Main:Right, Sub, Down, Sub
Sub:Last M,Last M,Last M

As a result, Player will move 4 pieces to right and then 4 pieces down.
The use of Last M is essential to complete some levels.
Re: "Function" game- progress thread.
by on (#127038)
Well that was rather fun.

My only complaint is that I found it to be annoying when all the commands are erased when you fail a level.

And just a couple of other things to mention.

The game froze after beating, what I assume is, all the levels currently in the game. I'm guessing this is expected behaviour though.

The graphics for the cross, used when commands are locked, might look better if it had less contrast. Right now, when there are multiple crosses, it looks too busy. Try replacing the bright yellow pixels with a darker colour and see how it looks.

Regardless, I liked the graphics and had a lot of fun playing it.
I'm looking forward to see more progress
Re: "Function" game- progress thread.
by on (#128018)
It's been some time(I honestly have no idea why I waited so long with writing this), but just wanted to let you know that game was made and it made into compo.
At any rate, I'm not sure if I'm allowed to post a link to the game, so Function will be available for download at the compo website after the judging.
Oh, and by coincidence, I have found this flash game. It has familiar gameplay to Function.

Quote:
My only complaint is that I found it to be annoying when all the commands are erased when you fail a level.

This has been adressed and no commands are erased when player fails, thanks for pointing this out.

Quote:
The game froze after beating, what I assume is, all the levels currently in the game. I'm guessing this is expected behaviour though.

Yes, I forgot to do something about it, stupid me :D

Quote:
The graphics for the cross, used when commands are locked, might look better if it had less contrast. Right now, when there are multiple crosses, it looks too busy. Try replacing the bright yellow pixels with a darker colour and see how it looks.

I actually (slightly) upgraded all icons graphics.
Image
Re: "Function" game- progress thread.
by on (#209436)
Today's Google Doodle, where you program a bunny to hop on cubes to pick up carrots, looks a lot like Function.

https://g.co/doodle/ug9chu?ds=cl