Coder Social home page Coder Social logo

moduscreateorg / modite-adventure Goto Github PK

View Code? Open in Web Editor NEW
7.0 5.0 3.0 31.42 MB

Modus Create's 2020 Holiday Game for the LDK Game console.

Home Page: https://moduscreate.com/

License: MIT License

CMake 0.64% Makefile 0.63% Shell 5.17% C++ 87.25% C 4.97% R 0.93% Objective-C 0.40% Ruby 0.01%
cpp ldk-game ldk mod-music

modite-adventure's Introduction

Modite Adventure Modite Adventure Icon

Build Status Powered by Modus_Create

Modite Adventure is a cross-platform a action/adventure created by Modus Create for the 2020 holiday season. Modite Adventure's target platform is the LDK Game console, and can compile and run on macOS and Linux (Ubuntu and Arch distributions).

For build instructions, take a look at our development documentation.

header_image.jpg

Check out our Videos.

Modite Adventure Trailer

How we made music for Modite Adventure

We really hope you enjoy playing this game as much as we enjoyed making it! ❤️

Game Play

The goal of Modite Adventure is to defeat Droganos, the final Boss. To do this, you are required to earn the four spell books that are guarded by the four Wizards scattered throughout dungeons in the over world.

Modite Adventure’s presentation is that of the typical ¾ RPG (Role Playing Game) perspective and its gameplay design’s inspiration was taken from a few video games decades past, with the basic mechanics of the run, attack, and receiving damage taking cues from games like the Legend of Zelda: A Link to the Past.

Here’s an example of the slash attack mechanic slaying an enemy

header_image.jpg

Dungeons are puzzles to be solved and have doors blocking pathways. Some doors are locked and can be opened with keys, while others are unlocked via button presses or by finding the right combination of switches on the ground.

header_image.jpg

General enemies have distinct behavior patterns and will either walk around aimlessly, explore their world, or attack from afar. Some might even directly confront our hero and depending on how the enemy behaves, you might want to have our hero “lock on” to it to ensure it doesn’t get the best of you!

header_image.jpg

Sometimes our hero will find himself surrounded and depending on if he’s located a spellbook he can unleash a spell of epic proportions to vanquish those evil monsters.

header_image.jpg

There is no doubt that we recognize that our hero’s quest is difficult, with every enemy he slays, he earns Experience points to level up his abilities. Each time he levels up, all of his basic stats increase, including his overall health and magic points along with his attack and defense. Details about our hero can be viewed on the inventory screen.

header_image.jpg

It likely wouldn't surprise you to learn that this game took a little over a year to develop by a relatively small team of 4 core developers. I’ll caution that using the time dimension to project the level of effort is extremely misleading because the majority of this game was developed nights and weekends. We made this possible by coupling our love for video games with our passion for creativity.

Instruction Insert

Here is the instruction card that we created as an insert to the game we delivered to our clients and team.

header_image.jpg header_image.jpg

Modus Create

Modus Create is a digital product consultancy. We use a distributed team of the best talent in the world to offer a full suite of digital product design-build services; ranging from consumer facing apps, to digital migration, to agile development training, and business transformation.

Modus Create

This project is part of Modus Labs.

Modus Labs

License

Genus is licensed under GPL v3.


Contributors


Jay Garcia

👨‍🚀

Mike Schwartz

👨‍🚀

Michael Tintiuc

👨‍🚀

Aaron Goldman

👨‍🚀

Dmytro Kovalenko

👨‍🚀

Don Anderson


Thomas Collins

👨‍🚀

Richard Bullington

👨‍🚀

Lucas Garibaldi

👨‍🚀

Santiago Kent

👨‍🚀

Victor Guzman

👨‍🚀

raina


Darkman007


Raul Dan Mocian


Fanny Cespedes

👨‍🚀

Miguel Montano

👨‍🚀

Pedro Hyvo

👨‍🚀

Samantha Park

👨‍🚀

Josh Kochelek


Shiv Sharma


Ashley Benton


Gabrielle Viot


Contributing

Interested in contributing to Genus? Please see our developing wiki and contributions guidelines.

modite-adventure's People

Contributors

aaron-goldman avatar infrak avatar jaygarcia avatar lgaribaldi avatar michaeltintiuc avatar mschwartz avatar pedrohyvo avatar tcmodus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

modite-adventure's Issues

