Shop Forum More Submit  Join Login
I set-up a basic WebSocket server yesterday which will keep track of the players position in the world. I'm using WebSockets instead of a UDP connection since I'd like the game to work in the browser as well as on desktop and browsers don't have any way to make an unreliable connection to a server due to security concerns.

WebSockets aren't always great for multiplayer games since they're based on TCP which is a reliable protocol. That means all the data packets act as if they arrive in the order they were sent but when all you care about is the player's latest position you don't want to wait around for a late packet if you've already got the one after it.

Right now the plan is to have clients connect to the server using WebSockets and tell the server their location in the game world, the server can respond by sending what I'm calling "markers" back to the client. A marker is basically an object which contains a pointer to a file or the file itself as well as the location of said file in 3D space. In a Territory Definition Server these markers might be 3D models or images that the game can then display, but for this server the aim is to have each marker point to some character file which which the client will then load and and display. The server will send the client all markers near by and since WebSockets are a two way (full-duplex) protocol the connection can stay open and if a player moves close enough to a client the server can pro-actively push that player to the client. When a player is loaded it can listen to the server for position updates using the same WebSocket connection or establish a shared UDP connection on desktop.

The server uses the POCO C++ library which has a brilliant WebSocket class I've used in the past. In theory secure WebSockets should also work although I haven't tested them out yet. I'm also trying out the Conan package manager which I haven't used before but so far has made installing and managing dependencies a lot easier. On the Unity side I'm just using the Simple WebSockets asset by Unity which works for WebGL as well by using the browsers native WebSocket functions. Next I want to work out how to generate documentation from a Unity project and make it so multiple players can load in.
Exams are done and Christmas is over, which means I have a sliver of time from now to new year to make a start on this. I'm going to try and explain the big picture of how this project is going to be structured in this update as well document some workflow stuff I've been working on today. It's worth mentioning that these journals are ultimately so I have some documentation of my process which I can submit for the final competition. Since the competition is focused on programming some of these updates might get a bit technical for Deviant Art, but then again I've been surprised by the kind of people who use this site before and I know some people just enjoy reading along.

The Big Picture:
I never end up doing something simple when it can be massively over complicated and this project will be no different. Ultimately what I'm interested in making is a 3D world which is setup in such a way that players can, share artwork / music (files) in a 3D space, create new content together, talk and socialise in real time and own territory in the 3D world. While a client/server model would work this would make the game completely centralised in an unhealthy way. It would mean players would have to trust me to manage and store their data securely, keep track of who owns what territory and trust me not to sell their data, de-platform them, or ever get hacked. While recent history has shown users are by and large more than willing to trust companies and individuals with their data, it doesn't mean they should. There are also a huge number of different types of files which users could conceivably want to share and view in 3D and there is no way I could create a suite of applications that could edit all of them. The only way the platform would ever scale is if it allows other developers to create parsers and tools for files as well.

The way I see this working is as follows:
  1. The user uses a application to view and interact with the 3D world, a bit like a 3D browser.
  2. A distributed ledger keeps track of who owns what territory and keeps track of an IP Address or Domain Name for each territory defining a Territory Definition Server (TDS) which tells the browser where to find the server hosting the files for that particular territory.
  3. Each TDS can define how the user can interact with the world in that Territory.
  4. Optionally there will also be Universal Positioning Servers (UPS) which keep track of entities that don't belong to any one territory, like players.
This is an idea I've been thinking about for a while and I think its important because a framework like this is the only way I see a 3D virtual world working which isn't a total big brother surveillance platform controlled by one company.

Workflow stuff:
Yesterday I setup an automatic build server using Unity 'cloud build' to automatically build the game and run any tests that I write. I originally tried to use Bitbucket's pipeline service to run a docker image which would build the game and run tests that way, but it didn't want to work I think because Unity needs to be activated before it can run and Bitbucket doesn't guarantee to run the docker instance on the same server which messes with the licence. Anyway Unity's dedicated cloud service was very simple to setup and is free for the first month so works well for this competition.

