Activity

Whatsup

The scoring system is finished aga-dance. Might be changed later on but this is what i have now:

Points for Placing: You now get base points just for dropping shapes onto the board (1 point per square in the block).

Bigger Multi Line Bonuses: Clearing multiple lines at once now gives a bigger point boost, instead of just a flat rate.

Infinite Combos: Your multiplier will grow endlessly as long as you keep your streak alive, allowing for big scores.

Three turn streak breaker: You have up to 3 turns to clear a line. if you place 3 blocks without a clear, your streak resets to zero.

Saved High Scores: Your high score is saved to your browser.
Basically, the game now rewards multi line clears and long, uninterrupted streaks.yahoo-applause

0
Whatsup

i added UI elements for the score and best score. They are currently only for visuals as i havent properly created the scoring functionality yet, but im working on that right now. The painful thing was placing these correclty because some sizes caused blurriness, so i had to make adjustments. I also had to change some pixels on the spritesheet using piskelapp.com. After all that i finally ended up with a semi finsiehd scoring UI. Lastly i polished the grid by adjusting its positions and sizes so its more centered aswell as adding a background. thumbs-up

Attachment
0
Whatsup

This devlog doesnt contain any visual changes, only code cleanup and better asset management.
Basically my code was a bit cluttered with assets and layouts scattered everywhere so i decided to clean it up a bit by separating asset loading, layout and grid positions. This makes it easier to add more UI elements in the future without alot of problems, and modify them in a more readable manner.
My laptop is alright now so heres a video of the game in its current state.

0
Whatsup

I thought the UI looked a bit plain so i found game assets from freegameassets.net and updated the ui with sprites. It isnt fully implemented yet with some UI inconsistencies plus some values are hard coded. This and the performance will be improved later on.

Attachment
0
Whatsup

This took longer than needed. I basically tried mimicking the hand generation algorithm used in the real game and tried and rewrote many times to make it perfect which i am incapable of as of this moment aww. I tried different algorithms, and could never find the right one. So i have finally landed on one i deem acceptable, and maybe overly complicated, but its alright for now. I added simple scoring and combo system that will improve later. Heres a short summary of the algorithm (which definetly has flaws):

The game needs to give you 3 pieces every round that are playable but not random garbage.

  1. Read the board. Count how full it is (fill%) and find rows/columns that are 1-2 cells away from clearing.

  2. Pick piece categories using weighted dice. Empty board? Mostly chunks and fillers to build up. Half full? Mix in line pieces. Nearly full? Spam small helpers so you dont die. The weights shift gradually.

  3. Generate candidates. Roll 3 pieces from those weights, check each one individually fits somewhere on the board. If yes, score the hand by simulating “what if the player placed each piece in its best spot?” then count how many lines would clear and how many lines get pushed to 6-7/8 filled (setup moves).

  4. Pick from the top 3. Do this up to 60 times, keep the 8 best hands, then randomly pick from the top 3.

its not perfect but its better than the complete random algorithm i had before. Also my old laptop gave up on me a little so i couldnt take a screenrecording, but atleast theres a picture pf .

Attachment
0
Whatsup

Created more shapes like diffrerent rotation of the T, L, Z shapes and a new diagonal shape aswell as vertical lines.

Attachment
0
Whatsup

I added a highlight feature that shows which rows and columns will be cleared when placing a block.

First i created a temporary grid simulation by copying the current grid and applying the ghost block placement to it. Then i checked which rows and columns would be completely full using the same logic as the clearing function.

Then i created a separate highlightLine function that draws full color blocks on any cell thats part of a clearable row or column.

0
Whatsup

phewwwww this took a long time hellmo . But my big brain did it big-brain

I made the game playable. Added recursive hand validation to ensure all pieces are placeable. Also separated the hand logic from blocks.js where it was previously.

Created a function that recursively checks if all 3 pieces in a generated hand can be placed on the grid in some sequence. The function:

  • Simulates placement of each piece at every valid position
  • Recursively validates remaining pieces can fit on the updated grid
  • Ensures generated hands are always solvable (player must find the strategy)
  • Triggers game over only when no valid 3-piece combination exists

Right now game over is displayed in the console and nothing happens after. I havent tested every possible bug that can be made, but hopefully there wont be any. thumbs-up

0
Whatsup

