Coder Social home page Coder Social logo

modepile's Introduction

ModePile Banner

ModePile

A set of gameplay mods for NullpoMino.

Requires the above to compile and run. The "res" directory in the "required files" needs to be merged with the one in the NullpoMino folder.

ModePile Pack CI

Modes Available:

Click the links that are available in the mode names to get a YouTube video demonstration.

  • 2048 - A 2048 clone.
  • Accelerator - A marathon mode where playing fast is rewarded.
  • Colour Power - A marathon mode where clearing lines using pieces of different colours nets you different power-ups.
  • Collapse - A clone of Super Collapse II's Traditional mode.
  • Constantris - A 電車でGO!-inspired mode where you must advance to the next level at the correct time.
  • Deltatris - A ΔMAX-inspired mode where every piece pushes you closer to maximum velocity.
  • Express Shipping - A clone of the space-filling game Puzzle Express by HipSoft.
  • EX Reborn - A clone of ***ris-EX.
  • Firework Challenge - An inaccurate version of ***ris the Grand Master 3's Easy mode.
  • Gem Swap (incomplete; on hold) - A generic match-3 game.
  • Idiot% Mode - A mode inspired by this video where it emulates the TGM style of play, but normal line clears are next-to-worthless but spin line clears are boosted to be better than normal.
  • Joker - A mode that approximates the JOKER mode from DTET.
  • Marathon II - "If Marathon was so good, why isn't there a Marathon 2?"
  • Minesweeper - It's Minesweeper. What else is there to say?
  • Mission Mode - Play a marathon mode, but it asks you to clear Puyo-Puyo-styled missions.
  • Pong - A single-player Pong clone.
  • Retro Mania 2 - A mode based on Sega ***ris '99
  • Roll Training - Practice your credit roll plays here.
  • Scanline - Inspired by Scanner mode on ***ris for the PSP Mini and ***ris Pop.
  • Score Trial - An approximation of the SCORE ATTACK modes in DTET.
  • Shadow Marahton - Build your own pieces in this extended Marathon.
  • Single Death Marathon - Marathon, but the pieces queue up to become big.
  • Subscriber Challenge - git gud, get subscriber!

Libraries Available:

  • AnimatedBackgroundHook - Allows the simple animation of backgrounds, DTET/TI style.
  • ArrayRandomiser - Generates a permutation of an array.
  • BlockParticle - Animated block particle for line clear effects.
  • BlockParticleCollection - Collection class for easy generation, update and drawing of block particles.
  • BufferedPrimitiveDrawingHook - For fast primitive drawing.
  • DoubleVector - 2D vector type that uses doubles for more precision.
  • DynamicReactiveSound (incomplete; on hold) - Generates and plays PCM samples on the fly.
  • ExamSpinner - TI-style spinner like the one used during Promotion Exam results.
  • FieldManipulation - Adds and fixes methods for dealing with the game's Field type.
  • FieldScatter - A 2D implementation of Sega ***ris '99's block explosion.
  • FlyInOutText - Adds text objects that can fly into the screen from the outside, linger, then return to their starting positions before disappearing.
  • GameTextUtilities - Adds methods for coloured text and other random text / text obfuscation methods.
  • Interpolation - Linear interpolation functions.
  • MathHelper - A few extra mathematical functions such as LCM or GCD.
  • MouseParser - Allows the use of mouse inside a mode.
  • Particle - Particles for the particle engine.
  • ParticleEmitterBase - Particle emitter engine. Used for holding and drawing particles.
  • PhysicsObject - Allows the use of basic frictionless rigid body physics with square objects.
  • PrimitiveDrawingHook - For normal primitive drawing.
  • ProfileProperties - Allows the use of TI-styled profiles.
  • RendererExtension - Extra drawing methods.
  • ResourceHolderCustomAssetExtension - Allows the use of custom images and BGM in a mode.
  • ScrollingMarqueeText - Horizontal scrolling text.
  • ShakingText - Text that vibrates around a fixed point.
  • SideWaveText - Super Collapse II-styled text popups.
  • SoundLoader - Allows the use of custom SFX.
  • StaticFlyInText - Similar to FlyInOutText, but the text does not fly back out.
  • ValueWrapper - Class that holds a set of one of each primitive numbers.
  • WeightedRandomiser - A weighted pseudorandom number generator.