Today I'm going to work on a simple UPS implementation and work out how to get networking working in unity that works in a somewhat consistent way across across different platforms. I know that Web has no way to directly connect to a server using UDP so Websockets are probably the way to go but they're not ideal given they only allow reliable communication which can slow things down.
Got myself a new project peeps, Aardvark Swift is hosting a game programming competition and I'm planning on keeping a little development journal here on DA while I work on it. The competition is to build a finished game from an existing Unity C# project by Jan 27th and it seems pretty flexible as to the direction entrants take their game. Here's a quick GIF of the game they've given us to work, It's a very basic top down shooter.

Sfas-original-project-s by haikuo

I've never used Unity before and only briefly touched C# as well so we'll see how it goes.

The working title for my game is 'Blue Assembly' and the idea behind the game is actually something I've been wanting to try out for a while as part of a larger project I've been thinking about. Blue Assembly will be a multiplayer drawing game where each player controls an avatar and can walk around an infinite 3D world drawing / painting together. The end goal would be to extend the game to allow players to add music and 3D models to the world as well as their drawings but for the competition it will just focus on 2D drawing to make things simpler. To prevent griefing players will have a limited amount of paint which recharges over time. They'll be able to increase their paint capacity by levelling up their avatar probably using some kind of reputation based system. I'm going to try and make it playable on Windows, Mac, Linux and through the browser. This will make the networking a little harder but unity makes it pretty easy to build a game for different platforms so it should be fine. 

The basic idea for the game is actually inspired by a cool collaborative painting app called anondraw which I've been playing around with on and off for a while. Where as I'd like Blue Assembly to be more of a 3D collaborative world editor, Anondraw is totally focused on 2D drawing and is more of a tool than a game. I might do a review of everything I like and dislike about Anondraw later but it basically demonstrates that the basic concept can be fun and engaging, at least for people who like drawing like me.

I'll try to update the journal everyday for the competition but we'll see how it goes, there's still a final uni exam to get through first :dead:

DSB Build Log

Sun May 1, 2016, 3:00 PM


Design and build a device that digital artists could use as a personal sketchbook and that can be upgraded as technology progresses. Here's a render of what I'm aiming for:

Concept Sketchbook by haikuo

I'm going for a small hand held computer with an inbuilt graphics tablet, keyboard, good screen, speaker and maybe some joysticks too for gaming. I'll get into more detailed specs later on in the build log for those of you who like that kind of thing.


Right now basically any device you can buy (smartphone, tablet, laptop) will only last a few years at best before it breaks or becomes old and slow compared other newer devices. This creates a lot of waste and makes it hard to have a device which you get attached to and can develop some sort of "connection" with. For example I have an old game boy colour which I've had for over 15 years and still works perfectly (I'll post a picture of it when I get time, it was an old yellow Pokemon one), I used that Gameboy for ages and still have fond memories of it, so I guess I want to try and recreate it in sketchbook form for my art.

I've already made two iterations of the DSB which I might post up later, the first was built inside a Gameboy DMG case and the second used a 3D printed custom case. I learnt a lot from these which I'll be able to put into practice this time around. They weren't really practical to use though, the first used the original raspberry pi b which was pretty slow and the second was all right for taking notes with but still wasn't where I needed it to be.

What is really making this version possible is the massive interest in VR. Before it wasn't possible to find small high resolution screens for something like this but because of VR many manufactures are starting to build tiny HDMI screens some with up to 4K resolution. Also the continual improvement in computer hardware means it's now possible to get a decent pc inside a portable hand held case, it's not going to be amazing but it should work for sketching and even retro gaming.

I'll be posting updates here and over on bongofish as I build this thing (maybe geekhack as well when I get to building the keyboard), if you have any ideas on how I could improve it or have any questions I'd love to hear them.

Also, if you already use another device as your sketchbook feel free to let me know what it is and why it works for you.

Build Log

1st May 

Finished tearing down the graphics tablet I'm planning on using. Its a XP-Pen G430 which has 2048 levels of pen sensitivity and a 3 by 4 inch active drawing area. It's also extremely thin and has a battery free stylus which is always nice. I thought about putting this behind the screen so that it would function a little like a mini Cintiq but I think because the screen is already so small having your hand constantly blocking over half of it would get irritating. I'll probably have the tablet on the opposite side to the keyboard and make it so the screen rotates around.