Added a function that clears the rows and columns when all cells are filled. Also just realized i havent shown mobile version so heres a video of the game in its current state on IOS Safari. yahoo-applause

0
Whatsup

In this devlog i created a ghost preview of where the shape is about to be placed on the grid. Lowkey didnt know what to do when starting cuz i have never done this, but then i realized the calculation is more or less the same as placing it on the grid, but instead of placing it you just draw it with an offset. big-brain

0
Whatsup

Solved the problem from previous devlog. Basically when dragging and dropping block shapes onto the grid, certain shapes would place one cell off from where the mouse cursor indicated. Some shapes placed correctly while others didnt. Some would also overlap other blocks already on the grid. noo

It had two problems: hmm_sus

  1. When picking up a shape, the code immediately centered it on the cursor, causing a “jump” effect. The original click position relative to the shapes center wasnt preserved during dragging.

  2. The pointerup handler calculated grid placement from the shapes center using Math.floor(shapeSize / 2) offsets. This created inconsistent results. Even sized shapes (2x2, 4x1) center falls between grid cells. Odd sized shapes (3x3, 1x5) center falls on a grid cell using the same offset calculation for both caused the 1 cell placement error. Solved this by calculating from top left instead of center and then rounding with Math.round() giving it a better “snapping” to grud behaviour.

The overlap issue was a because of this misalignment. the shapes would calculate their grid position incorrectly which woulsd bypass the isValid checks intended cell allowing placement on cells that were already filled. sobdissolve

Yeah anyways other than that bloody issue, i added a feature that removes placed shapes from the hand and generates a new hand when the current one runs out.hehehehaw

1

Comments

Whatsup
Whatsup 21 days ago

Maybe too many emojis think

Whatsup

The shapes are now placable on the grid by dragging them. They should not be able to be placed if the shape is outside the grid or if the shape overlaps other blocks. As you can see in the video it still places the shape as long as the start position is inside the grid. It should only place when the whole shape fits. I will fix this next time.

0
Whatsup

Finally finished the dragging function happi it works on both mobile and pc. On mobile the browser started to scroll when dragging the pieces so i used “touch-action: none;” in the css for the Canvas element which solved the problem. I also separated shapes, game config etc into own files so they are better managed.thumbs-up

0
Whatsup

Just wanted to make a quick devlog. I have made it possible to create a hand of three shapes that generates randomly. Currently im working on making them draggable but that will come in the next devlog so all this time didnt just go into placing them lol.

Attachment
0
Whatsup

Worked on the shapes and a function to place them on the grid. Heres a little showcase of some of the shapes like S shape, Z shape, Big small L shapes, corner shapes, squares etc placed on the grid using the new function. You can also look at the console to see how the grid updates. thumbs-up

Attachment
0
Whatsup

created the blocks and the glossy effect which was a little more difficult than expected. Also adjusted grid and background color.

Attachment
0
Whatsup

Started with the setup of the canvas. Then i created the grid layout for the game. Might change later as perfect styling isnt the priority yet.

Attachment
0
Whatsup

Shipped this project!

Hours: 32.1
Cookies: 🍪 749
Multiplier: 23.34 cookies/hr

I created a typing speed tester which was inspired by monkeytype. Its mobile friendly and with some difficulty options to choose from like easy, medium and hard for passage mode and punctuality and numbers for timed mode. I met alot of challenges along the way but i finally made it to the end and learnt how these tests actually work. Hope everythinng works as expected and you like it happi

Whatsup

The project is basically done now. I added better punctions and number generations with capitalization on words that comes after a word that ends with “. ! ?” etc. I worked on the mobile version aswell as the ReadME. thumbs-up

1

Comments

Haskell Main
Haskell Main about 1 month ago

Love it! A suggestion if you could please add a setting for some people to reduce the delayed reveals and cursor movements as someone with fast typing might want fast instant feedback. :) nice project tho

Whatsup

So i went a different route than i started the previous devlog with. Instead of rolling through new quotes and removing old ones from the DOM that caused alot of problems i decided to just scratch that idea and get a big list of words (got from monkeytype repo) and just generate some random words on the page and add punctuation and numbers option. Not perfect spawn rate for those yet but will improve it. On passsage mode i decided to keep the easy, medium and hard options for the quotes. If you think thats alot of changes for 30 mins you are right. I lost over 1 hour of work because of some bug that didnt let flavortown sync correctly with hackatimecryin sobexplode