Create a dummy enemy to assist with hero slashing mechanics.

General information

This feature request uses the General 32x32 enemy guidelines as a backbone.

Sprite sheet

  • src/resources/sprites/enemies/chara_spider.bmp

Animation guidelines

Walking animation down

  • Animation sequence 8, 9, 10, 11
    chara_spider-animated-walking-down

Walking animation right and left

(Right is the dominant pattern. Left is the mirror of right).

  • Animation sequence is 12, 13, 14, 15 and repeats.

Walking animation up

  • Animation sequence is 16, 17, 18, 19 and repeats

Attacking down

  • Animation sequence is 19, 16,17, 18

Attacking side

  • Left is mirror of right
  • Animation sequence is 27, 24, 25, 26

Attacking up

  • Animation sequence 31, 28, 29, 30

Damage down

  • Beginning frame is the same as the end, creating an "elastic" effect
  • Animation sequence: 35, 32, 33, 34, 35

Damage side

  • Beginning frame is the same as the end, creating an "elastic" effect
  • Animation sequence: 39, 36, 37, 38, 39

Damage up

  • Beginning frame is the same as the end, creating an "elastic" effect
  • Animation sequence: 43, 40, 41, 42, 43

Main menu

Using Genus and the following diagrams as examples:

  • Create a Main Menu screen
  • Use Genus text printing code
  • Leverage existing font sprite sheet
  • Use existing Genus icon selector mechanic character

Reference doc:

Main menu screen

2019-07-27_15-10-10

Basic screen flow

image

Implement 32x32 Rat Enemy

Using the General 32x32 Enemy Guidelines:

  • Rat only walks wall to wall.
  • Rat should hug walls when traveling.
  • Rat should not enter doorways.
  • If Rat is traveling and is attacked by Hero, Rat Receives damage, and retreats the opposite direction.
  • Rat decides to move towards player if player is in Rat's possible moves
  • At the end of the walking animation, rat should use idle animation (2 - 3 cycles of animation)
  • Rat moves faster than player in any dimension
  • Rat attacks player if player walks into Rat's path of travel
  • When Rat attacks player, player his dealt LIGHT damage, and is NOT pushed back

Hero controls (Receiving damage)

General items

  • Player receives damage when:
    • Hit with any projectile (enemy weapon or automated dungeon mechanism [think arrows from walls])
    • Bumps into an enemy
    • Falls off of a ledge
    • Walks on a dungeon tile
  • After receiving damage, player blinks for a second (invincible) to allow them to retreat to another position.
  • Sound played for damage received

Collisions creating damage

  • what triggers the getting hit animation?
  • if you're attacking and being attacked...
  • if you simply run into enemy

Light damage animation

  • Use for light projectile hits & collisions with enemies.
  • When colliding with enemies, player is pushed back a bit.
  • Animation sequence: 1,2,3,1. 120ms for initial frame, 80ms for the rest.
  • For Player stays in place for this hit. (like a jab)
    image4

Medium damage animation

  • Frame sequence: 1,2,3,2,3,1. 120ms for initial frame, 80ms for the rest.
  • Player stays in place for this hit.
    image9

Heavy damage animation

  • Player is pushed back up to 32 pixels by this hit.
  • Frame sequence & adding a flash to emphasis the impact. 1,2,3,2,3,1. (flash frame is bold)
    image6

Damage sprites are pretty self explanatory. (Facing down, Left & right, facing up)
image

Falling off of ledge

  • If the hero is > 20% over the ledge, he slides off.
  • Custom falling sound played when in falling state (descending tone).
  • Sprites to be drawn for falling animation
  • When the hero falls off of a ledge, an animation occurs and hero takes damage.
  • Afterwards, he re-spawns to the exact place he entered the screen.

Example:
Link falling down

Death animation

  • Death animation still needs to be developed.
    (proof of concept)
    Hero dying temp

Tilemap renders 32px offset to the left

There is a serious bug with the map rendering tiles now. Enemy now spawns on a wall.

I tested this out in a fresh clone off of master for MA and develop (i do this for all PRs now).

image

Should look like:
image

I also removed rcomp sources from my copy of the PR and same issue occurs. Here's a build log.

image

Main Options Menu Screen

