You are browsing as a guest. Sign up (or log in) to start making projects!

Spaceshoot

Hardware
  • 9 Devlogs
  • 14 Total hours

An endless arcade game for Arduino and a touch screen. No images used at all just raw math to draw stuff so it stays fast and the Controls are basic, you just have to tap left or right to switch lanes instantly while it gets faster

Open comments for this post

2h 37m 56s logged

finished the 3D printable body for Spaceshoot and honestly this part took more time than i expected most of the work was not even drawing shapes, it was measuring everything properly and making sure the display actually fits inside the case without weird gaps and since i only know basic cad i built the whole thing directly from scratch instead of using a ready model and slowly kept fixing the dimensions until it started looking right

  • measured the TFT shield using a vernier caliper and scale so the body matches the real hardware instead of guessing the dimensions and then built the whole front frame around the display and adjusted the screen opening until the bezels looked even from all sides

  • spent a good amount of time figuring out the locking system bczz i wanted the display to stay secure without making the case hard to assemble and also i added a proper wall thickness cutouts and fitting space so the body is actually ready for 3d printing instead of being just a cad mode

now i just have to wait for the print to arrive and as soon as i get the body in my hands i will definitely post another update with the final fit and assemble😊😊

0
0
7
Open comments for this post

1h 1m 7s logged

i noticed a really annoying ui glitch on the game over screen, basically when your high score goes above 3 digits the text was just overlapping and looking completely messy jumped into Spaceshoot.ino and fixed it real quick. just threw in a simple if (hiScore >= 1000) check. so now if your score hits 4 digits or more, it triggers gfx->setCursor(15, 195) to drop the actual number down below so the HIGHEST SCORE label stays perfectly clean on top. anything 3 digits or less just runs through the else block and prints normally on the same line like it used to.

0
0
24
Open comments for this post

1h 45m 57s logged

so i thought my last update was gonna be the final one and i was just gonna leave this project as it is🤡 but after looking at it again i felt like it can still be made much better and i also have some more plans for it

so yeah im continuing Spaceshoot there are still some things i wanna try and improve so now im just taking it one update at a time and making it feel more complete i started with the space background because the old stars were looking kinda boring and sometimes they were getting drawn over the player too

fixed that and then added 3 different types of stars

  • the first one is just a tiny normal star which stays mostly simple in the background using a basic gfx->drawPixel() call. the second one is a bit bigger and has a small blinking and glowing effect using a millis() based phase timer so the pixels change for a short time and it don’t look like every star is just a fixed pixel. the third one is a shooting star or falling star which moves diagonally (starX += 2 and starY += 4 every frame) with a small custom drawn trail behind it, so it gives that quick falling star effect and makes the background feel way more natural

  • also added some spacing logic for the glowing stars using a glowStarTooClose() math function that calculates squared distance against a GLOW_STAR_MIN_DIST of 48 pixels so they dont randomly spawn too close together

i still have some plans left for this so yeah…🙃

0
0
30
Open comments for this post

1h 42m 34s logged

so i thought the hardware phase was over but my old tft screen randomly died😭, got a replacement that looked exactly identical but obviously the touch refused to work and it turns out these cheap screens have different internal wiring depending on the batch

  • wrote a raw diagnostic script to test and figured out the pins were totally different. had to swap xp and ym to digital pins 8 and 9 and route xm and yp to analog a2 and a3 just to wake it uponce it was finally alive it started reading garbage noise with the z axis pressure hitting crazy numbers like negative 13681 out of nowhere added strict minpressure 5 and maxpressure 3500 limits in the c++ code to filter out all the fake ghost inputsthen realized the manufacturer slapped the touch digitizer upside down lol

  • tapping top left was registering at the bottom right instead of messing with wires i just inverted the coordinates in the arduino map function and changed the y axis map to flip 320 to 0 through softwareright at the end when testing python threw a permission error 13 access denied on com5. took a sec to realize the arduino serial monitor was still open in the background and locking the port. wiped out all those annoying hardcoded magic numbers and threw in proper define macros for screen size, lane boundaries, and touch limits. also killed off duplicate render functions and moved repetitive logic like asteroid spawning into neat little helper functions so making changes later wont feel like painbtw i wanna apologize for this mess coz as u guys can probably see even this new display has started showing random lines on it already hardware is just pain sometimesbut