Compilation Instructions:

  1. Install JDK 1.8.0. Either use OpenJDK by RedHat or use the official Oracle JDK.
  2. Install your Java IDE of choice.
  3. Import the whole NullpoMino directory as a project. Make sure all the classpaths are set up.
  4. Merge the src directory from this repository and the one in the NullpoMino directory together.
  5. Compilation should be working.

Installation Notes

If a bin folder exists in the NullpoMino install folder

  1. Follow the instructions in the release's README.txt as stated.

In the case that a bin folder is non-existent in the NullpoMino install folder

  1. Open NullpoMino.jar with an archiving program.
  2. Create a folder in the root install directory for your copy of NullpoMino called bin.
  3. Extract the folders in NullpoMino.jar to the newly-created bin folder.
  4. Follow the instructions as given in the README.txt in the release.

Resource Credits

  • Deltarune Assets (Jevil image, The World Revolving) - Toby Fox
  • Super Collapse II Assets (SFX) - Super Collapse II, released by GameHouse
  • Sega ***ris Music - Sega

Main Contributors

Special Thanks

  • Oshisaure - A main inspiration for starting this modding project, a code design helper and motivator to allow this to continue.
  • ry00001 - A main inspiration for starting this modding project, a code design helper and motivator to allow this to continue.
  • GlitchyPSI - A main inspiration for starting this modding project, a code design helper (esp. for allowing the adaptation of their custom sound loader code) and motivator to allow this to continue.
  • Akari - A main inspiration for starting this modding project (see Idiot% Mode above) and motivator to allow this to continue and for providing Japanese translations of the mode descriptions.
  • The original creator of NullpoMino.
  • All others that worked on NullpoMino - For helping to develop the game into the extensible platform we know today.

modepile's People

Contributors

lostkagamine avatar mandl27 avatar mf42-dzh avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

modepile's Issues

ex reborn!!!!!

firstly i'm so honored to find that t-ex have been cloned!
(i decided to change its name to t-ex in 2014 because there was once it was detected containing "sex" by some filter even when named "tetris-ex") (and it's shorter) (also for not being ****®-ed y'know) (casing doesn't matter because i come from visual basic) (x

then findings comes....
TetrisEXWallkick.java the CW table isn't mirrored despite the comment stating it should be mirrored. 🤔
then comes to the hard part: the condition to use the "moving" tables. it's not simply "the moving button is pushed" (at least both may be pushed while in the DAS system only one can be functioning). the condition should be "the DAS is functioning but blocked (by mino or wall) (in the direction it's functioning)", like saying "there's pressure against the wall."
this s some fundamental difference and the "failed-to-move" information from DAS system needs to be passed to the wallkick subsystem.

back to that year i'm scared by the long long code of nullpomino's onMove routine so i haven't manage to read through it yet 😶... (and now i'm still not confident to change this)..