Let's copy the existing Genus assets for Main options as/is and we'll modify the background and color scheme in a future story.

  • Create a Main Options screen
  • Use Genus text printing code
  • Use Leverage existing font sprite sheet
  • Use existing Genus icon selector mechanic character
  • Use existing Genus code for audio & screen settings
  • Use existing Genus background (for now)
  • Use existing Genus settings management code
  • Use existing Genus screen options differences (brightness settings on mobile)
  • Use existing Genus SFX for option changes
  • Use existing Genus controller scheme

Reference doc:

Basic screen flow

image

Implement 32x32 Enemy Attack

Using the Spider Dummy Enemy, implement Enemy Attacking

Success Criteria:

  • When hero is within striking distance, the enemy can choose to attack.
  • Enemy must be facing hero to attack.
  • If enemy is walking and encounters the hero, it will attack.
  • If attacked, the hero receives damage via animation.

Animation Frames

Attacking down

  • Animation sequence is 19, 16,17, 18
    04-attack-down-chara_spider

Attacking side

  • Left is mirror of right
  • Animation sequence is 27, 24, 25, 26
    05-attack-right-chara_spider

Attacking up

  • Animation sequence 31, 28, 29, 30
    06-attack-up-chara_spider

Implement 32x32 Slime Enemy

Using the General 32x32 Enemy Guidelines:

General behaviors

  • Slime should not enter doorways.
  • Slime does not decide to move towards player if player is in Slime's possible moves
  • Slime moves 1/4th the speed as player in any dimension
  • Slime attacks player if player walks into Slime's path.
  • When Slime attacks player, player his dealt HEAVY damage, and is pushed back 1 tile

Implement Hero receive HEAVY damaged

Built off of #41 (Implement Hero Receive MEDIUM damage via enemy attack)

Success Criteria:

  • Hero is damaged when an Enemy attacks
  • For now, the death animation will remain the spinning hero, but let's add a blinking effect to it. We'll do the final "death animation" in a separate ticket.
  • Beginning frame is the same as the end, creating an "elastic" effect
  • Hero remains facing his direction when attacked. Example scenario: Hero is facing right. Enemy is above the hero and facing down. Enemy strikes down, hero receives damage as if he was attacked from the right.
  • ~120ms for initial frame, ~80ms for the rest.

Animation Frames

ignore the shadow in the sequences

Damage down

  • Animation sequence: 35, 32, 33, 34, 33, 34, 35 (Bold means paint enemy white)
    chara_hero-animated-damage-down-medium

Damage side

  • Animation sequence: 39, 36, 37, 38, 37, 38, 39 (Bold means paint enemy white)
    chara_hero-animated-damage-side-medium

Damage up

  • Animation sequence: 43, 40, 41, 42, 41, 42, 43 (Bold means paint enemy white)
    chara_hero-animated-damage-up-medium

Implement Hero receive LIGHT damage via enemy attack

Once we've gotten to the point where the enemy can attack (#35) , let's implement hero receive damage. For this ticket, we're tackling An enemy Attacks scenario

General damage rules

Hero is damaged when:

  • An Enemy attacks
  • Walks on a damage invoking tile (spike, fire, etc..)
  • Falls off of a ledge

Success Criteria:

  • Hero is damaged when an Enemy attacks
  • For now, the death animation will remain the spinning hero, but let's add a blinking effect to it. We'll do the final "death animation" in a separate ticket.
  • Beginning frame is the same as the end, creating an "elastic" effect
  • Hero remains facing his direction when attacked. Example scenario: Hero is facing right. Enemy is above the hero and facing down. Enemy strikes down, hero receives damage as if he was attacked from the right.
  • ~120ms for initial frame, ~80ms for the rest.
  • Please animate the animations where the player seems to be pushed back by 2 to 4 pixels as demonstrated in the gifs below

Animation Frames

ignore the shadow in the sequences

Damage down

  • Animation sequence: 35, 32, 33, 34, 35
    chara_hero-animated-damage-down

Damage side

  • Animation sequence: 39, 36, 37, 38, 39
    chara_hero-animated-damage-side

Damage up

  • Animation sequence: 43, 40, 41, 42, 43
    chara_hero-animated-damage-up

Graphical bugs

  • The background is not cleared when switching from Title to Game states
  • Viewport values are wrong - causes sprite overflows

All enemies scaffolding

Implement the rest of the enemies classes, using the spider enemy's logic (for now).

