# Multiplayer games with two different screens

**URL:** <https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084>\
**Category:** Arcade\
**Created:** [May 19, 2026, 8:54pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084 "2026-05-19T20:54:34Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 19, 2026, 8:54pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/1 "2026-05-19T20:54:34Z")

</div>

Ok so a ton of people, including me, have said that this is not possible… and we were wrong. The main issue with this is that you need to actually share and play the multiplayer game to test it, as it doesn’t work in the multiplayer sim view, only when actually hosted and played.

 ![Screenshot 2026-05-19 at 1.13.40 PM](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/1/7/17f27c3ba0710bc5b8bd014913b2099cb6eb04d8.jpeg)

> **[testing multiplayer](https://arcade.makecode.com/S86413-40629-40918-34734)**
>
> Made with ❤️ in Microsoft MakeCode Arcade.

Basically, I looked at the multiplayer code for like 5 minutes, saw a special little function that I thought might do what I want, and then it did! I will be making more stuff with/about this in the future, but I really wanted to get this out there so that my fellow javaScript devs could mess around and find more stuff with this (I’m lazy and finals are happening so other people will have more time than I have to test this out)

The only limitation is that only the host screen can be different. All other screens look the same, so something like 4 player Uno would unfortunately not be possible… unless some other method is found, who knows, but I _really_ doubt it.

Here are some ideas I had for games that are possible to build now:

- Two player board games where there is hidden information such as Battle Ship and Guess Who
- Chess, checkers, tic tac toe, etc where each view is the correct one for the person playing
- Uno, Scrabble, Dominos, and a TON of card games (all these would only be 2 player only unfortunately)
- Classic .io games but just 2 player
- Co-op puzzle/survival games like MineCraft, Portal multiplayer, Ibb and Obb

If you guys have more ideas, please share them below! I haven’t decided what I’m going to make first yet… lets be real I’ll probably make an extension first, but still I really want to make games too!

---

<div class="post-metadata">

**Author:** ![Bilangus](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/bilangus/32/33219_2.png) [@Bilangus](https://forum.makecode.com/u/Bilangus)\
**Post date:** [May 19, 2026, 11:06pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/2 "2026-05-19T23:06:39Z")

</div>

> [@WoofWoof](#):
>
> Two player board games where there is hidden information such as Battle Ship and Guess Who

DUDE WE CAN MAKE POKEMON!!!

---

<div class="post-metadata">

**Author:** ![Luke](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/luke/32/32519_2.png) [@Luke](https://forum.makecode.com/u/Luke)\
**Post date:** [May 20, 2026, 4:28am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/3 "2026-05-20T04:28:18Z")

</div>

very nice! 2 player games already opens up so much, I could really see a vampire survivors clone like my own Robot Survival with this

---

<div class="post-metadata">

**Author:** ![Astro](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/astro/32/35479_2.png) [@Astro](https://forum.makecode.com/u/Astro)\
**Post date:** [May 20, 2026, 4:28am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/4 "2026-05-20T04:28:49Z")

</div>

holy namespace userconfig { export const ARCADE\_SCREEN\_WIDTH = ; export const ARCADE\_SCREEN\_HEIGHT = ;} this is awesome, so many new things can be made with this

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 20, 2026, 4:27pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/5 "2026-05-20T16:27:10Z")

</div>

@richard I’m guessing that the reason this doesn’t work in the simulator is that the sim assumes all the screens will be the same and just copies the host screen. I’m wondering how performance draining it would be to have them work like the shared versions, where the 3 other screens work with a fake “server” behind the scenes.

---

<div class="post-metadata">

**Author:** ![BlueYoshi507](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/blueyoshi507/32/32630_2.png) [@BlueYoshi507](https://forum.makecode.com/u/BlueYoshi507)\
**Post date:** [May 20, 2026, 4:36pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/6 "2026-05-20T16:36:57Z")

</div>

Can u make it an extension were there are blocks like “show (variable) on X player?” and stuff like that?

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 20, 2026, 5:03pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/7 "2026-05-20T17:03:08Z")

</div>

No, as only the host screen can be different. The way multiplayer works is that, after the host’s screen renders, it runs the code `postImage(screen)`, which sends the whole rendered screen to all the other connected players. Obviously this is a simplification, but it does mean that all the other players all see the same screen and cannot be addressed individually.

---

<div class="post-metadata">

**Author:** ![redSprite](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/redsprite/32/34262_2.png) [@redSprite](https://forum.makecode.com/u/redSprite)\
**Post date:** [May 20, 2026, 5:58pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/8 "2026-05-20T17:58:33Z")

</div>

I like the idea of 1v3 games.  
The host has their own screen while the other 3 players have to share one.

---

<div class="post-metadata">

**Author:** ![richard](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/richard/32/5417_2.png) [@richard](https://forum.makecode.com/u/richard)\
**Post date:** [May 20, 2026, 6:20pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/9 "2026-05-20T18:20:26Z")

</div>

uh… tbh the reason i never mentioned this was because i did not know that this was possible (i didn’t work on the online multiplayer stuff)

@WoofWoof feel free to make an extension but i’m gonna make one too

---

<div class="post-metadata">

**Author:** ![richard](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/richard/32/5417_2.png) [@richard](https://forum.makecode.com/u/richard)\
**Post date:** [May 20, 2026, 6:28pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/10 "2026-05-20T18:28:28Z")

</div>

we’ll do this on stream today

---

<div class="post-metadata">

**Author:** ![AlexK](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/alexk/32/33339_2.png) [@AlexK](https://forum.makecode.com/u/AlexK)\
**Post date:** [May 20, 2026, 6:59pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/11 "2026-05-20T18:59:24Z")

</div>

Oh I am SO looking forward to this! I’m shutting my office door today so that I can watch this live.

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 20, 2026, 7:23pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/12 "2026-05-20T19:23:06Z")

</div>

Well that makes my job easier. If you can, try to locate and destroy the frame handler that is created in the initServer function, as that could lead to the host’s screen being momentarily flashed on the screens of the other players if a lag spike occurs or the frame order gets messed up somehow. I haven’t seen this happen, but I haven’t tested creating particularly laggy functions that would occur between the default postImage() call and the one we are sending to replace that screen afterwards.

It would also stop the host from sending literally double the needed information over a potentially laggy internet connection, as well as taking double the necessary resources on whatever server is stuck in between the host and the other players.

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 20, 2026, 10:23pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/13 "2026-05-20T22:23:34Z")

</div>

I GOT THE MAKECODE SCIENTIST TITLE FOR THIS OMG THANK YOU @richard!!!

---

<div class="post-metadata">

**Author:** ![AlexK](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/alexk/32/33339_2.png) [@AlexK](https://forum.makecode.com/u/AlexK)\
**Post date:** [May 20, 2026, 10:32pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/14 "2026-05-20T22:32:13Z")

</div>

OK, so this is what I’m thinking.

In the client project that runs in multiplayer mode, the following code runs as the primary scene handler (`pxt-common-packages/libs/game/multiplayer.ts`)

```typescript
    export function init() {
        game.addScenePushHandler(() => {
            game.eventContext().registerFrameHandler(scene.MULTIPLAYER_SCREEN_PRIORITY, () => {
                if (getOrigin() === "client") {
                    const im: Image = getCurrentImage();
                    scene.setBackgroundImage(im);
                    // clear default menu button behavior
                    controller.menu.onEvent(ControllerButtonEvent.Pressed, () => { });
                }
            });
        });
        game.pushScene();
    }

```

The `getCurrentImage()` function pulls from an object of type `MultiplayerBoard`. We _might_ be able to wrangle the current board using the techniques that we saw in today’s stream to override how the current image is obtained and allow each client to pull its own image.

Just a thought. I could be crazy.

---

<div class="post-metadata">

**Author:** ![jwunderl](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/jwunderl/32/5308_2.png) [@jwunderl](https://forum.makecode.com/u/jwunderl)\
**Post date:** [May 20, 2026, 11:37pm UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/15 "2026-05-20T23:37:27Z")

</div>

the messages don’t go from host → client directly, they get sent from host → our backend server → broadcasted to clients, so unfortunately not something can change just in that way; throughput will also likely be a concern / anything that starts adding lag to host machine will mean button presses delayed / etc

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 21, 2026, 12:22am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/16 "2026-05-21T00:22:12Z")

</div>

I could imagine a situation where the image sent from host to client is just containing encoded information and the client decodes that image. Then again, is the client not just a blank project running this one function? Is the actual host’s code shared to the client instance or is the host the only member here with the actual code of the project running? Somehow I doubt that the other clients actually contain a copy of the host’s code.

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 21, 2026, 12:22am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/17 "2026-05-21T00:22:23Z")

</div>

I have tried a few things and it does not seem like the client is anything but a blank project running that single function. I’m not going to go on a wild RCE goose chase, and besides, if something like that was found it would need to be patched asap anyways. Of course, there is always the possibility of a cheeky pull request enabling some extra features, who knows!

---

<div class="post-metadata">

**Author:** ![VoxelMaster64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/voxelmaster64/32/32075_2.png) [@VoxelMaster64](https://forum.makecode.com/u/VoxelMaster64)\
**Post date:** [May 21, 2026, 12:22am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/18 "2026-05-21T00:22:31Z")

</div>

(me getting slightly jealous)

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [May 21, 2026, 12:27am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/19 "2026-05-21T00:27:06Z")

</div>

@richard quite conveniently, using the setOrigin() function to change the origin to something other than “server” stops the other postImage function from running.

ALSO PLEASE THANK WHOEVER THOUGHT TO ADD A BUILT IN API FOR CHANGING THE ICONS OF IMAGE REACTIONS AND PLAYERS!!! \<3 \<3 \<3

 ![Screenshot 2026-05-20 at 8.14.22 PM](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/a/d/ad24ff66f776f4f1669b13b5b983661c4f0b5827.jpeg)  
 ![Screenshot 2026-05-20 at 8.14.54 PM](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/e/7/e7b22f7b786fcce74b7184fa127fe362cce770e4.jpeg)  
Yes of course I made them animated!

> **[even more multiplayer testing](https://arcade.makecode.com/S00094-02858-48904-28344)**
>
> Made with ❤️ in Microsoft MakeCode Arcade.

---

<div class="post-metadata">

**Author:** ![AlexK](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/alexk/32/33339_2.png) [@AlexK](https://forum.makecode.com/u/AlexK)\
**Post date:** [May 21, 2026, 12:48am UTC](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084/20 "2026-05-21T00:48:27Z")

</div>

> [@jwunderl](#):
>
> throughput will also likely be a concern / anything that starts adding lag to host machine will mean button presses delayed / etc

Oh _for sure_. The host is doing most of the work and getting it to render three extra frames per update could be problematic, particularly for underpowered machines. It might be fun for those of us with NASA-grade computers, though … more of an academic exercise than anything else.

[Next page](https://forum.makecode.com/t/multiplayer-games-with-two-different-screens/44084.md?page=2)