so even with those lines on the screen🥲 the game still works fine just like you saw in the previous devlogs also uploaded a fresh demo video on youtube so you can check out the actual gameplay there

1
0
10
Open comments for this post

57m 8s logged

the game is pretty much finished and very close to a fully playable version and most of the planned features are already done, bugs are also mostly fixed and right now everything feels stable during testing. there is still room for small improvements later but overall it finally feels like a complete game instead of just a project prototype

  • i redesigned the player and tried giving it a look inspired by one of the Stardance⭐ star characters while still keeping it simple enough to draw with pixels on the display 😭

  • I changed the text that previously displayed ‘scr’ and replaced it with the full word ‘Score’.

  • fixed a visual bug where background stars were passing through the character and cutting parts of the sprite while moving across the screen

  • fixed another issue where the smile and face pixels were not getting cleared properly while switching lanes and would sometimes get left behind on the screen and did some cleanup around collision and rendering code to make gameplay feel smoother and reduce weird visual glitches during longer runs

4
0
232
Open comments for this post

48m 48s logged

a proper lifeline system because instant game over was getting way too annoying lol. took inspiration straight from minecraft to sketch out the pixel art hearts using raw coordinates instead of images. completely wiped the spaceshoot name from the top bar so we now have empty space to draw the 3 hearts right inside the main ui loop

  • basically swapped the instant death logic with a lives = 3 state check. if you hit an asteroid it just drops a life, clears the screen, and resets the obstacle back to the top. i also coded a health drop engine that randomly spawns a heart collectible every 350 score

  • added a basic capped logic so if you catch a heart while already at max health nothing happens, but if you are low it refills the health and updates the top display instantly.

0
0
11
Open comments for this post

1h 0m 42s logged

so finally coded a proper home screen menu today but damn fighting screen coordinates was painfull coz text was cliping into the gameplay scene. fixed the math to force everything into a single centered line, drew a messy sketch style custom border for a raw hand drawn look, and shifted the play button to the absolute bottom using explicit pixel offset positioning to give it brething room. also cleared the spaceshoot name text from the top bar on the gameplay screen to keep that exact pixel space empty for displaying the upcoming heart matrices and lives counter.

the plan is that now we are ready to implement that 3 lifelines system where hearts drop as collectbles around 600 score to refill lives instead of instant game over and plus maybe a temporary circle shield to absorb hits.

0
0
8
Open comments for this post

2h 8m 24s logged

so today i finally got the main gameplay loop working properly after fixing some annoying screen flicker issues. here is what i got done

  • designed 3 entirely different asteroid shapes using raw geometry matrices instead of just rendering basic boxes as before

  • shifted the player spaceship 20 pixels down toward the bottom so you get a bit more reaction time

  • hooked up EEPROM to save and load your highest score even after the board unplugs and brought back actual collision logic that triggers the red game over screen with your high score

0
0
11
Open comments for this post

1h 51m 5s logged

so this is my the first devlog for this first project in stardance and honestly i thought i would start with actual game dev 😭 for this i am using an arduino uno R4 wifi and a 2.4 inch TFT touch display shield which mounts directly on top of the board. before building the game itself i had to spend quite a bit of time just testing the display, touch screen and libraries coz nothing was working perfectly from the start. lot of trial and eror and compile errors and random issues before finally getting things moving in the right direction.

  • spent most of the time testing different libraries and examples coz i wasnt getting a proper setup initially and had to go through multiple errors before finding the right path

  • finally decided to stick with MCUFRIEND_kbv for now after testing different options and checkjing which one gives better support for the shield

  • started creating some very basic game elements first and used them for display and touch testing instead of just relying on simple demo screens

  • worked on touch calibration, coordinates and pixel positioning so touches actually register in the correct place and left or right controls behave properly

  • added a score system and also implemented difficulty scaling where speed increasess after every 100 score to make gameplay a bit challenging

  • created separate screens for stuff like Game Over and Touch To Go so the game can properly show different states when you lose or restart

overall this was mostly a testing and setup session but it helped cleared a lot of confusion

0
0
11

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…