This will flush out the GEnemy base class and scaffold the project to have the enemies' source files.

rcomp tilemap specific logic.

Load the files.txt file and automatically include the files within and generate #defines.

Update CE to support the new resource type.

Implement Hero receive MEDIUM damage via enemy attack

Built off of #39 (Implement Hero Receive LIGHT damage via enemy attack)

Success Criteria:

  • Hero is damaged when an Enemy attacks
  • For now, the death animation will remain the spinning hero, but let's add a blinking effect to it. We'll do the final "death animation" in a separate ticket.
  • Beginning frame is the same as the end, creating an "elastic" effect
  • Hero remains facing his direction when attacked. Example scenario: Hero is facing right. Enemy is above the hero and facing down. Enemy strikes down, hero receives damage as if he was attacked from the right.
  • ~120ms for initial frame, ~80ms for the rest.

Animation Frames

ignore the shadow in the sequences

Damage down

  • Animation sequence: 35, 32, 33, 34, 33, 34, 35
    chara_hero-animated-damage-down-medium

Damage side

  • Animation sequence: 39, 36, 37, 38, 37, 38, 39
    chara_hero-animated-damage-side-medium

Damage up

  • Animation sequence: 43, 40, 41, 42, 41, 42, 43
    chara_hero-animated-damage-up-medium

Implement 32x32 Bat Enemy

Using the General 32x32 Enemy Guidelines:

General behaviors

  • Bat should not enter doorways.
  • Bat decides to move towards player if player is in Rat's possible moves
  • Bat moves faster than player in any dimension
  • Bat attacks player if player walks into Bat's path.
  • Bat can only receive damage when on the ground.
  • When Bat attacks player, player his dealt MEDIUM damage, and is pushed back 1/2 tile

Travel animation guidelines

General travel notes

  • Bat can travel in any direction, but gets blocked by things like pillars.
  • Bat should takeoff (in place), fly in a specific direction, stop and land.
  • At idle, Bat is on the ground and still
  • Bat can only receive damage when on the ground.
  • To emphasize flight, timing for animations are broken down into 3 sections:
    • Takeoff, flight, landing
  • Timing ramps up, sustains and ramps down
    • Takeoff (2 frames): 250ms, 150ms
    • Flight 4 frames, repeating : 100ms each frame
    • Landing (2 to 3 frames): 2 frames(150ms, 250ms), 3 frames(100ms, 150ms, 250ms)

DOWN travel

  • Idle frame: 1
  • Takeoff frames: 1 [250ms], 5 [150ms]
  • Flight frames: [100ms each] 8, 9, 10, 11
  • Landing frames: 5[150ms], 1 [250ms]
    bat-flying-down-example

UP travel

  • Idle frame: 41
  • Takeoff frames: 41 [250ms], 44 [150ms]
  • Flight frames: [100ms each] 17, 18, 19, 20
  • Landing frames: 41 [100ms], 44[150ms], 41 [250ms]
    bat-flying-up-example

Side travel

  • Idle frame: 36
  • Takeoff frames: 36 [250ms], 33 [150ms]
  • Flight frames: [100ms each] 13, 14, 15, 16
  • Landing frames: 36 [100ms], 33[150ms], 36 [250ms]
    bat-flying-side-example

Implement 32x32 Enemy crawling dungeon

Using the Spider Dummy Enemy, implement crawling

Success Criteria:

  • Enemy Spawns facing down & waits 30 frames to decide to move.
  • Enemy crawls 3 - 5 tiles in any direction and pauses for another 30 frames.
  • Enemy cannot leave the current screen (room)
  • If enemy encounters a wall, it stops & invokes the wait to determine next move.

Animation sequences

Walking animation down

  • Animation sequence 8, 9, 10, 11
    02-walking-down-chara_spider

Walking animation right and left

(Right is the dominant pattern. Left is the mirror of right).

  • Animation sequence is 12, 13, 14, 15 and repeats.

01-walking-right-chara_spider

Walking animation up

  • Animation sequence is 16, 17, 18, 19 and repeats
    03-walking-up-chara_spider

Hero controls (General slash attack)

Sword attack animations

  • Please assign this to "A" Button on console
  • For now, we'll keep one single type of attack (slash).
  • Each frame should be ~100ms for this slash attack.
    image5

Sword attack animation (facing right)

  • Animation sequence 24, 25, 26, 27
    image
  • Left is the exact mirror of right

