GithubHelp home page GithubHelp logo

nkaruga-deprecated-nspire-version-'s Introduction

nKaruga

A clone of Treasure's Ikaruga for TI-Nspire calculators. Of course, this is still in beta stages. Source is available at https://github.com/matrefeytontias/nKaruga

Building

To build the executable, you'll need everything that is in the nKaruga/src and nKaruga/gfx folder. Just build in nKaruga/ using the latest Ndless SDK by running make in the src/ directory. nKaruga.tns, nKaruga.prg.tns, nKaruga_emu.tns and nKaruga_emu.prg.tns will be generated in the main folder, ready to be used. If you use Ndless 3.1, use the .prg.tns files, and if you use Ndless 3.6 use the .tns files, nKaruga being for your actual Nspire (any Nspire) and nKaruga_emu for your TI-Nspire emulator.

Running the game

You need at least Ndless 3.1 installed to run nKaruga on your TI-Nspire. That means nKaruga will only run on your TI-Nspire if the installed OS is Ndless 3.1 or higher-compatible. nKaruga is also compatible with Ndless 3.6.

Playing the game

Ikaruga is a danmaku (bullet hell) SHMUP (SHoot-theM-UP) with a twist : enemy ships and your own ship can be of one of two polarities, light or shadow. Your own ship is different though : you are free to switch between both polarities, when enemy ships are stuck with the same polarity. When in light polarity mode, only shadow bullets hit you, and when in shadow polarity mode, only light bullets hit you. When you get hit by a bullet of the same polarity than you, the bullet is absorbed and fills your power gauge instead of hurting you. When you have absorbed enough bullets, you can do a power release and fire as many power fragments (homing lasers) as filled power cells (a power cell is 10 bullets). Your power gauge is then emptied.

When you fire at an enemy, there are two situations : either the bullet hitting the enemy is of the opposite polarity, in this case the bullet inflicts double damages ; or the bullet is of the same polarity, in this case the bullet only inflicts normal damage.

The main menu

Play

You get it I think. Press it to get in the game.

Difficulty

Repeatedly press ENTER to loop through the three possible difficulties.

  • Easy : enemies never fire back when killed.
  • Normal : enemies fire back when killed by bullets of their polarity.
  • Hard : enemies always fire back. Be ready for it.

Use touchpad for movement

Enable this so you can sweep your fingers on the touchpad to move your ship instead of using the arrow keys. Obviously, this will only work if your calc has a touchpad.

Use scrolling background

Disable this if you're really concerned about battery usage or use a TI-Nspire that doesn't have a color screen. If you don't understand why, just try.

Configure controls

Here you can customize your controls for nKaruga. Simply press the key you want the displayed action to be binded to.

Default commands :

  • CTRL : fire
  • SHIFT : switch polarity
  • DEL : release power
  • touchpad : disabled
  • P : pause the game
  • ESC : quit

Scoring (a whole lot)

nKaruga implements the same complex scoring system as the original Ikaruga, and thus scoring takes an important part in the gameplay.

Each time one of your bullets hits an enemy, you earn 20 points if it's of the same polarity and 40 if it's of opposite polarity, and each time you absorb a bullet of your polarity you get 100 points. Each time you kill an enemy, its polarity is "remembered", and if you kill three enemies of the same polarity in a row, your chain bonus doubles. Your chain bonus is bonus points you get each time you complete a 3-kills streak of one polarity. It starts at 100 and doubles with each 3-kills streak you complete, up to a maximum of 25 600. But beware ! If you kill an enemy of the wrong polarity in the middle of a chain without it being finished (for example when you kill two blue ships and then one red ship), your chain breaks, your chain bonus goes back to 100 and your chain count to 0, and everything is to be done again.

Boss battles

During boss battles, chaining is not taken into account. When you battle a boss, you have a limited amount of time to take it down. Bosses may or may not respect several patterns ; if you're too slow, the boss will move to the next pattern by itself.

