Project: Sherlock – Dev Log 3 (Sprint 8 and Sprint 9)

September 5, 2018 at 6:25 pm (Game Development, Games, Java, JavaScript, Processing, Programming, Video games) (, )


I’ve recently concluded the 8th milestone for my game project. It’s still an untitled game but is codenamed “Sherlock”. I don’t think this milestone is really worth making a full video for, but here is a list of features that were completed.

 

Sprint 8

-New shader effects for displacement and colour desaturization
-New floor detail art (blood pools, etc)
-Important node arrow animation
-Tons of level scripting for interactions as well as room geometry tweaking
-Support for generic, coloured boxes
-Event handler system (triggering scripts when certain things happen)
-Click on item to see description of it
-Lots of new level detail art
-Engine code refactoring

 

Sprint 9

-Music and SFX added!

-Tutorial level added

-Prep work for internal alpha demo (lots of bug fixes, creating the feedback form, and packaging up a working build)

Advertisements

Permalink Leave a Comment

Project: Sherlock – Dev Log 2 (Sprint 7)

August 25, 2018 at 10:48 am (Game Development, Games, Java, Processing, Programming, Video games) (, , , )


I’ve just posted a pair of videos showing off the new progress from Sprint 7 of the game I’m building in my spare time (progress is slow because I don’t actually have much spare time). Here are the two videos:

 