Sword attack animation (facing up)

  • Animation sequence 28, 29, 30, 31
    image

Sword attack animation (facing down)

  • Animation sequence 20, 21, 22, 23
    image

Implement 32x32 Enemy Receive Damage

Using the Spider Dummy Enemy, implement receive damage animation.

Success Criteria:

  • Enemy implements damage animation based when slashed by the hero only.
  • To give life to the damage effect, the enemy will "face" the enemy and invoke the animation. Example scenario: Enemy is facing left . Hero is above the enemy facing down and slashes. The enemy will face up, invoke the damage animation & then remain facing up.
  • First frame of the animation paints the enemy white.
  • For now, the death animation will remain the spinning enemy, but let's add a blinking effect to it. We'll do the final "death animation" in a separate ticket.
  • Beginning frame is the same as the end, creating an "elastic" effect

Animation Frames

Damage down

  • Animation sequence: 35, 32, 33, 34, 35

Damage side

  • Animation sequence: 39, 36, 37, 38, 39

Damage up

  • Animation sequence: 43, 40, 41, 42, 43

Implement 32x32 Goblin Enemy

Using the General 32x32 Enemy Guidelines:

General behaviors

  • Goblin should not enter doorways.
  • Goblin does not decide to move towards player if player is in Goblin's possible moves
  • Goblin moves same speed as player in any dimension
  • Goblin attacks player if player walks into Goblin's path.
  • Goblin moves 1 - 3 tiles in any direction
  • When Goblin attacks player, player his dealt MEDIUM damage, and is pushed back 1/2 tile

Hero controls (General walking)

Terms & definitions

Hero: Protagonist sprite
Player: Human controlling the hero.
Wall: Anything in a map (background) background that that player cannot walk through
Ledge: Anything on a map that causes the player to fall and incur damage.

General rules

(Use Zelda a Link To the Past as reference)

  • All animations/interactions assume that the shadows have been removed (ticket for this pending)
  • Idle frames in the sprite sheet are currently unused (1-3)
  • Hero can move up, down, left, right and diagonally (assuming no collisions with "walls")
  • Once the player releases a single DPad control, animation frame goes back to the first in that set. For example, walking down, frame 8 would be the "idle" state.
    image
  • Foot placement for animations should be consistent so that the hero's and head and weapons bob, instead of feet. See this video as an example. Correct animation is at bottom.
  • All walking animations should continue even if the player hits the wall, not their weapons. (Their weapons are drawn on top of the wall).

Walking animation right and left

Walking right
(Right is the dominant pattern. Left is the mirror of right).

  • Idle Frame is 12
  • Animation sequence is 13, 14, 15, 12 and repeats.
    image

Walking animation up

Walking up

  • idle frame is 16
  • Animation sequence is 17, 18, 19, 16 and repeats
    image

Walking animation down

Walking down

  • Idle frame is 8
  • Animation sequence 9, 10, 11, 8
    image

32x32 Spider: Limit travel to the confines of the sprite itself.

Please update the boundaries for the enemies as follows:

  • Crawling enemies (Spiders, rats) should not allow their images to go beyond the boundaries of the walls at any time. Currently, the spider can go inside of walls.
    image

  • Sprites that stand upright should not let their feet/shoulders go through walls at the bottom, left or right.
    (Max travel bottom and left)
    image

  • Sprites that stand upright should be allowed to let their head go into the top wall as far as ~10 pixels.

Examples:
image

image

Convert character and dungeon assets to 32x32 (rpg dungeon & monster pack)

All sprites need to be doubled (32x32) with the following rules:

Tasks (See example below)

(For each character)

  • Create a 256x704 windows bitmapped image in src/resources/sprites/
  • Set background to #FF00FF
  • Double sprite size
  • Flush sprites to top-left of the a 64x64 boundary (characters only)
  • Lightly modify any sprites that may go beyond the 64x64 boundary

(For each dungeon asset)

  • Double sprite size
  • Set background to #FF00FF
  • Save as windows bitmapped image in src/resources/sprites/

Affected assets

rpg-monster-pack v1.0

  • chara_hero.png
  • chara_slime.png
  • tiles_dungeon.png (tiles for dungeons)