0
Whatsup

i added a confetti animation when beating your high score. Also i added function that loads in new quote when you are about to reach the end of the current quote. IDK if its just my laptop being hella slow and bad but it had a lot of performance issues when it the quotes started to pile up so i had to solve that by creating a DOM cleanup function that just removes the spans that are out of view. Doing this made alot of problems and i had to work around them aswell as restructure my code. Right now the layout shifts when loading and unloading the quotes but i will hopefully fix that when i have the time. sad-pf

0
Whatsup

Worked on the stats calculation a bit also added function that prevents you from going back with the backspace to a previous word. Basically if space is entered in its correct place it marks it as word completed and you cant go back beyond that point. The keypress is still measured in the accuracy calculation. Also i added personal best function that gets saved in localstorage. For that i added different overlays. One is standard test complete that pops up if nothing special happens. The other one pops up when you completed a test for the first time marking your baseline. The third one pops up when you beaten your best score.

0
Whatsup

Biggest change here is a test completed screen overlay that shows your stats in the end. The reason why this took so long is because i started creating a type of start screen and finished it but then i thought whats the point in a start screen?sobexplode it would just be an inconvinience so i removed it. Then i worked on the test over overlay which took long because of the css which is a pain. Also small changes like removing text in the restart button and i changed the accuracy calculation by still counting the mistakes you corrected.thumbs-up

0
Whatsup

I have limited the lines to show max three lines and scroll as you type. It starts scrolling each 2nd line. I tried so many different method for this one as one solved a problem then caused another etc. In the end i found the solution but then the caret wasnt updating properly all i needed was to place the scroll function call so it happens before updating the caret position then i had to remove the smooth scroll behaviour in the CSS so the delay would be gone and update it instantly. Also removed the underline on the correct characters so its a bit more readable.

0
Whatsup

Wow this took a long time. I added WPM, accuracy stats and timer for timed and passage mode. I also improved the resets and added endTest function. The WPM calculation took so damn long to figure out myself. Shouldve just searched for the formula lmao.

0
Whatsup

The site now gets a quote from my data.json file that has all the quotes saved. Firstly it gets the difficulty that user has selected (default is easy) then it gets quote array of that difficulty and selects a random quote from that to display. I also centered the text so it looks a bit betterfastparrot

0
Whatsup

Added a caret and function for the reset button. The rest of the things doesnt have a function yet but soon it will. I also kind of blocked the hidden input by disabling the arrow keys and keeping the inputs caret at the end so the user cant accidentally go back and only be where the visible caret is. Heres a video of how it looks rn. Pls excuse my bad typing lmao skulk skulk

0
Whatsup

I finally got the typing working. It tracks each letter typed and adds a incorrect or correct class. The backspace works correctly aswell. Took long because i put three equal signs on the null check so it only checked if it was null and not undefined so it never removed the classes when using backspace lol. When i realized i removed one = and it worked again sobdissolve

Attachment
0
Whatsup

Finished the mobile layout and the desktop layout. Tried to make it as responsive as i could but hadnt worked properly with CSS for a long long time so i was a little rusty. Took a bit much time to get this layout right even tho its a simple one.

Attachment
Attachment
0
Whatsup

doing a quick devlog. i finished the dropdown menu for difficulty and mode. Also added toggle on and off function for it that toggles the visibility by adding and removing a “show” class. also started with the actual typing area. Basically the text will go over the user input and the user input will be hidden so it looks like you are typing the letters.

Attachment
0
Whatsup

Gonna be making a typing speed tester. i started with the layout of the page. Doing the mobile first approach.

Attachment
0
Whatsup

Shipped this project!

Hours: 49.24
Cookies: 🍪 1460
Multiplier: 29.65 cookies/hr

Soooo i made a remake of Flappy bird in HTML5 canvas. I used classes in JS for the first time ever so both of those things took a bit to learn. I watched freecodecamps videos about Canvas so i learnt about how it worked while i was making the game. Alot of errors and tries but i made it to the end. I had alot of fun and i put alot of effort into this so i hope you like it :D.

Whatsup

(Video filmed on ios) I added some animations to the gameover screen. Also transition fade on every state aswell as a «flash» when the bird dies. The score button now allows you to reset your best score and the share button opens up the webshare for your device. The game is done now :D

0
Whatsup