Untitled by haikuo

I'm probably going to remove the protective drawing surface on the tablet and replace it with acrylic or gorilla glass so that you can still see parts of the circuit board underneath while drawing.

Also created a 3d scale model of the tablet in blender so that when I make the actual case for the DSB later on I'll be able to make sure everything fits perfectly. Here's a rotating render of it, it's not super detailed but has all the major parts blocked out:

Comp by haikuo
XP-Pen G430 PCB model

I might also make a custom shell for the pen, all that's inside it is a tiny pcb for the buttons and the nib so it would be easy to 3dprint something which I could paint later. Could be cool having an Akira themed pen for example.

I'm going to be including answers to some of the questions getting asked as I go along so people don't have to scroll through comments to find stuff.

"How big is the final product? My personal size limit is 9 inches and 1024x600 screen. Maybe because my hands are huge."
RussianHacker :iconrussianhacker:
Good question, the screen I'm hoping to use for this will be 5.98" and 2560 x 1440 resolution. Hopefully that helps with judging the scale when looking at the original render. I don't want the base to be any larger than 17 by 11 cm (≈ 7 by 4.3 inch), and if possible I'd like to make it even smaller.

"why it only has numbers?"
:icongonzau: GonzaU
I was too lazy to model different letters for each key :aww:, the real thing will have a more useful keyboard layout. I'm going to make the keyboard fully programmable new short cuts or key maps can be made.

"Soo why would a client want to buy this over a decent small laptop, or let's say Wacom cintiq companion?"
So right now I'm not planning on selling these unless there was a lot of interest, most of the parts I'm getting would require a fairly large bulk order for the end price to be reasonable. For example the screen costs $200 for a single sample from the manufacturer in China but $95 each for 1000 of them. For me the advantages of something like this over a laptop or Wacom Cintiq would be that it's much smaller, it's unique since I made it, it's easily customisable and should last much longer since it's very modular and easy to repair.

