Code Monkey home page Code Monkey logo

novathesquirrel's Introduction

Nova the Squirrel

You can also get the game from itch.io!

Nova the Squirrel is an NES game that stars Nova Storm, a green squirrel, who finds herself in an unfamiliar world and is pushed into the position of playing the hero, using a newly found ability to copy abilities from enemies.

Animated screenshot Animated screenshot

This game takes inspiration from Super Mario Bros. 3, Kirby Super Star, Chip's Challenge, and Hannah and the Pirate Caves. It has a strong focus on puzzle platforming.

Variable width cutscene screenshot Moving platforms screenshot

Engine features include cutscenes with variable width text and portraits, and moving platforms.

Level editor

There is a level editor named PrincessEdit that takes inspiration from Lunar Magic.

This project was originally also intended to provide a good platformer base like Super Mario World tends to serve, without copyright infringement.

Building

In order to build the game, you will need Python 3 and cc65. Python 3 is optional and is only required if you want to modify any levels or graphics, as the repository contains pre-compressed versions of both.

After having those installed, you can run mk.bat to build the game, or copy and paste the commands out of there to run them separately if you wish.


Some of the data is kept in a human-friendly format and needs to be converted into a game-friendly format, so if you want to modify it then you also need to build a few tools. In the tools directory there's tblmake.c and mkdialog.c which can both be built with gcc tblmake.c -o tblmake and gcc mkdialog.c -o mkdialog or something equivalent for your C compiler of choice.

From here, there are .bat files that use these programs to re-convert assets, and there's another .bat to re-convert and re-compress the title screen in the title directory.

Individual graphics files in the chr directory can be compressed with py -3 pb53.py -i graphic_name.chr -o graphic_name.pb53 --raw

License

All code is available under the GPL license version 3 or later.

Assets (graphics, levels, etc.) are available under Attribution-NonCommercial-ShareAlike 4.0 International therefore the game may not be sold without permission with these intact. Permission is not granted to use characters from this game in other games, however.

novathesquirrel's People

Contributors

novasquirrel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

novathesquirrel's Issues

Background-adding level commands

It'll be encoded in the level like
.byt LSpecialCmd, LevelSpecialConfig::MAKE_BACKGROUNDS, (StartScreen<<4)|Length, BackgroundId
and I'll have to have a list of backgrounds somewhere I guess.

Weird block in intro level

For whatever reason there's a single bricks block in the intro level in the sky and I don't know why.

Reading signs

Add the ability to read signs, relies on the cutscene engine being written.

Script converter

The scripting system needs a program that will interpret a script source file and export to the engine's script and automatically do dictionary compression and word wrap and such.

Make death sound not use DPCM

Right now I'm using DPCM and it's eating up 2KB of fixed bank space. If I make it use a custom compression scheme instead I can move it somewhere else.

Continue to play music while busy or waiting

Right now the music just stutters when rerendering the screen, from exiting a cutscene or going to another screen. I'll have to figure out how to fix this. I might have to have it where NMI can play music but MMC1 makes that complicated and would probably introduce a lot of overhead to bank switching.

Animated level intro

Make it really fancy and show off what the level number is. Maybe only play a fancy intro at the level start and not when reentering a level.

Title screen

Add a title screen, and actually maybe get a good one drawn?

Particles when hitting a pawprint block

Bricks have particles when being smashed open but currently pawprint blocks don't. They could either use the same style as the bricks or maybe use stars instead?

Limit camera scroll speed

The scrolling code can only handle speeds of 8 pixels per frame or lower, and anything higher will make it break. The scroll speed needs to be limited.

Pausing

Pausing via pressing the start button

Firebars

These would use the 16x16 fire sprites and actually act more like the roto discs

VWF cutscene engine

In my current plans, the story parts will be told with cartoony cutscenes with characters below a speech bubble or thought bubble or a narration or whatever (like this).

Inventory screen

Inventory screen upon pressing Start where you can choose and use items

Minecarts

Rideable minecarts that ride along rails, for cave-ish levels.

Dying

So far Nova can't die, lol. This would be from running out of health or from falling down a bottomless pit.

Checkpoints

Create a checkpoint after entering doors and return the player to them when they die

Put decorations on levels

They're drawn but need to actually be inserted. I have like, trees and flowers and fences and stuff.

Transition effect for dialogs

Right now the dialogs have a lot of places where the location changes or time passes and I think it would be good to have an effect to make that clear.

Mark puzzle levels on stage select

They should have a puzzle piece icon rather than a standard icon. Probably should also make it clear if you're entering a puzzle level, maybe by returning to the level select after completing a stage?

Better water physics

Right now the water code is actually the ladder code reused. This should change.

Ladder climbing

Currently ladders can't be climbed on. Add a movement state for the player for climbing ladders.

Items in paw blocks

Paw blocks can only contain coins currently. They should be improved to where they can hold items too, preferably with icons for the items or some other way of actually being able to tell what item it is.

Better algorithm for spawning enemies

Currently the algorithm looks through the entire enemies list and compares X positions. This isn't really efficient, and it doesn't spawn enemies on the screen the player starts on.

Add a better algorithm for this.

Enemy priorities

Assign a priority level to different enemy/object types and allow important types (like moving platforms) to wipe out less important types when they're spawned, if necessary.

Ability copying

Add the ability to copy abilities from enemies and polish up the code for writing the new ability's tiles into VRAM

Camera shake effect

I can prooobably implement this very easily, especially if it only shakes vertically

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.