minor ones, for example the scoring (well it's up to you since it's a remastering), but the original scoring scheme favors clearing the field as much as possible near x99 and getting more pieces for free to stack for tetris. also piece placement worths a lot and higher placement rewards even more. (like in Tengen NES version) (it even used to be rewarding clearing higher rows, i don't remember when i changed it to the current one..) it was some good old memory having a score war with Kitaru around 1.3~1.5M....

the post-M5 skin, i'm also not a fan of torturing players' (my) eyes with []s... in the VB6 version it's rendered in "full outline" (much like in DTET after you won a battle, the active piece is also outlined), and in the flash version i just decided to simply use white skin.

about WTF stage... well i don't remember whether i have passed M9 in a legit way... then... who cares (slap

and there's a cheat button with which also enables my early attempt of backfire™ series feature... not sure if you want it (((

my best wish goes to the XRS being implemented "well", in fact the wallkick sequence has had its last minor tweak also in 2014, according to feedback, it could even be further adjusted/extended if it makes better playing (and i don't mind wilder o-spin))

i've just managed to find and extract the old code ("officially") (though it seems not that necessary cuz u must've got it....): https://github.com/farteryhr/labs/blob/master/t-ex_core.as

thanks for the reborn, even before me trying to do so in my tetr.js mod🤣

Finding Background Translation Boundaries

Inside BackgroundTGM3Style.java.

Background

The background is a rectangle of width a pixels and height b pixels where a and b are expected to be >= 1024px in dimension, and the rendering window takes a 640x480 snapshot for rendering (other resolutions are simply upscales / downscales).

When this background type is used inside the Slick instance of NullpoMino, it applies a random rotation from -60° to 60° that it slowly changes to over a period of time. A random translation and scale factor (>= 1) is also applied which the background slowly interpolates to. This has the potential issue of having some of the rendering window "looking" at the parts outside the image, which causes graphical glitches due to the no-draw regions created.

Problem

Is there a mathematical way to calculate the maximum translation boundaries for the background at a given rotation angle and scale such that the values can be used to prevent the screen from showing no-draw regions? I've attempted to use ellipse equations to calculate this but it doesn't seem to prevent this issue.

Abstraction

Given a 640x480 rectangle centred at the origin, is there a way to calculate the maximum relative
2D vectors (from the origin) such that a rotated rectangle of any size >= 1024 on each dimension does cause any area from the first rectangle does not go outside the boundaries of the second rectangle?

Digging out of Technical Debt

This codebase is in need of a massive refactor. Not only for better-looking code, but also for (possibly) better performance by removing unnecessary operations and the like.

Notes

Any changes must be compatible with Java 8, as this is what the game uses.

TODO

  • Libraries
    • Removing excess reflection calls.
    • Removing useless / redundant code.
    • Refactoring the public API.
    • Tackling with the monster that is ResourceHolderCustomAssetExtension.
  • Modes
    • General optimisations.
    • Cleanup of repeated code.
    • Possible abstraction of Finite State Machine pattern used to control the modes.

Retro-related mode and rule ideas

Introduction

I have an interest to classic Tetris games from long ago, and I'm so curious about them. As associating with my interest, I post this issue about mode and rule ideas which is related to Retro modes.

Retro Marathon Reborn

Recently, I played Tetris 2 + BomBliss and I've got an idea to create a variant of Retro Marathon mode based on Tetris 2 + BomBliss/Super Tetris 2 + BomBliss, Super Tetris 3 and Tetris X. Since Retro Marathon is based on Game Boy version of Tetris, I thought there should be a revised and more accurate mode which is based on later Bullet-Proof Software games as I play Tetris 2 + BomBliss.

Types

Retro Marathon Reborn has selectable game modes called "Types":

  • A-TYPE: Generic endless/marathon mode from classic Nintendo and Bullet-Proof Software games, same as Retro Marathon with more accurate gameplay from Tetris 2 + BomBliss/Super Tetris 2 + BomBliss and Super Tetris 3
  • A-TYPE2: Same as Classic mode from Tetris X
  • B-TYPE: Level-based mode
  • C-TYPE: Has identical gameplay from A-Type, but with garbages rising at certain intervals
  • B-TYPE2: B-TYPE with A-TYPE2's game mechanics
  • C-TYPE2: C-TYPE with A-TYPE2's game mechanics

Visual features

Retro Marathon Reborn features following visual elements made especially for the mode:

  • Smooth gravity and rotation like the Bullet-Proof Software-developed Tetris games starting with Tetris 2 + BomBliss
  • Visible buffer zone (check the TetrisWiki page about playfield for more details about buffer zone)

Note that these features may will be implemented on other modes as the mode-specific options if possible.

Lives option

Like the original Japanese Famicom Tetris and Super Tetris 3, you can enable the Lives option, which allows 3 top outs.

Rules for Retro Marathon Reborn

The following rules are recommended for Retro Marathon Reborn:

  • BPS-NINTENDO: Based on Tetris 2 + BomBliss/Super Tetris 2 + BomBliss and Super Tetris 3
  • BPS-PS: Based on Tetris X

Retro Mania 3

Retro Mania 3 is based on Atari/Tengen Tetris.

Gameplay schemes

There are two gameplay schemes in Retro Mania 3:

  • Arcade: Same as Atari's arcade version
  • Console: Same as Tengen's NES version

Rules for Retro Mania 3

The following rules are recommended for Retro Mania 3:

  • ATARI: Based on Atari Tetris
  • ATARI2: ATARI rule with clockwise rotation
  • TENGEN: Based on Tengen Tetris

Bomb mode and Item Blocks

Introduction

Long time ago, I posted an issue to add Bomb mode (which is inspired from Bomblin) and Item Blocks on Nullpomino's Github page, but since the development of Nullpomino is not active for a long time, I moved it to more active ModePile mod.

When I discovered ModePile, I thought it's possible to implement Bomb mode and Item Blocks with ModePile for its use of custom libraries. ModePile can also implement additional graphics and sounds, which are used in some modes.

Bomb mode

The Bomb mode is based on BomBliss aka Tetris Blast, which is featured on many games including "Tetris 2 + BomBliss (not related to Tetris 2, a North American version of Tetris Flash)". In the original issue, I suggested the modes based on a BomBliss clone game called "Bomblin" to make the mode also functions as a replacement of that, which is no longer published by the creator AOiRO_Manbow. But I noticed that only few people have that game for now and I think it's not possible to make a Bomblin-based modes right now, so the idea of Bomblin-based modes is currently on hold until I play Bomblin.

  • Bomb Puzzle: Same as Puzzle mode from Tetris 2 + BomBliss/Super Tetris 2 + BomBliss and Super BomBliss.
  • Bomb Contest: Same as Contest mode from Tetris 2 + BomBliss/Super Tetris 2 + BomBliss, Super BomBliss, and Tetris Party Deluxe.
  • Bomb Dig: Same as Bombliss Plus mode from Tetris Axis.

Rules for Bomb mode

The following rules are recommended for Bomb mode:

  • STANDARD
  • NINTENDO-R
  • BPS-NINTENDO

Bomb mode uses a same rules from Tetromino modes. Non-tetromino pieces are appear like using an option on Practice mode, meaning it doesn't need a custom randomizer for the mode.

Item Blocks

On Tetris clones, the item blocks from TGM are implemented in Heboris Unofficial Expansion along with its own items. I originally requested to implement the ones from TGM, but on this ModePile issue, I also add the ones from Heboris UE, which includes some items based on Tetris DS and Bloxeed. Note that the item blocks and Hard block (mentioned below) should have its own blockskin, which is separated from normal blockskins. This will also implement the assists on Score Mania (it should be added as a mode-specific option, otherwise the replays that are recorded before the installation of ModePile will be broken). Use Heboris C7EX as a reference when you create the item blocks for ModePile, which can be downloaded here: http://mufunyo.net/tetris/

The following item descriptions are based on, and taken from a Japanese TGM glossary and the TetrisWiki page of Heboris UE (you can also check the effect duration and frequency of the items on the wiki page):

TGM Items

Attack

  • DEATH BLOCK: Makes the opponent's NEXT piece bigger. (No effect in BIG mode)
  • 180° FIELD: Makes the opponent's stack upside down.
  • MIRROR BLOCK: The opponent's stack is mirrored 3 times for each new piece, leaving it mirrored after the 3rd piece. (Added from T.A.)
  • SHOT GUN!: Randomly shoot a group of holes in the opponent's stack.
  • HARD BLOCK: The opponent's NEXT piece must be cleared twice to be removed from the playfield.
  • LASER: Deletes a column of opponent's field (Can add a extra column (up to 4) to delete by pressing player's button rapidly).
  • ROLL ROLL: Makes the opponent's three NEXT pieces automatically rotate counter-clockwise (While the item is active, it'll make the opponent's piece white).
  • TRANS FORM: Makes the opponent's three NEXT pieces change its shape when the opponent press the rotate button (Can rotate them only by initial rotation).
  • X-RAY: Makes the opponent's field partially invisible with "scan"-style effect.
  • COLOR BLOCK: Makes the opponent's field partially invisible with patternized flashing.
  • DARK BLOCK: Makes the opponent's field invisible. (Added from T.A.)
  • NEGA FIELD: Inverts the holes and blocks in the opponent's field.

