تخطَّ إلى المحتوى
BITS at Night cover

لعبة فيديو

BITS at Night

أكتوبر 3, 2022
Shooter

عن اللعبة

BITS at Night✈Prelude Horror - Top Down Game?Dev flow1. Basic topdown movement systemRandom cheap map with walls and a playerCollision Control SytemCameraResult2.Menu to enter gameResult3. Updating Coordinates on NodeSetting Up node js serverSetting up GMS2Ask server to create a playerUpdating player infoSending updates to the serverResult - Server Updating this4. Make other players appear and disappearSending position updates from nodeReceiving the updates on GMSBug report :Result5. Lighting SystemJobo Lighting SystemGMS Official Simple Tutorial Lighting SystemResult of Lighting and multiplayer6. Guns ConceptGenerating a BulletEvent to send this to server. Server Handling this (Part 1 - telling other players someone got shot)How GMS makes it look like a player shot a bullet7. Authoritative BulletsshootBullet FunctionUsing this to kill the player who got shotResults8. HealthAdding Health EffectsCool progressive Result After Adding Healthbars, Blinkness9. GhostsDifferences in Ghosts and Normal PlayersAdding a body attributeAdding LogicTurning P into G after deathChanges to oPlayer, oEnemyGhosts are like air, they cant be shotGhosts SpriteFinal Result After Ghosts Integration💜💜9. Killing GhostsThe Math of it…Making the Function in jsghostHealthReducer FunctionResult…10. Ghosts Attacking PlayersGhost Scare Check FunctionThe Jumpscare from NodeHandling the Jumpscare in GMS2Result11. Jumpscares and Freaky MusicFreaky Theme MusicTransition to Jumpscares MusicReal Jumpscare Music and JumpscareAdding Gunshot sounds12. BITS Map and Walls ConfigWall Placement13. Random Spawn System , StreetlightsSpawn System in Node.jsRespawn ghosts !!! Very impCute streetlightsStreetlight Placement14. Major UI fixesKill CountAdding to KillsDone with testing, it works 🙂Ghosts and Players countDeath UI saying you died and allMessages UIServer sent messagesHow GMS handles thisResultFullscreen Death AlertIn the ghost health reducer functionHow GMS Handles thisDesigning the Player Stats screen after you have fully died15. Leaderboard and MinimapLeaderboardMinimap16. Hosting and PlayabilityBullets 20 AugustPreludeHorror - Top Down Game?Okay so I was thinking of bits at night, a horror multiplayer game based on illumination.So firstly its topdown shooter multiplayer kind. Easy to make that part with node.For the map I really dont know design so its way out of my league to design that so google earth + some editing can make you a nice map.Then we need a lot of darkness but the user can toggle a torch light and move around a little.So there are other players and monsters. The most interesting game mode would be battle royale. For now keep it simple 1 room. Players can kill each other and monsters are bots that attack people.Dev flowBasic top down movement system Menu to Enter gameUpdating coordinates on node (try server authority)Make other players appear and disappear.map with walls - can be done later anytimeIllumination and torch and whatnotMonsters AI - Randomly spawning and attacking youJumpscaresBattle royale system (restrictions on joining and alive count) Okay this looks fine. I think I can start. Ill make a desktop folder and repo 1. Basic topdown movement systemRandom cheap map with walls and a playerDraw some walls and make a circular player object with like a gun or a torchOkay important point in coding….. don’t get suck on anything but the current goal. Thats all that matters.I think this is fine.So I integrated the Walls collision system but its not exactly fine. The guy is getting stuck in walls. So Im trying to have like a system that brings the player back to where he came from.Collision Control SytemI have an array of old coordinates values. So whenever a player is wall stuck itll take the player back I guess?Or wait, if a wall is close , push the guy away from the wallvar move = keyboard_check(ord("W")) - keyboard_check(ord("S")) speed = 5*move if(point_distance(x,y, mouse_x , mouse_y) > 30){ direction = point_direction(x,y, mouse_x , mouse_y); } if(position_meeting(x + lengthdir_x(speed , direction),y + lengthdir_y(speed , direction),oWall)){ //colliding with a wall - no freedom in image angle , only in direction speed =0 }else{ //not colliding with a wall image_angle = direction; } Finally something that works!. It was getting annoying. And I think the most important thing would be camera nowCameraThis is just boilerplate so I dont think its so important to log about it muchJust a slow interpolated cameraI changed up the values and the movement is looking really nice now 🙂Result https://s3-us-west-2.amazonaws.com/secure.notion-static.com/df4e91ba-e974-4132-8907-01d1e35e71a8/screen_rec.mp42.Menu to enter gameI will make a new room. Basic room. Just takes in your name and then sends you to the multiplayer stuff.So I added some font and made some buttons and text and a field for your name and all//oMenu Create global.username = ""; keyboard_string="" //oMenu Draw GUI var bh = camera_get_view_height(view_current) var bw = camera_get_view_width(view_current) var scale = .4*bw/1300; //if we want to scale up the font var mx = device_mouse_x_to_gui(0) var my = device_mouse_y_to_gui(0) draw_set_color(c_white) draw_set_font(fPressStart2P) draw_set_halign(fa_center); draw_set_valign(fa_center); draw_text_transformed(bw*0.5 , bh*0.25 , "BITS at Night" , scale, scale ,0 ) draw_text_transformed(bw*0.5 , bh*0.5 , "Enter a username" , 0.5*scale, 0.5*scale ,0 ); //Enter button draw_set_color(c_green) draw_roundrect(bw*0.4 , bh*(0.65-0.04) , bw*0.6 ,bh*(0.65+0.04) ,false ) draw_set_color(c_white) draw_text_transformed(bw*0.5 , bh*0.66 , "PLAY" , scale, scale ,0 ) if(mouse_check_button_pressed(mb_left)){ var c1 = mx < bw*0.6 var c2 = mx > bw*0.4 var c3 = my > bh*(0.65-0.04) var c4 = my < bh*(0.65+0.04) if(c1 and c2 and c3 and c4){ room_goto(rGame) } } //Textbox for name draw_set_color(c_white) draw_roundrect(bw*0.4 , bh*(0.4-0.04) , bw*0.6 ,bh*(0.4+0.04) ,false ) draw_set_color(c_black) if( string_length(keyboard_string) > 10){ keyboard_string = string_delete(keyboard_string ,10 , 1 ) } draw_text_transformed(bw*0.5 , bh*0.4 , keyboard_string , 0.5*scale, 0.5*scale ,0 ) ResultOk this is cute 3. Updating Coordinates on NodeSetting Up node js serverSo in the main repo Im making a folder called server for the node projectThen the boilerplate websocket server stuffSetting up GMS2Async networking boilerplate Next lets set up the event based communication stuff.Ask server to create a playerSo in the oMenu after the guy clicks on PLAY I am going to tell the server to “create_me”//DEAD PLAYERS CAN BE GHOSTS — ok so my mom cracked a joke on the walls movement bugs and it let me to a very cool mechanicBattle royale + horror : dead players become ghosts and can haunt and kill existing players. Dead ghosts are just spectators.So the main part is the players array that holds all the players. So we will have all our player properties here. x , y , name , id and everything. Some more properties that we will add later is torchLight switched on?We are also telling the new guy and everyone already existing on the server that here is someone newUpdating player infoI want to do this using the server so we have good authority but because we have walls I cant trust …So basically the client would send the latest coordinatesI created a global to hold if the torchlight is on or notI added an angle and torch attribute here in node player info too Sending updates to the server Result - Server Updating thishttps://s3-us-west-2.amazonaws.com/secure.notion-static.com/35ddc11e-f23e-4ab6-a6cd-fb0fa9f4c4f9/coordinates_updating.mp4So I was running this on chrome it was lame fps. Edge was fine. I guess its something to do with the …Okay I disabled webGL it works fine. 4. Make other players appear and disappearSending position updates from node I need to tell every player about every player. So I will make a new function for that that repeats every 16 ms or so.This function grabs a players info, puts it in a dictiona

متطلبات النظام

متطلبات النظام لهذه اللعبة غير متاحة بعد — عُد لاحقًا.

ألعاب مشابهة