I title this WIP because this is about as far as I got with this project before I realized it would take a fantastically huge amount of time to properly flesh out. So, I might try to update it but I more so wanted to release this project in case someone is interested in making a Pokemon style game with all of the assets already implemented.
TL;DR A lot of the code is superfluous and hastily typed in favor of rapidly displaying what is essentially needed. It's basically pre alpha code if you wanted to use it for your own project.
I've been working on this idea for about a year total on and off. The original concept (aside from really liking pokemon) came from a challenge meme image. I tinkered away at the art and whatnot and wrapped my head around sspr concretely the first time around while working at this.
• A start page screen demonstrating a custom Pico-8 Game intro sequence.
• An in-start page screen displaying small scale spr() of each mon as well as the entire sprite map.
• Custom simple art positioned in a typical format of a conventional rpg in-start screen.
• An arbitrary simple loading screen with screen paging already arbitrarily added.
• Custom Assets for (presumably) Fakemon concepts and their potential usage.
(e.g. mini sprites & modeled upscales)
• Even more Custom Assets for general game design e.g. tiles and random colorful sprite work
• Somewhat thoughtful naming and ordering, elemental typing, egg hatching of each mon.
• Simple movement for one player implemented. Random iteration of mon sprites for debug, following mon.
• sspr() upscaled examples of each mon with its name and associated early note ideas about its concept.
• Tabbing with (z,x) to view each mon.
• Sprite sheet page 1 displayed on debug screen.
• Mostly nothing!
This is really just a demonstration of what can be done with the engine with just a little bit of tinkering away. You are free to use all of the code and assets as you please. Check another post I had in my Bren's Pico-8 Prototypes to see an example of another Pokemon inspired small creation. It could be useful if you're going for a "generation 3" look and want to add to this engine with event functions. (post cross link here https://www.lexaloffle.com/bbs/?tid=44439)
[this space for if I update this post with future revisions]
version: pre alpha
To keep with the Pokemon theme and all of their cool version names, if you make a work inspired by this post, consider this version to be called Thunder Electrum Version, for the mon on the cart's photo,
Hight: The electric sky dragon!
A bunch of prototypes I worked on from January - June!
Completely free to use, modify, and distribute.
Utilizes a date time format in months days with version and revision modifications if it has any. Non date time alphanumeric versions generally constitute a branched version that occurred around the same time or was previously a version listed here. This post references a future release of another prototype which will be cross linked with this one.
Movement Changer, zx/udlr controls movement of player sprite and relevant changes to it dependent on button press. Rectangle transforms dependent on button press as well, and the surface is randomized at runtime. Displays creation date anchored at player sprite object.
Viewport Distance Scaler, renders a simple viewport environment with rectangle objects representing distance object transforms. Utilizes zx/udlr to scale viewed world space as well as modify slope of local object, which is a guide line transform relative to xyz axes. Distance and rotation are printed in simple form at screen object.
Simple Distance Difference Manipulation, prints two sprite objects. Use udlr to simply modify their difference in two ways.
Demonstrate Fake C Function, more of a note than a program, a simple roundabout "fake" C with a basic parse function. Attempts to analyze both lua and C syntax. "for loop a repl to emulate c" was the original idea for this thought experiment project.
CamXYZ Simple View Render Transform, demonstrates a basic guide line, use zx/udlr inputs to transform guide line relative to the rendered space's dimensions.
CamXYZ Simple sspr Transform, a revision of camxyz, utilize zx/udlr to manually transform sprite objects in the world space. Uses the art of a different engine I have worked on (crosspost referenced in this post https://www.lexaloffle.com/bbs/?tid=44466) to demonstrate the warping of any arbitrary sprite object.
Star Map Notation Scheme Concept, demonstrates the usage of a loop work space for note taking within the editor displayed on the canvas. Use zx/udlr to make arbitrary transforms with the text and HUD objects. Employs the theme of displaying text as well as circle and rectangle objects to represent world space and object distance. More of a fancy HUD note taking program, it also shows an example of how a first person space sim game viewport perspective could look.
Noter Simple Page Display, outputs a rendered page with most of the turning and movement logic already implemented. Meant specifically as a note taking program.
String Specific Haltable Continuable Message, a revision of 0316, use zx/udlr to switch pages and manipulate the character object / world object / specific object / and or text objects. Utilized as both an internal note taking program for self reference and planning, as well as an in-editor example of overly roundabout ways of taking notes in pico-8 and manipulating them in the world space. Features some syntax notes as well as very general basic object transformations. Includes a local notation for important or specific notes. Displays page number as well as canvas object number.
Story Append, a "story" that uses multi line string as well as the append function.
Meditation, a small game that takes place only on the first tile of the canvas. Use zx/udlr to increase the "meditation" score slowly or less slowly, and move around in the environment to complete objectives and view objects. Certain events only exist if requirements are met.
Magnifying Glass, a revision of 0408-2nd that makes the character sprite a simple "magnifying glass" sprite object.
Viewport World Space, a revision of 0408-2nd-1 that utilizes the camera() function anchored on the character sprite. Use zx/udlr inputs to interact and view the world space freely with the camera following along.
Arbitrary 3D Object Space Transform, renders some simple example sprites based on spr(0) that demonstrate 3d object transforms. Use zx/udlr inputs to manipulate the object in a pseudo 3d space and resize or move it around. The original idea behind this one was to arbitrarily viewport render the edges of a cube's corner, either inverted or normal, and transform them within any given space. Displays the xyz coordinates in the top left in newline fashion depending on button key press.
Simple Program Function, literally named, demonstrates a few of pico-8's internal functions. Uses for, sets, functions, poke, and list manipulation with the pairs(k,v) function.
Iterable Simple Function, literally named, is a fork of 0411 to just simply show line iteration functions with fancy multi-line notes and goto flag to arbitrarily manipulate the text output.
Isometric Or Top Down Adventure Wanderer, despite being an incomplete project, this is also technically a game. Use zx/udlr inputs to discover hidden features (reach specifically -128,0 0,128 128,0 128,128 coordinates and press each of the buttons) and secrets of the world space. Uses goals and triggers to determine if certain events occur. The player is rendered in two ways, both in an idle sprite which defaults to facing south, as well as a somewhat 2.5d overlay which blends which direction the character is looking. Sprite transformations using sspr() are shown outside of the game space. A player sized sprite of an interactive event is used to represent a world entity, in addition to the interactive button entities. World space events occur and are simply rendered on correct event flag.
Bren's Super Simple Pseudo-3D Object Renderer, as the name suggests, this includes a couple of extremely simplistic objects to demonstrate both viewing object(s) from the viewport, and also acts as a repository of objects to tab between while modifying. Includes "nil" "hand" and "wireframe sword" as tabbable objects, though it is expandable despite its simplicity. The objects and world space move slowly to show potential 3d transforms if added, or simply to keep the working space non static to demonstrate the real working coordinates associated with the objects.
Literal Coordinates Distance Renderer, displays a literal representation of coordinate system with dotted intersections. Use zx/udlr inputs to manipulate the plane and the rectangle object that represents distance within the plane. Features a button combination skip (z+x simultaneously, may take a few tries) to change the viewport coordinates location to x=32760 y=-32760 which has a large sspr of spr(0) rendered at the intersection of maximum coordinates.
Literal Coordinates Object Renderer, essentially the same as the 0423-2 revision, use zx/udlr inputs similarly to manipulate the world space. This one incluses a simple sspr of spr(0) which transforms in the viewed world space relative to key press. (z+x to skip to x=32760 y=-32760)
0404/0426 (Flashing Lights Warning)
Output Noise, a simple implementation of rendering very many colorful objects at once using for() loop. Demonstrates arbitrary usage of the aforementioned looped objects, as well as something like a simplified screensaver concept using rnd().
Simple Background Transform, similar to 0409, uses just spr(0) representations as 3d space sspr() transform objects in front of the viewport. The particular transforms in this example were intended to replicate the same shape in the space as moving background objects would represent and occupy. Prints out the values of the transformed axes on screen.
2DTo3D, using many variables, displays a viewmodel for a player's left and right hands from the viewport perspective. Use qa/sfed/zx/udlr to modify statistics relevant to button press (qasfedzx) as well as move the character around in 2d space (udlr) that looks close to a 3d space. Demonstrates usage of further buttons accessible to pico-8 as well as creating the 2d space for a simplistic walking simulator type of game where objects are approached and interacted with, on an immutable plane to show on-rails or strictly 2d prior to 3d logic.
Two Player Button Press, as the name suggests, qa/sfed/zx/udlr to print relevant button presses. Displays the key number pressed along with a glyph to uniquely represent it.
Boundary Box Screensaver, an endlessly looping box that will appear to wrap around the screen as it iterates.
Light Shadows sspr, a very simple additive volume with light and shadows using for().
Item Stat Randomizer, as the name suggests, a very simple item stat randomizer. l to additive randomize, r to equivalent randomize. Not a realistic application of its name, but still a basic example of what it can achieve.
Go Inside The House, world object that is in an interactive entity. Logic is in place to allow the player to enter into a rendered room, with bounding box coordinates, as well as exit the house via a staircase. The house itself also has simple logic to make it feel like an object with world space physics. Z coordinate is broken, so immediately returns the game to console. udlr to move around and test the boundaries with the house's physics.
Hellbent TARDIS demonstration of the early predecessor to my TARDIS post (crosslink here https://www.lexaloffle.com/bbs/?tid=43092) Features a mock up of the design of the Hell Bent Episode TARDIS from Doctor Who. Objects within the world space transform relative to the player's position. Use zx/udlr to approach coordinates 102 102 102 to trigger an event flag and get closer to the TARDIS.
a revision of 0527-1 that displays a sprite of the intended console object outside in the world space while traveling. Approaching coordinates 102 102 102 and advancing forward allows the player to trigger the event flag which clears the world space to become indoors, inside the TARDIS. The TARDIS interior displays the mangled sspr() sprites of the interior TARDIS console design enlarged and given xyz space transform properties. zx/udlr to interact with the world.
a revision of 0527-2 which features a modeled TARDIS console within the TARDIS interior. This was the second to last revision before the final version of the TARDIS cartridge mentioned and cross linked in 0527. zx/udlr to interact with the world.
last revision before the final modifications to the next version and final release. A few changes are made to the model of the TARDIS console. zx/udlr to interact with the world.
similar to 0523, this concept uses a span of sspr() from the canvas to create a pseudo 3D world. Each surface viewmodel area screen tile represents a separate object and background, which is manipulated in 3d space. zx/udlr to move around.
a revision on 0606, this version adds a flag condition to represent the possibility of using event flags within the pseudo 3d world. Prints the name object in front of you when within a certain distance. zx/udlr to move around and interact.
increases or decreases the size of a circle object and moves it around. The circle is anchored to a line bound to 0,0. zx/udlr to manipulate the circle.
A simple tech demo I threw together after months of fiddling around with ideas.
It's barebones, pseudo-3D but it works.
Inspired by Doctor Who's titular spacetime-timespace travelling vehicle, as well as a fellow BBS member Trasevol_Dog's post "Lands of Yocta."
z/x to move backward/forward
s set coords to inside TARDIS interior
(or z+x+up+down if on mobile)
You spawn in the overworld, which is just near 0,0. You will see The Doctor's Type-40 TARDIS among some very programmer-art grass. Either match the x,y,z coordinates to 102,102,102, or hit 'S' to enter into the TARDIS, where you will see your TARDIS Console.
Please note since this is a demo there are some very obvious bugs. Since this is also pseudo-3D there will also be some weird behavior with sprite transformations e.g. if you move too far forward or backward.
There's also a slight easter egg, if you enable DS=2 then you will see a small TARDIS console sprite based on the original unreleased 2D project this was inspired from. Since this is the original police box design, there's a neat little sprite of a "repaired chameleon circuit." I might add the original Type-40 shell design from e.g. "Heaven Sent" but for now I think the good ol' police box looks fine and dandy.
(Added! Do te=0)
I'm sure someone with way more 3D experience could make something way cooler than this, but as a first success in making something like this, I'm proud to have completed this small yet challenging project!