After getting an email from yet another person who enjoyed the original Seaside Racing back when it was released on the Xbox 360 in 2010, I decided to start working on a PC port last summer. After a few months of part-time work, it is finally done!
Check it out here: seasideracing.se
The gameplay should be exactly the same as the original and the graphics a bit better. The Xbox avatars have been replaced by my own set of randomly generated characters that look just mad enough. There is both keyboard and gamepad support now and there is also an option for 2 players to share a gamepad (in case you have fewer gamepads than players on the couch). There are also some small improvements: You can now see if someone is spectating (and waiting to join) and the host also has the ability to restart a race early (to let spectators into the game).
Most of the work I did was on the networking backend, I used the excellent MonoGame framework to replace the deprecated XNA framework and it worked very well for the most part, but the networking had to be re-written from scratch. Other Xbox Live Indie Games that supported networking should be able to use my work, please let me know in the comments if you know of any!
For the last couple of weeks, I've been working on a custom laser scanner design. Basically, a laser scanner is a device that uses 2 mirrors to direct a laser beam to a specific point in space and it can, when moving fast enough, be used to draw geometric patterns onto some planar surface. The reason I'm interested in building a laser scanner is that they're a fundamental component of many CNC machines such as high-end 3d printers (based on the Selective Laser Sintering (SLS) or Stereolithography (SLA) techniques) or etching machines.
The plan is to first create a XY-scanner module that is capable of reasonable resolution (~50 micrometers = 0.05mm) within a small rectangular area (100x100mm) on a planar surface. The next step is to design an open-source laser etching module that can be used as an experimentation platform for different manufacturing techniques. The first steps could be laser etching or even cutting of very thin sheets of different materials. When this works, I imagine add-ons to this platform that enables SLS or SLA 3d printing with minimal external components.
I've completed a first prototype using stepper motors to drive the 2 mirrors. The stepper motors have a resolution of 0.9 degrees per step, resulting in 400 steps per revolution. This is nowhere near the resolution required but I wanted to experiment with how well microstepping can increase this resolution in practice. In theory, microstepping should increase the resolution by 32-128x depending on what motor driver is used. In practice however, the microsteps are not even enough to be usable. The motor can step 4-8 microsteps with reasonable linearity but every now and then a "microstep" occurs that is 2-4 times the angle of the others. Increasing the current limit makes it better, but the current required to make the movement reasonably smooth at low speeds is so great that the motor becomes extremely hot and starts to stall. I've tried with one Nema 14 motor with a rated current of 0.5A and one Nema 17 motor rated for 1.2A.
Bottom line: microstepping should really only be used to make the movement of a stepper motor smoother, not to increase its resolution.
So this leaves me with 3 options: use some kind of gearing to improve the resolution of the stepper motors, use off-the-shelf galvanometers or design custom galvanometers from scratch. I don't like option one because it seems overly complicated for the problem at hand (rotate a mirror over a [-15,15] degree range), there will be mechanical backlash in such a system, and geared stepper motors are both expensive and difficult to source. I'm not even going to consider option two because retail galvanometers are even more expensive and difficult to source.
This leaves me with option three, designing my own laser galvanometer. Since this is quite a big undertaking I will go slow and put this project on the back-burner for the time being. Time to focus on other stuff!
PS. I'm a newbie when it comes to electronics so please don't take my word for anything I say in this area.
When I moved to the new site, I decided not to have a blog because I wanted to focus on making things instead writing updates. What I've realized is that there is a point to summarizing and publishing a log entry of what I work on from time to time. It helps me see the progress that I'm making more clearly and it also gives me time to think through the decisions I make along the way. So here it is!
This log will primarily be written for myself as a reference for the future and as a means to be more productive. However, I will also post more official news items regarding my commercial projects from time to time.
Lately, I have been focused on physical projects so the log will start off with these and then as I get more free time from university I'll start working on the go toolkits again. I have a long list of improvements I want to make to each of the toolkits, so stay tuned :)