If you bought a nice laptop and carried around your tablet with you (this is what I've been doing for the past few years) you'd have a more powerful machine plus a larger screen to draw with. However I found this didn't really work when drawing outside, on the bus/train or in lectures. The laptop + Wacom tablet was too large and kind of overkill for just creating some sketches.

Wacom's Cintiq companion 2 solves most of these problems, it's still fairly large with a 13" screen but since you don't need to carry around a tablet as well it would work pretty nicely. It would also be more powerful than what I'm trying to make. Since it's larger it can have a bigger battery that would support a more powerful CPU. Thing is it's really expensive, even without bulk ordering parts for my device it should be a lot cheaper. Plus if I wanted to upgrade a Cintiq my only option would be to buy the next version where as in my case I should just be able to just swap out the motherboard which will be way cheaper. A new Cintiq companion is nearly £2000 were as new motherboard would be less than £200. Plus mine has a keyboard :P.

2nd May 

Finished tearing down and modelling the batteries I'm planning to use, they're from a Pineng PN-999 power bank. I'm not sure where I'll mount the 3.7V to 5V converter yet but I'll work that out once I've got everything I need. The converter PCB has a micro USB connector for charging and two USB output ports, I'll probably power the screen from one and the actual pc from the other. I want to be able to turn off the screen and any peripherals independently from the actual computer so I can save power if I need to. Plus the more mechanical switches I can add the better, their so satisfying to use.

Untitled by haikuo
Photograph of PCB and batteries

Untitled by haikuo
Battery indicator light

Batteries by haikuo
To scale 3D model

The battery has an inbuilt LED to use as a flash light which could be useful but I really chose it because it has a massive charge capacity of 20000 mAH (most tablets have around 6000 if that) and an awesome blue backlit LED display. The PCB can also handle problems like overcharging, over-discharging and short circuits which makes things a little easier.

I've had a few questions asking what the weight of a device like this might be and it's likely to be somewhere between a small laptop and a tablet. It's not going to be something you want to hold at arms length for too long but should be fine if resting on a surface like a table or lap. I could have chosen way smaller batteries and reduced the weight massively but I prefer to have the longer battery life for now. As batteries improve in the future I can always swap them out for something lighter.

3rd May 

I've been looking in to what I what to use as the heart of the device for ages now and I thought I'd share where I'm at. Fist of all, my first two iterations of of the DSB both used single board computers to power them (The first a Raspberry pi 1 model b and the second a Hummingboard i-2ex), which worked pretty well and is almost definably what I'm going to do this time around too. Here's a little run down of a few of the boards that I've considered:

Raspberry pi 3

When this came out I was fairly sure it was what I'd probably end up using. The RP3 is one of the cheapest options at $35 and still out performs many older more expensive boards that I've seen.
25255898046 Bf32f5aa51 K by haikuo
image from

But I think the best thing about the raspberry pi is the community behind it, because so many people have been using them for their projects there's loads of help available when stuff goes wrong (which it always does). It would also be easy to replace as new versions come out and it has on-board wifi + bluetooth which makes things so much easier. There are similar more powerful single board computers like the Orange Pi plus2, ODROID-XU4 or Banana Pi M2 which all look better than the RP3 on paper, but I know from my experience with the Hummingboard that its sometimes better to sacrifice performance for usability.

Inforce 6540
This is the most expensive and most powerful of all the boards I looked at, I was really tempted to go for it when I found out about it.
6540 2 1 1 by haikuo
I'm not going to list off the specs (look here if your interested) but they are pretty impressive. What grabbed my attention is that it can run 4K video and has every connector you could ever want from a tiny computer. The trouble is it runs off 12V instead of 5V so I'd have had to work out a different power solution and because not many people use them I'd run into the problem of having to solve everything myself again.


85-900x600 by haikuo

I only just came across this board but I think its probably the most suited to this project of all the ones I've come across. The LattePanda doesn't run off an ARM processor like all of the others but an Intel quad core processor, which means it can run full windows 10 like any normal laptop! It's not so much windows 10 I'm excited about but the fact that since it's the same architecture as a normal computer I'd be able to run any Adobe suit program, steam game or anything that we'd expect any normal computer to be able to run. It's not very powerful and most things might run a little slow, but I'm not planning on using it to create any massive high resolution paintings or play Crysis so it should be fine. Plus it would save so much time just having a working Win 10 system from the start instead of having to deal with all the issues that come with Linux.

When I was using the Hummingbaord I ended up having to use Arch linux (shudder) as it was the only distro that I could ever get WIFI working (somewhat) with. Arch is good because it's very lightweight but so many things would break and nothing would ever work straight away and usually I found myself having to edit the code of some random program so that I could recompile and install it. I can always install linux on the LattePanda if I find I'm missing it but I think I'll cope.

A very accurate description on how to fix your Linux machine

Image by haikuo
In the end whatever I choose wont matter too much so long as it's replaceable which all of these would be. Next year there'll probably be a whole new generation of tiny computers that will probably make most of these look like trash, and if that's the case I can always swap another one of those in if I feel like I need the extra performance. And that's Kind of the whole point of this project, instead of having to buy a whole new tablet/phone/laptop when I want to upgrade I'll just have to replace this one part of the device (so long as I future proof the case), it will be less wasteful and I'll have more control over the device I use.

25th May 

Screens arrived, tested it out a bit and it looks like it will work perfectly. Here's a photograph and render.

screen by haikuo

The screen is pretty shiny which isn't great but I think there's filters which you can lay over the screen to help out with that. Also I'm going to try and find some scratch resistant glass to fit over the top, just so I know the screen has a little protection.

screen_render by haikuo

I'm just waiting for all the keyboard parts to arrive now, then I can finally start putting everything together. I still haven't chosen which SBC I'm going to use, new ones seem to be coming out every month each better than the last so I think I'll hold out as long as possible (This one looks interesting but doest come out till winter - UDOO x86). Most of the high performance boards seem to run on 12V instead of 5V so I might look into ways of switching the voltage so as many boards as possible are compatible.

Also been experimenting with using some automotive clear coat lacquer to give a protective finish to the 3d printed parts. It takes 24 hours to harden though so it's going to be a few days before I know how well it works (needs multiple coats).

26th May 

The microcontroller for the keyboard has arrived, it's a Teesy 3.2 and should have plenty of pins for all the buttons and lights I might want to add in the future.

Teensy by haikuo

Teensy by haikuo

I've been trying to work out if RGB backlighting for all the keys would draw too much power or not. It's kind of a useless feature but since the keyboard has so few keys I might still be able to get away with it and I could always add a switch to turn it off if I wanted to save the battery.

19th June 

I've finally got all the major hardware I should need to finish this build, right now I'm just waiting on a lazer cut aluminium base plate for the keyboard and some scratch/abrasion resistant acrylic to for the screen and graphics tablet. Then I'll be able to design the actual case and get that 3d printed.

I hadn't decided on a board last time I updated but since then I've chosen to use an Intel Skull Canyon i7 NUC6I7KYK to be the motherboard for the DSB. I had come across it before when looking at other boards but at the time it wasn't yet released and there were no teardowns showing the size of the pcb inside, so I had no idea if it would be small enough. Also the price is way beyond that of anything else I considered and unlike the small ARM boards you also need to buy RAM and the SSD on top of the actual board.

1 by haikuo

It's designed to run off a 19 volt, 120 watt power adapter so I've had to completely change the battery I was planning to use. And on top of that the default heatsink is too wide so I'm going to have to hack something together so everything fits in a hand-held case.

There's also an issue with the HDMI output right now that's claimed more time than I would like to admit trying to fix. Ended up just getting a thunderbolt to HDMI adapter which solved all my problems but it's still annoying and will end up taking up a little more space in the case unless Intel comes out with a fix some time soon.

3 by haikuo

The reason I chose the NUC6I7KYK over other mini boards is that it's by far the most powerful one I've found. It's marketed as a mini gaming pc by Intel and should be able to run Adobe Photoshop fine where as other boards would have struggled or just plainly not been able to given the different architecture of ARM boards. It has an Intel Core i7-6770HQ processor, two M.2 sata bays and two 16GB RAM slots. Right now I'm just using a single 512GB SSD and one 16GB crucial DDR4 RAM stick (which gives it both more RAM and memory than my current laptop) but in the future I could go up to 32GB of RAM if I needed to. It can also run my VR display in full 2K resolution which could have been a problem with anything less powerful. In terms of IO it has plenty of USB 3 ports plus a few USB 2 ones as well, an SD card reader, an infrared sensor, HDMI out, two 3.5mm audio jacks, a mini thunderbolt display port and a USB type c connector for thunderbolt display or USB 3.1 output. Your also supposed to be able to hook it up to the external GPU's that are starting to come out, potentially making this possible of running VR games. But unless I want to use start using this as a rendering machine I doubt I'll be doing that.

Build log continues here


Mon Feb 8, 2016, 3:12 PM

DIY Digital Art Sketchbook

Hi all, here's a little project I've been working on for a while. It's a tiny computer which can be used as a sketchbook, retro gaming console, or just as a handy paper weight after it inevitably sets on fire and deletes everything you've ever valued. I've been wanting to make something like this ever since seeing Akira's awesome DMG-Gamboy several years ago and while its not finished yet, I feel like I've at least got it to a usable prototype state now.

Dark Front by haikuo
Rotate by haikuo
Looks a little too much like a bomb from the back to be airport safe.
The counting down battery indicator doesn't help things.


Built around a hummingboard-i2ex and a Manga Screen this device has a:

- 4.3" HDMI captive touchscreen (800x400)
- 4 x USB 2.0 ports
- 3.5 mm audio jack
- gb Ethernet port
- half height Mini PCI-E wireless card
- msata connector
- microSD port
- Infra Red receiver
- RTC clock
- Coax S/PDIF connector
- 26 pin GPIO
- 30 Pin LVDS
- micro usb ( for powering )

- 1tb msata ssd (this is more than my laptop)
- 64gb microSD card
- 2 x 64gb USB

- 2 x 8000mAh 3.7V li-poly batteries
- a 3.7V to 5V converter used for charging
- a second 3.7V to 5V converter to power the device and display remaining charge

I'm not sure what the maximum battery life of this thing is yet, but it's lasted over 4 days of me using it without needing charging. No one enjoys charging things which is why this thing is basically entirely made of batteries.

- Switches for turning on and off the device and screen separately to save power.
- various LED lights
- 3d printed case
- a few tactically placed rubber bands to hold everything together

Front by haikuo

Operating System

Right now I'm using a distribution of Linux called Arch as an OS for this thing but it can also run versions of Android, OpenELEC, GeexBox, Debian and Ubuntu. Arch just seemed to be the one that gave me the fewest problems and worked with my wireless card and Wacom tablet straight away. The OS can be swapped out easily just by changing out the USB flash drives.


With an OS like Lakka installed or just a few emulators the hummingboard can play almost any retro arcade game as well emulate systems like Atari, NES, GBA, PS1 and to some degree the PS2. It can also stream games from your main computer so long as its an Nvidia-based machine by using limelight. I haven't gone deep into getting this all to work yet, partly because if it does work I'm screwed.


The main program I use to draw with this thing is "MyPaint", which is a surprisingly light weight application given all the features it has. Plus it works great with my super old Wacom tablet so I can now sketch where ever I am, save the image to a USB drive and open everything later on my laptop. No more carrying around a bag so full of pencils, markers and other miscellaneous drawing equipment. It's also been working great as a notepad for uni which has meant I no longer have to worry about suffocating from a paper avalanche during the night.

I've still got a lot to do before I'm happy with this 'thing', still need to come up with a name for it to start with. I also want to completely redo the case so that I can add a tiny keyboard, USB hub, speaker and maybe a camera, accelerometer, gps... anything so long as its small. It might end up a little like a Nintendo Ds with the keyboard folding out. There are also supposed to be vastly improved batteries coming out soonish, so if I wait long enough I'll be able to make it way smaller. I honestly keep having ideas for this thing, plus I'd love to hear any suggestions anyone else has.

A few environments I made for the VR MMO, Voxelnauts. If you haven't heard of the game or want to help out the wonderfull people at Retro Ronin by supporting their kickstarter go here.
Voxelnauts: Dragon Temple by haikuo
Voxelnauts: Airship by haikuo
Voxelnauts: Water Shrine by haikuo
Voxelnauts:  Sunset Town by haikuo
Would you like to know more? [link]
  • Playing: Voxelnauts ;)