Tips for boss battles :

  • watch for the time ! The faster you beat the boss, the bigger the bonus at the end !
  • try to figure out what polarity the boss is vulnerable to. It can change during the battle.
  • also try to figure out what the hitbox is. It's not always obvious.

Credits

Code : matrefeytontias With occasional help from : Choups314, geekboy

GFX : Metaru, Hayleia, pierrotdu18, aeTIos, matrefeytontias

nkaruga-deprecated-nspire-version-'s People

Contributors

matrefeytontias avatar oliviera avatar quanticpotato avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

nkaruga-deprecated-nspire-version-'s Issues

Too much epicness

Hi

I encountered a bad bug, your game is too epic. I think you should fix it as soon as possible.

Regards.
Eiyeron.

Fix (possibly) memory-corrupting bug

After running nKaruga a few times, the file manager will start to react slowly (key delays overwritten ?), and after some time Ndless will fail loading nKaruga, with the OS throwing the usual "format not supported" error.

TODO list before beta 0.2

Overall, the second level must be fully playable, including the boss. I'll only say it once, but each level uses a different mechanics than the others: while level 1 is a "normal" scrolling level with enemies, level 2 has varying backgrounds and scrolling speeds (two actually) and props. It also needs a slightly more complex transition (probably a rotating background blitting).

  • Implement support for interactive environment elements (walls, props ...). Those are probably going to be normal enemies with a "isEnvironment" flag set, preventing them from having any sort of behavior other than staying in place, and from dying (except for crates). This should prevent code duplication without any other performance hit than a flag test.
  • Implement independent camera movement (don't take background scrolling into account)
    • Constantly keep absolute camera coordinates and coordinates that are relative to the point where the enemy wave started. This will permit enemies that have pseudo-relative coordinates and environment elements that have absolute coordinates to interact.
    • Add rendering hook to account for camera position, which was made possible (easy ?) with the implementation of drawing candidates.
    • Slightly modify level 1 patterns to cope with the camera system. Shouldn't be too hard considering the camera can stay in place just for this level.
    • Make the player unable to go out of the camera field.
  • Write new patterns for new enemies
  • Create new sprites for new enemies
  • Write boss 2's patterns
  • Create and animate boss 2's sprites
    On other subjects:
  • Add the ability to use 2-4-6-8 for movement, instead of only the touchpad or clickpad.
  • Improve code quality with inheritance. Yes, I knew its existence before, but recently learnt how to properly use it.

The good news is that the vast majority of the engine was already done for level 1. Hopefully, less and less things (besides sprites and patterns) will need to be added for each level.

TODO list before beta 0.1

What's left to reach milestone.

  • Write player engine
    • Movement with clickpad or touchpad
    • Timed single-then-double fire
    • Power releases
    • Death
  • Write bullets engine
    • Player bullets
    • Player and enemy power fragments
    • Enemy bullets
    • Enemy homing lasers
    • Enemy heavy lasers
    • Collisions between player bullets/power fragments and enemies
    • Collisions between enemy bullets/power fragments and player
    • Collisions between player and homing lasers
    • Collisions between player and heavy laser
  • Write enemies engine
    • Handling and drawing enemies
    • Killing enemies
    • Enemy fire
    • Fire-back
    • Using custom AI for each enemy
    • Assigning an enemy to a parent enemy for relative positioning
    • Collisions with player
  • Write level stream parser
    • Spawning enemies
    • Spawning bosses
    • Separating introduction and level
    • Special commands:
      • Pauses
      • Waiting for every enemy to be killed and/or being off-screen
      • Starting a new wave
      • Doing a transition between introduction and actual level
      • Jointing enemies
      • Breakpoints for debugging
  • Pause button for emulation
  • Write full level 1 stream (partially done)
  • Write inline menu in title screen
  • Use a configuration file
    • Read/write custom controls
    • Read/write last difficulty
    • Read/write use of touchpad
    • Read/write use of scrolling background
  • Have customizable controls
  • Display end-of-level results
  • "Dot eater" achievement : finish the level without firing once
  • Have all graphics for level 1 (lacks player's explosion sprites)
  • Have graphics for boss
  • Fight boss

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.