[JAVA] I made a drawing chat "8bit paint chat" on WebAssembly


Publication destination

https://minordaimyo.net/8bitpaintchat/ (2020/09/04 URL changed)

Main features and usage of 8bit paint chat

--High resolution canvas (equivalent to A4 600dpi) for a light drawing taste --Supports pen pressure and tilt detection --Up to 8 participants (ROM is currently up to 16) --Only one black color can be used --Ability to hide any participant —— Scrolling / scaling the canvas with a two-finger touch --Undo with two-finger tap, Redo with three-finger tap --Canvas download function

Operating environment

Chrome on Windows and pen tablet / LCD tablet Safari and Apple-pencil on iPad Chrome on android And so on

Gijutsu nice thing

Client side is js + WebAssembly (mainly c language) Server side is node.js + WebAssembly (code common to client) Created with.

The canvas size is 7016x4961pixel (same as A4 600dpi). The memory consumption on the client side is about 250MB, The memory consumption on the server side is about 300MB per room. Since the canvas is also held on the server side, memory consumption is high.

Use js mainly around the user interface. The drawing function part is written in almost c language (WebAssembly).

What I had a hard time

I'm pretty good at c language, but I'm a complete amateur in web programming. Therefore, the description part in js has become a considerable amount of feces code ...


I sent it on Qiita for the first time. I will add what I need later.

Recommended Posts

I made a drawing chat "8bit paint chat" on WebAssembly
I made a chat app.
I made a calculator app on Android
I made a portfolio with Ruby On Rails
I made a library for displaying tutorials on Android.
Ruby: I made a FizzBuzz program!
I made a shopify app @java
I made a simple recommendation function.
I made a matching app (Android app)
I made a package.xml generation tool.
[Android] I made a pedometer app.
I made an app to scribble with PencilKit on a PDF file
I made a site that summarizes information on carbohydrate restriction with Vue.js
[Ruby] I made a simple Ping client
I made a risky die with Ruby
I made a plugin for IntelliJ IDEA
I made a rock-paper-scissors app with kotlin
I made a new Java deployment tool
I made a rock-paper-scissors app with android
I made a bulletin board using Docker 1
I made a Diff tool for Java files
I made a primality test program in Java
04. I made a front end with SpringBoot + Thymeleaf
I made a mosaic art with Pokemon images
I made a gender selection column with enum
I made a rock-paper-scissors game in Java (CLI)
I made a viewer app that displays a PDF
I made a Docker container to run Maven
I made a Ruby extension library in C
[Rails] I made a draft function using enum
I tried running Ansible on a Docker container
I made a LINE bot with Rails + heroku
I tried running Java on a Mac terminal
I tried deploying a page made with antique Middleman on Azure Static Web Apps