Ok, so I've been interested in concept art for a long time now and have decided to pursue it more seriously. I've been roaming around DA asking members who are either already concept artists, studying concept art, or just trying to get better at it like me, and I've collected a bunch of links, messages, tutorials and just general info on how to become a concept artist. I thought I'd share everything useful I've found to help anyone looking for the same stuff as me :), plus it's always good to share :hug:. Just to clear things up now, all this stuff is aimed at improving as a concept artist rather than breaking into the industry itself, mainly because I'm no where near good enough be doing that any time soon so I haven’t been looking how to do it.

:bulletgreen: Ok first of all, heres [… ] a great journal wirrten by tnounsy :icontnounsy:, it includes lots of usefull learning reasorces, tips on technique, but in my opinion most important of all is his section on attitude and never cheating yourself (plus practicing 25 hours a day)

:bulletgreen: Next is a response I got from Scriar :iconscriar: here [… ]. Great just to see how he got to where he is now but also his suggestion of doing 2 to 3 hour long studies of landscapes from photos everyday for a month is a nice challenge. (I'm on day 3 :))

:bulletgreen: Heres [… ] a usefull anaysis of one of my practices from photos by Gycinn :icongycinn:. It definatly highlights how you should think when coming up with a composition of your own.

:bulletgreen: Found this journal by tadp0l3 :icontadp0l3: on how to create space art [… ]. I know space art isn't really concept art but theres lots of usefull links in there that I'm sure someone will get some use out of it

:bulletgreen: Almost forgot about Sangwon Seok not sure if his on DA but his got some really usefull car sketching vidoes on youtube.…

also worth metioning these peeps :iconlmorse: :iconjamesfinlayson: :iconsamuel-nordius: for being a great help wether they knew it or not

Any more usefull gems people have found please tell me about them
  • Reading: Lots of tutorials
  • Watching: FZD