Log In  

Mox Wild West (WIP)

Cart #moxwildwest-6 | 2024-04-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

Story

[8x8]

The story about Mox unfolds in a small canyon enclave, where he's stuck and can't escape. The canyon has been overrun with bandits and other mysterious creatures. There are trains passing multiple times every day, but they never seem to stop in the small town, maybe he can find a clue? (wip)

Controls

[8x8]

Press πŸ…ΎοΈ/X to shoot (pick up a weapon)
Press ❎/Z to ... (WIP)
Press Start/Enter to open character menu and map, you can also change equipped weapon with ⬅️ ⬆️ ➑️.
To open Pico Menu, press and hold Start or open character menu and Press ❎.

Gameplay

[8x8]

There are 3 different types of weapons scattered around the map, they each have their own strengths and weaknesses.
The weapons have a reload time (shown by a blue bar under the player) and a max number of bullets pr. round/magazine.
Explore the map and kill the enemies and creatures you encounter.
Use the surrounding environment.
Pick up Ammo for your guns. (the ammo you pick up counts towards your currently equipped weapon)
Pick up Health kits to survive.

The enemies and creatures currently respawn when you have cleared the whole map. (shown in the top right corner or red dots on the map)

Vision

[16x16]

Small Wild west game with a minor twist of Dune.

The project is still very much work in progress, as I haven't figured out the whole gameplay loop yet.

Currently using the ingame map editor and its limits, I'm considering moving to other solutions to make larger maps.
Close to token limit, but lots of possible optimizations with my sloppy code. :)

This is my first Pico8 game and my first game to hopefully release.

Feel free to give some suggestions for improvement.

Todo

[8x8]

  • Rework some creatures.
  • Fix diagonal movement
  • Figure out the respawn system.
  • Add more particles to make a more dynamic environment.
  • Improve the very bad enemy AI.
  • Add more enemy types.
  • Rework SFX.
  • Rework weapon selector in menu.
  • Rework Ammo stuff.
  • Create/find some fitting music.
  • Fix bugs.
  • Add small story elements.
  • Add more stuff to the housing.
  • Tweak UI.
  • We need some tumbleweed!

Changelog

[8x8]

Version 0.76

  • Added respawn timer.
  • Added kill counter in the character menu (start).
  • Added blue axe men.
  • Increased XP values of enemies.

Working on lots of other stuff :)

Version 0.75

  • Added some randomness to the enemies y axis to make them more difficult (avoiding bullets)
  • Changed spawn tables to strings, saved 900+ tokens :>
  • Decreased the health of some enemies.
  • Increased max ammo count and loot.

Version 0.74

  • Minor spelling fix.

Version 0.73

  • Added dust/sand particles for the environment.
  • Added smoke particles for the train.
  • Added temporary respawn mechanic. Enemies respawn when the whole map has been cleared.
  • Added cleanup to avoid overloading the cpu (there can never be too much blood :( )
P#146265 2024-04-10 11:43 ( Edited 2024-04-16 21:51)

That a very nice WIP.
AI should be improved, for example, enemy humans should aim to move below or above the player instead of neatly aligning themselves with your gun and should avoid staying on the train tracks. Ammo is confusing, you always get ammo from the type of gun you are carrying ? If every weapon is of the same caliber, the amount gained should be fixed, but the number of bullets consumed per shot could vary.
Reload could also vary depending on weapon : manual reload, possibility or not to move while reloading, possibility or not to shoot if there are bullets left in the gun while manually reloading, plenty of balance opportunities.
The train tracks should lead to an infinite tunnel, you'd die if you try to cross it, but it would make more sense than a solid map border... Unless the whole map is a zoo on an asteroid and the train goes around the asteroid and picks the aliens on the inaccessible side ? That would explain why everything resets: I'm getting healed and memory wiped after each near-death, and have been an attraction since I was abducted in 1880... The one of a kind far west human cage, with its reconstituted environment, including the anachronistic flying pollution, not accurate, but educational, the little blagrs love it.

P#146367 2024-04-11 15:10

Thanks your trying out my game and posting feedback, very appreciated.

Yeah the enemy AI is very lackluster, that needs some work. I agree with the ammo mechanic being confusing, I'll add that to my to do list πŸ˜‰

Making a tunnel for the train is a good idea, but it will require some tinkering with the camera, I want it to keep it lining up with the outer wall. The train could flip direction randomly, change color scheme etc to spice it up.

Your story sounds cool 😁

P#146442 2024-04-12 10:21

@Klumz You said you wanted to use a bigger map. How big do you plan it to be ?
If 4 times the current size is enough for you, you're just a few pokes/mem copy away from your goal:
The current map is the default 64x128 tiles and takes 8Kb.
There's 32Kb of user space at 0x8000.
map() has a maximum of 256 tiles for it's width, so you could quadruple the map height (256x128), or double in each dimension
(128x256)
Nothing stops you from using exotic dimensions like 181x181 (biggest square that fits in 32K), but using multiples of 64x128 means you can have 4 carts holding each a quarter of your big map, and can use the standard map editor without problem.
To initialize your big map at game start:
change map adress in memory
poke(0x5F56,0x80)
change map width to 256 if needed
poke(0x5F57,0)
change map width to 181 if needed
poke(0x5F57,181)
No need if map width in tiles is 128

Loading the big map in user memory can be a bit tricky as you'll need to use strings, pokes, and decompression to have your 32K worth of map data fit in your cart. Map data is usually highly compressible, for starters, you only use 128 sprites, so the first bit of each tile index is always 0 in your case.

If you want more than 4 times the size, you'll need to use a library as new map data will have to come from lua during game play, map() only won't be enough for you.

P#146740 2024-04-16 10:37

Having 4 different 64x128 maps would be ideal and I prefer being able to make the maps in the map editor.

How would a project like that look? Would you have a cart with all the main game logic and 4 carts with different maps?
Would you then export the map as a string in your map carts, and then have a load function in the main cart or how does that work?

I'm still pretty new to pico8 and all the poke, memory and multicart stuff confuses me :)

P#146796 2024-04-16 20:37

Locally, you'd have 6 carts :
game.p8 writemap.p8 map1.p8 map2.p8 map3.p8 map4.p8

map1.p8 ... map4.p8 is self explanatory, your four big map quarters.
writemap.p8 would load the four maps with reload() into the 32Kb at 0x8000, compress the big map into the map area at 0x1000, and then write the compressed data into the map area of game.p8 with cstore.
It could also copy the 128 first sprites from map1 to map2,map3 and map4 to avoid bad surprises, for example.
In the _init() part of game.p8, you uncompress the data from 0x1000 into the user memory at 0x8000, set the map address and width, and you're done.
In the end, game.p8 is the only cart that needs publishing, a single cart game.

For the compression/decompression method, check PX9 by zep :
https://www.lexaloffle.com/bbs/?tid=34058

Note that you can't get data from a different cart with reload on the bbs, but you can bundle a bunch of carts into a single html export, and have cross access between the carts of the bundle.

There's a simpler but more clunky way to do the big map without using compression, but it uses an undocumented feature : the user data after 0x8000 is not cleared when a cart loads a new one with load.
You could publish four carts, where cart1 copies its map quarter to the user part and loads cart2, cart2 does the same and loads cart3, cart3 does the same and loads cart4 that puts the last quarter in user data, and runs the actual game.
The big risk is that the game might beak if this behavior is changed in a future version of pico-8.

P#146799 2024-04-16 21:55

[Please log in to post a comment]