Added audio that works on Safari. I tried the HTML5 Audio API (new Audio()) but it caused delays and lag because safari blocks playback until the user interacts with the page. So i researched a bit and found out about the Web Audio API. With this i can preload sounds into buffers for instant playback, but audio must be unlocked with a user interaction the first time, after that sound plays very well across the browsers i tried. The audio files arent big so shouldnt take much memory.

Attachment
0
Whatsup

Finished creating the UI and its functions. For now the score and share buttons doesnt have any function. I made the code more separated so the UI events are in a different file from the Ui render and i fixed some glitches with the bird, pipe and UI. The menu/start screen and the get ready screen aswell as the pause and unpause works. Next up are sounds and then maybe animate the Ui to pop up different times than each other but idk yet.

0
Whatsup

I created the game menu UI. For now only the start button works. i changed bird physics (again lol) for better flapping. I also added sparks to the scoreboard medal like it has on the original game. The game states were hell to manage so i did rework and created a central game state manager that has all the game info so i can access them in any file by just importing one thing and check if game is paused, what screen its on etc.

0
Whatsup

I changed the bird physics so they match the OG flappy bird game a little more by sort of “hanging” angled upwards when flapping then rotating fast downwards again. It may not look like much changed but i did ALOT of rewowrk in the code because my game file was very cluttered so i had to separate UI logic into its own file and collisions etc into the pipe file.

0
Whatsup

Added a “NEW BEST” with a badge and a score saved in localstorage. also added medals where you get a bronze medal at score 10, silver on score 20, gold on 50 and platinum on 100. And made the digit 1 smaller on the score so it looks better and not wide. The game is slowly finishing.✌👌

0
Whatsup

since i found out how to improve the quality of assets on the canvas i decided to try out one singular spritesheet instead of so many images loading on the screen etc. The spritesheet is now almost just as good as the singular images. I sat there writing coordinates for like 30 assets on the spritesheet lol. Also changed a bit of code so it uses the new coordinates. Some things broke but i fixed them :). btw it looks better ingame than this image

Attachment
0
Whatsup

The assets i used earlier were blurry due to scaling so i had to fix their size and pixels using piskelapp.com. I recreated the number images aswell as the scoreboard then had to test it on the game again and again with different sizes. At last i added a bird flap animation and changed the canvas code so the game looks crispier.

0
Whatsup

added the score logic. the number 1 on the score numbers look a bit out of place ooof

0
Whatsup

removed and changed some code, better pipe and bird collision interaction, game over image at the end, changed the canvas height and width. Also took hella long with try and error because some assets were low quality so i tried to make it look better in the game but didnt work so im saving that for last :(((

0
Whatsup

I’m working on my first project! This is so exciting. I can’t wait to share more updates as I build.

Attachment
0
Whatsup

worked on the pipe collisions. not perfect yet but it will be :D

0
Whatsup

fixed and improved some code and added bird class with gravity and controls. The bird rotates when flapping and falling. no collision logic yet

0
Whatsup

Created the pipes with random Y positions. this took longer than expected because i was learning about Classes

0
Whatsup

Created a canvas and made it responsive. Added the background image, ground image and bird image, the bg and ground moves in a gameloop so it looks like its going forward.

0
Whatsup

Shipped this project!

Hours: 6.04
Cookies: 🍪 119
Multiplier: 19.66 cookies/hr

Made a pong game as my proper first hardware project, I learnt more about CPP and Arduino aswell as making a wiring diagram. Very fun :D

Whatsup

Big wiring mess lol but i added a menu and a 2 player mode. Also added a buzzer for sounds and cleaned up code. Basically done now.

0
Whatsup

Created the scores logic and made it a bit more challenging. When someone loses it will shoot the ball to the winners direction. Also increased ball speed and it spawns in random position on the Y axis. Might change from potentiometers to buttons as it gets tiring to play lol also will add 2 player mode sometime.

0
Whatsup

Fixed collision stuff and added CPU logic. The game is now playable with an opponent. The CPU is only allowed to move once the ball is on the right side which makes the game winnable.

0
Whatsup

Added ball and collision logic. The ball bounces

0
Whatsup

Found out how to move the paddle with the potentiometer. Im learning everything new so taking some time🫣

0
Whatsup

Set up the libraries and the oled display and drew one rectangle to test it

Attachment
0