rpg-monster-pack v1.0

  • chara_bat.png
  • chara_goblin.png
  • chara_goblin_sniper.png
  • chara_orc.png
  • chara_rat.png
  • chara_slime.png
  • chara_spider.png
  • chara_troll.png
  • projectile_arrow.png

** SOURCE **
chara_hero

** OUTPUT **
image

Investigate LDK Game as a deployment option

Wiki link: https://github.com/ModusCreateOrg/modite-adventure/wiki/LDK-Game-development-notes

things to solve for in this epic

  • Can we reliably setup a dev env?
  • Can we reliably send send builds over USB?
  • Can we extend our Display, Audio and Controller classes?
  • Makefile conflicts (Mainly Odroid and LDK Game)
  • How to take a binary and push it via USB to the LDK Game's SD Card
  • Develop & Document toolchain for every developer
  • Test Genus and Modite Adventure

General notes:

  • Compilation creates a .elf or .dge. Apps are distributed as Archives .ipk files.
  • Archives contain files like Control, Link, and a few other files.

Control Mixer volume

# vol = 0 to 100
uint32_t soundDev = open("/dev/mixer", O_RDWR);
ioctl(soundDev, SOUND_MIXER_WRITE_VOLUME, &vol);
close(soundDev);

Get current exe path:

	if (path.empty()) {
		char buf[255];
		memset(buf, 0, 255);
		int l = readlink("/proc/self/exe", buf, 255);

		path = buf;
		path = path.substr(0, l);
		l = path.rfind("/");
		path = path.substr(0, l + 1);
	}
	return path;

Implement 32x32 Orc Enemy

Using the General 32x32 Enemy Guidelines:

General behaviors

  • Orc should not enter doorways.
  • Orc does not decide to move towards player if player is in Orc's possible moves
  • Orc moves 1/4 speed as player in any dimension
  • Orc attacks player if player walks into Orc's path.
  • Orc moves 1 - 3 tiles in any direction
  • When Orc attacks player, player his dealt HEAVY damage, and is pushed back 1 tile

Implement 32x32 Troll Enemy

Using the General 32x32 Enemy Guidelines:

General behaviors

  • Troll should not enter doorways.
  • Troll does not decide to move towards player if player is in Troll's possible moves
  • Troll moves 1/4 speed as player in any dimension
  • Troll attacks player if player walks into Troll's path.
  • Troll moves 1 - 2 tiles in any direction
  • When Troll attacks player, player his dealt HEAVY damage, and is pushed back 1 tile

General graphics bugs when opening up app

  • Sometimes when opening up in mac & Linux, the splash animation looks wonky (see image below). Happens at random. Re-run the same code, and crash does not occur. Does not happen in Genus at all!
  • Game crashes :: Process finished with exit code 11 on Linux, Mac and crashes on GO. On the GO, the device just locks up
  • Occurs generally in the Modus animation, but can happen when in the game too.
  • Seems that there is some sort of overflow.

Bug w/out crash

image

Exception information:

image

image

CMake build config change requests.

  • Debugging files in CLion creates a second tab that is flagged as not in project.
  • When running build through terminal, Resources.bin isn’t built for Release build.
  • The rcomp sources are being linked in to the game.
  • CLI build for SDL2 is broken on the mac (SDL2 linkage issue)

In game pause menu

Create an in-game pause menu, which will:

  • Pause the game state completely
  • Display options from options screen (sans game reset)
  • Allow player to save game
  • Allow player to quit and go back to Main Menu screen

[ICEBOX] Investigate SNES-like Mode7 (Affine Transformations) implementation

Would like to see if we can look at some Mode 7-like Affine transformations for Modite Aventure / CE

  • Rotate
  • Scaling
  • Shearing

Thoughts

  • Need Matrix Math
  • Need Affine transformation Math
  • Could be too slow for ODROID GO
  • Requires Additional SPIRAM implementation for the buffers. SPIRAM is dog slow

Examples

Reading & Watching

https://www.youtube.com/watch?v=3FVN_Ze7bzw
https://github.com/wernsey/mode7
http://www.coranac.com/tonc/text/affobj.htm
http://www.coranac.com/tonc/text/mode7.htm
http://www.coranac.com/tonc/text/mode7ex.htm
https://en.wikipedia.org/wiki/Affine_transformation

Credits screen stub

Create a stub screen for credits in order to finalize the Main Menu screen.
Full credits, animations, etc to be done later on

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.