Some of the notable improvements are as follows:

  • A new anomaly object. This is shown off in the second video; it’s a ripple shader effect that warps whatever is behind it. It’ll be used for some sort of portal later on, or even just some sort of disruption. Not sure yet. I think it looks cool though.
  • Pathfinding added to the path manager. Now you can click on any node and the character will walk the whole path (instead of you having to click on the next adjacent node.
  • New character art added in. Still lots of improvements, but this is a big step.
  • New confirmation window. Asks a yes or no question and performs actions based on what the user selects.
  • New UI revamp. Cleaned up the awful placeholder UI with a nicer looking placeholder UI.
  • Hovering over a location will now highlight it, so it’s more obvious that it’s interactive.
  • Many minor improvements and tweaks to the engine code.

 

 

 

Permalink Leave a Comment

Project: Sherlock – Dev Log 1

August 18, 2018 at 4:22 pm (Game Development, Games, Graphics, Java, JavaScript, Processing, Programming, Video games) (, , , , )


This is the first dev log for a project I’ve been working on in my spare time for the past little while. What is it: it’s a game. Kind of a cross between Resident Evil (without the combat) and the overworld map from Super Mario 3. It’s built using the game engine I wrote myself several years ago. Here’s a small list of some engine details:

Game Engine Details:

  • 2D-in-3D sprite-based engine. Characters are 2D billboard sprites, while levels are 3D tiles and blocks
  • Physics engine (JBox2D)
  • Scripting engine (JavaScript)
  • Handles and organizes game and render code (Rendering uses Processing, which uses OpenGL and GLSL)
  • Level editor for building the scenes

 

So what have I done so far? Well, I’ve just finished my 6th iteration/milestone, so I’m going to take some time to work on the design and levels of the game before I implement more features (I have a big/growing list of features to work on though). Here is a brief video demo of the flow of the game at this point in time:

Here is a non-exhaustive list of the interesting stuff and features implemented for this project so far:

  • Set up a new game/app that uses my existing engine. Re-used most of my game art, etc. so I could get it together faster
  • Basic mechanics implemented:
    • Rails movement: Click on nodes to walk to that location
    • Actions: Some locations have specific actions the player can take, such as opening a door, taking an item, or searching that location.
    • Condition system: Some locations or actions have conditions (aka you need an item or to have done something). It uses a Mongo-like expression evaluation system.
  • Title screen and level select screen. Basic stuff, but had to be written
  • New game art:
    • New Character art and animation sequences. Still in progress, but right now it at least looks like a dude walking around the levels
    • New isometric pixel art for random objects in the levels. This is so the levels feel more like a world instead of an empty room
  • Task queuing system. Requirement for this type of game. You give the engine some work to do and it’ll do it in order (stuff like “move here, then play sfx, then do something else”)
  • Session auto-save system. Loads your game session when you boot up a level and manages everything you’ve done in the game (inventory, completed tasks, etc)
  • Various minor engine tweaks: Camera zoom, thicker walls, etc
  • Added a handful of levels and added a bunch of objects like wall art, desks, dressers, etc.

 

 

 

Permalink Leave a Comment

BioHive: Bioinformatics blast from the past

July 7, 2016 at 10:30 am (Computer Science, Processing, Programming) (, , , , , , , )


Lately, I’ve been combing through some of my old projects so I can index and archive them. Among these old projects was my BioHive code; a bioinformatics visualization tool I wrote years ago. It was an attempt at exploring genome comparison data sets. It was actually the first non-trivial Processing (P5) app I wrote.

Different genomes would get organized into layers (indexed using colour) and nodes would be joined together based on similarity strength. Thickness of the lines would indicate connection strength, and filters could be applied to reduce clutter. Selecting a node in a layer would show information on the genome it represented as well as the top similar genomes.

These are a few screenshots of the app. In this example, Syphilis is the point of interest and they are just different views of filtered results.

Permalink Leave a Comment

Latest Project: Node.js + Bootstrap + D3

July 3, 2016 at 5:07 pm (Computer Science, JavaScript, NodeJs, Programming, Rant) (, , , , , )


I’ve started putting together an app I’ve been planning for a while. I’ve been trying to select a tech stack that would allow me to focus on the “meat” of my idea instead of spending too much time setting up boilerplate stuff. In the past, I’ve ended up wasting days just setting up technology stacks and libraries just to find a limitation that would eat up even more of my time or even flat-out block further progress. This time around, I think I should be okay; I’ve selected Node.js and Express for my launch point.

I’ve decided not to bother with MEAN.IO right now since I won’t need MongoDB right now and I’ll be using D3 (the visualization library) instead of Angular. Express provides me with the basics for routing and serving web content (more stuff I don’t have to do). I’m still not really a fan of Jade/pug as a template engine, but it’s workable.

I’ve also added an REST API on top of it for accessing my Trello account (via it’s own REST service). I’d like to do some sort of interesting visualization of my content using D3, so now that I can serve up the data I’ll need, I can actually start building the good part.

One of other boilerplate tasks coming up is to set up a client-side package manager (Bower) to manage my dependencies. I will likely also need a task-runner to build my project stuff, although I’d like to consider using NPM for that instead of Gulp/Grunt.

Permalink Leave a Comment

Story time: Lessons Learned from Contract Work

June 11, 2016 at 3:21 pm (Computer Science, Rant, Thinking) (, , , , )


A while ago, before I started my Masters degree, I tried to find contract work for the summer. I figured I’d need some extra cash when I would move to the east coast to do my Master degree later that year. One of the companies I approached needed a new website; their current one had information crammed in every inch of the view space and it only served up static data. I met with them to figure out exactly what they were after and then set out to build a prototype for them. It was very clear that they knew very little about technology or even what a new web site could do for them.

I took a week to build this prototype for them. It was an ASP.NET web portal with a database back-end, and the whole site was localized as they had a lot of international clients; which I saw as their most important requirement. For the front-end, I scraped most of their base website as their needs were mostly to provide clients with a private access portal, where they could manage their accounts and services. I contacted the company again and set up a meeting to show them what I had made. It had some rough edges (mostly because re-vamping their business-specific pages was a monstrous task that required subject expertise), but it met their needs and was maintainable. More-over, the prototype actually worked; users could sign in, register for services, and communicate using an internal messaging system.

During that second meeting, I received criticism and sarcasm over my prototype. His comments were along the lines of “why would I pay you for a website I already have”. Despite my explanations, he seemed unable to grasp the idea that his $10/month static website hosting was not capable of any of the things his company needed to provide. Because the interface consisted of the same content that he already had, he didn’t understand the amount of new functionality that he would have had with this new piece of software. I was pretty baffled that he couldn’t understand what I had created for him just to GET the contract; not even as a final product.

After several more days of back and forth and modifications to the front-end, I had made a very professional-looking product prototype. I spent effort to make sure it was organized and easy to follow (as far as a mock-up could go), and it still functioned very well for what his needs would be. As it turns out, he loved what it did (finally), but he decided to change his offer: his new offer was on the scale of $10 an hour (citing a bad economy). In addition to creating the whole thing, he also wanted permanent support for it, and he announced that since he was already paying for [static] hosting, he wasn’t going to pay a cent more for it.

At that point I decided I was done with trying to chase this contract. I very politely declined his new offer, and excused myself from his office. I had wasted about two weeks working on this prototype as well as the cost of parking for all of the meetings. I learned a lot of valuable lessons from the whole situation. Firstly, not everybody is capable of understanding vision; some people are just moving objects, not able to see where they’re going. These people need to be dealt with very carefully with “kid gloves” to avoid them from getting in the way of themselves.

Secondly, assertive communication is of paramount importance. If I had forced the questions that I knew needed to be asked, I could have perhaps avoided the whole situation. I wasn’t prepared for others trying to take advantage of me, and I definitely did not ensure we were on the same page. Always be assertive, especially in business.

Lastly, never underestimate the power of idle time. I ended up taking the rest of the summer off to relax and mentally prepare for the stress involved in moving across the country and starting a new endeavor. I finally understand how critical it is to step away from life and take time to clear one’s head.

Permalink Leave a Comment

Updates: June 10, 2016

June 10, 2016 at 10:55 am (Art, Java, memory palace, Programming, Rant, Thinking) (, , , , , , , , , , , , )


I’ve been working on a number of different things as well as thinking about my next steps and goals for the year. Here is a point-form list of some of the projects and endeavors I’ve been spending effort on in the past couple weeks:

  • I set up a home Linux server. I wanted a local, private Git repository as well as a machine to host some automated processes and apps. Things have been working out very well on this front. It’s been a great learning experience on top of it as well as I haven’t really used Linux in a decade or more. I installed a desktop version of Ubuntu, but I’ve been sticking to using the terminal as much as possible to expand my sphere of knowledge.
  • I’ve been working on my coding skills and algorithm knowledge. I always have some sort of coding project on the go, but recently I’ve been so focused on my front-end skills that I’ve let my core skills droop a bit. To get back up to par, I’ve been solving a lot of coding problems in Java as well as figuring out some algorithms that I haven’t touched in a while. I decided to start basic with heaps and heapsort, then moved on to KMP string matching, and now I am working on suffix tries/trees. I’m going at a slow pace with this though so I can not only code solutions, but also store them in my mind palace.

   Preparing an algorithm for long-term mind palace storage pretty much consists of tearing the algorithm down to its basic elements in your mind and trying to make a story out of it. For example, I’ve decided to store the KMP string matching algorithm in a kitchen in one of my mind-rooms, so I compared the process to making spaghetti. Comparing noodles of different length was the basis of the story. I also had to work in the generation of the prefix table for the search pattern. For this, I’ve been toying around with adding some sort of “sauce” to the story to indicate the comparisons of the prefix to suffix for each length of the pattern noodle.

   I think that I’m finally starting to outgrow the hub room I’ve been using for my computer science mind palace. It was a good index for classes of algorithms so I could always see what tools were at my disposal, but it’s getting too cluttered now.

  • I’ve also been doing a lot of general-purpose reading. I visited the library not long ago and “accidentally” walked away with between 10-15 books. Some of these were painting-related so I could learn some new techniques and composition skills, but I also picked up some interesting biology books. One of these is a book on viruses (the non-computer version). I’ve been learning a lot about how they operate as well as how they’re being used/manipulated today. Bacteriophages are being produced to one day replace antibiotics, and I find the whole thing fascinating (phages are a type of virus that goes after bacteria instead of humans).
  • In addition to practicing my coding/problem solving skills, I’ve also been working on learning and using some new technologies; at least new to me. I’ve been fiddling with the Play framework, which is a web platform. I wasn’t really impressed with it at the start as you have to use a self-hosted web app just to create a project structure, but beyond that it seems really nifty. My next area of interest within this framework is the Ebean integration, which allows for a fun way to connect objects to databases without having to write scripts and stored procedures. There are also some features to allow syncing a database to ElasticSearch automatically, which will be fun.
  • The Android platform is another area I am learning about lately. I’ve set up my development environment and I’ve been learning about the SDK for creating apps. It seems like there are a lot of different approaches to building Android apps, especially as the SDK has been evolving. It has made things a little awkward to get started (as there are many references on the internet to doing things the “old” ways), but I think I’m past that hurdle now. My only real problem now is that I haven’t been spending enough time on this project.

Permalink Leave a Comment

Progress Update: May 24, 2016

May 24, 2016 at 6:39 pm (Computer Science, Java, Programming, python, Rant) (, , , , , , , )


I know I’ve recently posted about a few of my upcoming goals, but since then I’ve fiddled with a number of things since then and have some updates on my progress.

  • Python Learning. Thanks to a suggestion on the Halihax Slack channel, I picked up a pretty decent IDE for my Python projects (PyCharm). Unfortunately, I learned the hard way that Windows is not the ideal platform for using Python. I wanted to work with a packaged called “sklearn” that I saw during a Google I/O session on machine learning, but it depends on SciPy; a package for scientific calculations. Unfortunately SciPy has some dependencies that do not install cleanly on Windows (LaPack and BLAS are a couple examples). I was really looking forward to toying with the code snippet from the presentation, and I’m sure there are plenty of equivalent libraries I could try out, but the fiddling process wore on me.
  • Android Learning. I’ve been learning about making apps on the Android platform. There was a fair amount of setup and configuration for getting the IDE to work as well as setting up the right emulators to run code on. The annoyances were further compounded by the fact that I don’t want anything installed on my C drive. I use a smaller SSD drive for my C, and then put everything else on another drive; it allows my OS to run lightning fast and lets me get going faster. This guide ended up being really useful in moving the hefty emulators and other odds & ends to my storage drive: http://www.littlecpu.com/android-studio-c-drive.

  I’m in a pretty good “hacking” state right now on this front after some effort. I’m learning about the UI-data model binding within Android page components as well as other architecture aspects. The architecture is fairly straightforward (activities, services, etc) but there seem to be a lot of conventions and gotchas.

  • Java Experiments. I’m also back experimenting with Java as well. I’ve been using Derby (JavaDB) as an embedded database, and it’s pretty simple so far. I had toyed with MapDB a bit, but I’d like something a bit better supported so I can use Hibernate with it to avoid having to do my own schemas. I’ve also been using ElasticSearch in parallel. It’s kind of it’s own document-based database, but without the reliability – it’s usually used in conjunction with a real database and you just sync the data in batches so that Elastic can index the data to make it searchable. These components are all pretty straightforward, but I want to build a decent non-trivial demo project. I was also considering using Akka for the concurrency management to control the batch operations to ES.

Permalink Leave a Comment

Updates: May 2016

May 15, 2016 at 7:03 pm (Computer Science, Java, memory palace, Programming, Rant, Thinking) (, , , , , , , )


It’s been a while since I’ve posted about my recent endeavors outside of painting (this is by design). There’s been a fair amount of things keeping me busy and stressed. That being said, I’ve started putting together and working on my goals for the next several months. A large part of this will be getting my full-stack technical skills back up to a competitive level. I’m going to be focusing mostly on my Java skills as well as commonly-used libraries, since it’s been a while.

As part of this, I spent a bit of time building a small app to back up my development files. Mostly because I needed a good, automated process and didn’t want to go shopping for an app. I needed something that can backup different sets of files at different times, so I could selectively backup specific projects and images, but also my full dev repository. It seems to be working according to my tests, but I’ll be trying it out soon to find out.

I also plan on picking up Python. I think I will use Python 3, although I want to be knowledgeable of the differences from 2 to 3 as well so I can read/port existing code. It shouldn’t take long to pick it up, but I have to learn the specific syntax and rules such as scoping, etc. Some sort of project would help, so I’ll be trying to think of more home automation tasks I could fulfill with Python apps.

Lastly (for this post), I plan on giving my memory palace an upgrade. I need some more rooms, and I need to finish storing algorithms in it. I’m missing tree and graph algorithms (which are pretty important), and I wouldn’t mind adding some more details for implementation as well. This should ensure that I don’t have to review algorithms, data structures, and design patterns when I need to use them; I’ll have them permanently stored.

Permalink Leave a Comment

My Interview on Dell TechCenter (RE: my inventor status)

April 13, 2016 at 10:39 am (Computer Science, Innovation, Thinking) (, , , , , )


I recently was featured in a Dell TechCenter blog for the innovation work I did last year. I ended up getting a “Top Inventor” title at Dell for 2015 due to my work with filing patents. Unfortunately I can’t really talk about them or even give an idea of how many submissions I made, but I feel like I now have “proof” that I actually did achieve what I said I did, beyond just a LinkedIn title change.

This is the article: http://en.community.dell.com/techcenter/b/techcenter/archive/2016/04/06/inventors-month-jake-seigel

 

Permalink Leave a Comment

Next page »