Defense

  • ↑/↓DEL FIELD: Deletes the up or down half of the player's stack.
  • →/←MOV FIELD: Gathers the blocks into right/left side of the player's stack.
  • DEL EVEN: Deletes the even-numbered rows of the player's stack.

Special

  • FREE FALL: Fills every holes by drop all blocks in the player's field (There's a backfire glitch in T.A.'s singleplayer modes that makes the garbage sent into yourself after you clear the lines with this item).
  • EXCHG FIELD: Swaps the player and opponent's field (No effect in singleplayer).

Heboris Items

Attack

  • ROTATE LOCK: Lightning from Tetris DS. Disables the opponent's rotation and turn opponent's pieces gray. The orientation of opponent's NEXT pieces are randomized.
  • HIDE NEXT: Boo from Tetris DS. Temporarily hides the opponent's previews.
  • MAGNET BLOCK: The opponent's fall speed increases by 0.5G. Pieces will lock instantly while this item is active.
  • TIME STOP: Opponent's active tetromino is frozen in position. Opponent is unable to perform any commands.
  • HOLD LOCK: Disables the opponent's hold function. (No effect in rules without hold function)
  • →←REVERSE: Reverses the left and right movements of the opponent.
  • BOOST FIRE: Opponent's tetromino fall speed becomes 20G. It halves the opponent's lock delay if they are already at 20G.
  • ↑↓REVERSE: Opponent's up and down input keys are switched.
  • REMOTE CONTROL: The player takes control of the opponent's inputs including Hold, while maintaining control over their field. It also disables the opponent's inputs.
  • SHUFFLE FIELD: Opponent's rows are shifted randomly left and right. The empty columns stay connected only if the rows containing the columns are filled with 9 blocks each.
  • DOUBLE: Increases the lines recieved from the player by 2. (No effect in singleplayer)
  • COPY FIELD: Opponent's field becomes the player's field. (No effect in solo mode)
  • FAKE NEXT: The piece previews and the held piece become fake, but the colors will be the same as the original piece.
  • GRANDMOTHER BLOCK (stylised as [ ] BLOCK on low-res sprites in Heboris UE): All blocks will turn into "[ ]" blocks.

Defense

  • REFLECT: (VS) Opponent's item attacks are reflected to themselves. (Others) The player is protected from one attack type item.
  • ALL CLEAR: Clears the field entirely.

Special

  • FEVER!: Super Star from Tetris DS. All of player's NEXT tetrominoes become I tetrominoes, with opponent's item attacks being reflected. Special music (Arranged version of Super Mario Bros.'s invincibility music from Tetris DS) will play when the item is active.
  • RANDOM: A random item effect is activated.
  • 16t: 16t from Bloxeed. A 16t anvil appears (A reference to Fantasy Zone, a shooting game by Sega), in which the player can move before removing three columns of blocks.
  • MISS: (VS) The player's level and item bar will not increase. (Others) Level, score and line count are not affected. (Both) The field shakes every time when the piece is locked.

Music Files from MandL27

The readme mentions asking him for files if your looking for music files, would I contact him here or is there some other method?

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.