technology


Global Game Jam 2019

This image has an empty alt attribute; its file name is Global-Game-Jam-Eugene-2019-sha25605f08af07855b2d9bc9c69e0dca91265aab952e49bc4f74444b9a0984468ff80.png

^ We received these hip badges after the end of the jam

I participated in January’s Global Game Jam! This was my first game jam as an official participant and it was an amazing experience. Besides me (programmer/designer), my team had an artist, an audio person, a designer, and another programmer. I knew half the other members of the team, so it was a nice mix of familiarity and new faces.

I jammed at a site that was organized by the local game development community  here in Oregon (which is where I work now, as a game designer). You can check out the game we made, Third Time’s the Charm, on the GGJ 2019 project site. We intended it to be mobile/web, but with the time crunch the windows build was the only one we got working in time. Such is the nature of the jam!

Several of our team members expressed interest in expanding what we created into the grand design we desired. I would love to continue working on it (even if it’s just to get a mobile build working) in the future.

At the end of the jam, everyone who participated on the site showed off their games. It was super cool to see how each team interpreted the theme (What Home Means to You). I was particularly interested in the projects that used AirConsole. Really got the idea machine churning. Looking forward to sitting down and playing games from other jam sites!


Interactive Data Analysis and Visualizations

Data Visualization Tools for the Web

One of the major advantages of the digital humanities is the ability to work with and analyze lots of data. Naturally, one wants to visualize that data and analysis results. There are a lot of options out there when it comes tools that aid in data visualization, and some are more intuitive to use than others. While it is wonderful that there are so many tools, it can be difficult to know which ones are best for the job. Their usefulness depends on the type of data being worked with, the overall scope of the project, and how much technical expertise there is on the team.

Chart Making

If you already have the data you want to show and know what kind of visualization you are after, there are several simple chart options available, especially for web display.

Google Charts

Google Charts is a common tool used to make interactive charts on webpages using HTML, CSS, and JavaScript. This may sound a little daunting, but it was designed so that non-coders would still be able to pick it up relatively easily. There is a decent range of available chart types, and all of them are interactive, making them great for integrating into a digital report or webpage. One can either make the data table in the code themselves, or they can link to an online spreadsheet (such as Google Sheets). This is a little limiting in that this is the only way to import data sets, and if one is looking for a more complicated display, it would take a lot more fiddling with code than what might be comfortable. However, it makes great aesthetically pleasing interactive charts for simple needs.

Variance

Variance Charts also plots simple charts via HTML and CSS, but attempts to smoothen out the learning curve even further by dropping the need for JavaScript knowledge altogether. It also is a step up from google charts in that you can import csv files, instead of having to link to a google sheet. However, it does not inherently make the charts interactive. It is a good fit for quick charts with little coding knowledge, and still allows for some stylizing. As they state on their own home page, Variance is not the best choice for more complicated visualizations or data sets greater than ~20k rows.

JS Libraries

If there are project members who are knowledgeable about JavaScript and the HTML DOM/Canvas, then there are many JavaScript libraries that make custom interactive charts easier and more appealing, such as D3js, Plotlyjs, Highcharts, and ChartJS. D3js in particular can be used for complicated data analysis and mining as well. (Many of the higher-level chart makers are built on D3js). These libraries are a good option when there is a programmer on the team, when showing the data is essential, and when the visual needs a certain level of customization that can’t be reached with simpler tools. There are a huge number of these, so the best way to determine which one will be best is to take a quick glance at each and pick the one that works best for the needs or the project.

Data Visualization

For more in-depth analysis or complicated data manipulation, charting tools alone are not going to be the easiest to use. If the project is still in the analysis stage, there are a few good pieces of data analysis software.

Plot.ly

Plot.ly is an online graph maker that lets you import data from multiple sources and requires no coding knowledge to use. It does, however, require an account, and does not have the most intuitive interface. But for those looking for something simpler than Tableau or Orange and do not need their more complex analysis capabilities (or is unable to download them), Plot.ly is a great option, especially as coding knowledge is not really needed. If there is a programmer on the project, then Plot.ly also has a JavaScript library to make more customized visualizations. There is a free and paid version.

Tableau

Tableau is a desktop data visualization software. It lets you either manually define or import data sets from several different filetypes. It allows for many ways to display data, and was specifically created to help with data analysis and visualization. There is a free version (Tableau Public) and a paid version, meaning that the free version students would likely use is a little more limited. It requires no programming experience, but the graphs on Tableau public are all shared to the web publicly, and has limited visual control. However, the interactive visuals can be embedded into other web pages or downloaded as still images.

Orange

At first glance, Orange works much in the same way as Tableau, but is free and open source. It also allows for a lot more involved data mining and analysis. However, its user interface is not as easy to pick up, and to do the more involved data analysis requires more expertise. Its visuals are also not quite as sophisticated, but it is a much more robust tool for an aspiring data scientist. It does not require programming to use, but there is the option to do some scripting if one desires.

Play favorites

These are all decent programs, and in most cases there is not going to be a “best tool” for any given task. Yet one should still keep in mind the skillset and end goals when picking tools. In the end, it comes down to what needs to be accomplished, and what one likes to use and is comfortable with.


DHSI – 3D Modeling and Games for Digital Humanists

These past two weeks, I have been at the DHSI (Digital Humanities Summer Institute) conference. It’s not the easiest experience to describe. There are classes, colloquiums, guest speakers, talks called “unconferences”, presentations, and hangouts. The participants by a vast majority are grad students and above. In each of my classes, I’ve had a nice mix of grad students, phd students,  full on professors, and a few others. I think it’s safe to say it’s a mostly academic-minded conference, though there is definitely value for non-academics with an interest in digital humanities as well. Something that I found absolutely fantastic is that there was a significant lack of barriers or separation by academic group (ie. if I wished, as an undergrad, I could go to dinner with a professor, a phd student, and a masters student with no weird separation or awkwardness in discussion that one tends to experience otherwise). All in all, a fantastic experience – I learned quite a lot, and gained a ton of inspiration for the future.

The first class I took was 3D modeling, which was essentially intro to SketchUp. We made a nice replica of a building in downtown Victoria:

Victoria,_BC_-_The_Guild_(1250_Wharf_Street)_01_(20532374915)

Here’s the front:

gfront

I worked mostly on the back:

gback

I think it all turned out pretty well, for a small group of people who had never used SketchUp before.

The people in this course, by the way, were awesome – Among getting encouraged to become a medievalist, I was able to get a lot of advice and interest about my project, and my impostor syndrome melted away the more I spoke with people.

This second course, Games for Digital Humanists, I decided to take because it’s super relevant to my project, and also, vidja gams are cool. The first day of the course inspired me with many ideas for awesome blog posts, which of course I will obviously  write as soon as I have time and my brain isn’t melting (which, by the way, is why I haven’t been keeping up with the weekly updates).

The first few days were spent working on some fascinating theory (I sense a lot of reading in my future), and then the class split into groups. The instructors of this course invented a game to create games, and so we played this game to come up with a game design. It’s really neat – the last time they taught this course one of the groups took their idea to a kickstarter! (It got fully funded, too). The idea we prototyped was a storytelling game along the same lines as dix-it (fantastic game, by the way, especially with the right people). A group of players draw one protagonist card and one setting card. Then a timer is set and one player draws a “bad” card and has to say a line or two of a story (using the setting and protag) while trying to put a good spin on the bad card. The next player then draws a bad card and does the same thing, trying to build off the previous player’s story bit. The end goal is to make the story end on a happy note.

IMG_20160616_154818

Messy design process (complete with fish)!

We made paper cards and playtested a few rounds – not bad! Something I’d try with the right group of people. I don’t think we’ll be making any kickstarters, though we learned a lot. It was essentially a super short project process, complete with bumps and hurdles. Not a bad ending for just a few days. I also was able to ask some advice about my project from the instructors, and I have a much clearer idea of a timeline and the project’s overall future than I did before.

I feel like I have grown a lot from this trip. Here’s hoping the return trip to the US goes well!


Exciting Things

So for all of this year and particularly the last few months I have been hoping for a research idea of mine to get funded for the summer and it finally went through! This summer I will be mixing my two disciplines in the creation of an online language retention module. In short, it will be an online website that exists to help language students remember stuff in between courses by playing games and having custom progress trackers. This means I will have to both create a website with games (CS part) and these games all have to contribute to language learning and retention (French part). Obviously, I will be designing the games with French language learning in mind, but the site as a whole will be created with the idea of adaptability for other languages in mind.

I will be posting more frequently now, as I will commence research before the summer actually begins. I will post with reflections on the research materials I will be reading, as well as occasional progress updates on the site work itself.

This is a huge project for one person, but I am determined and also thrilled!


CraftyJS in JavaScript

As a computer science student with an active interest in web development, it’s about time I learned how to program with JavaScript. JavaScript is one of the major languages used for websites, alongside HTML and CSS. It is supported by every modern site, and is used by almost all of them.

I already had plenty of experience with HTML and CSS, but almost none with JavaScript. There are a couple reasons for this, one being that the websites I worked on had little to no JavaScript at all, let alone any that needed to be changed. The other reason is that the need to learn it simply never came up. I enjoy learning things in my free time, but I had heard many a horror story about using JS, and as such was in no rush to learn it.

But then, as it happens, the opportunity to learn it came up. For my current Computer Science course, our over-the-block projects were to design a web application. “Hey,” I thought to myself. “This is the opportunity to learn and build something with JavaScript, and you really should learn it sooner rather than later.” Since I had no idea whatsoever what to build for the web, I figured I might as well default to making a game. I had already made some pixel images for a spaceship game my friend was working on, so why not make a similar Galaga-type game?

I decided to look for a framework or library that would make the whole process easier, and JS has a LOT of those. I ended up going with a beta framework that was specifically designed to help make games with JS.

CraftyJS

CraftyJS is in active development, and all of the code for it can be found on their Github. They actually released a new beta version about 2 weeks ago. I chose it because it looked intuitive and easy to use, even for someone with no prior JS experience. Turns out I was right – it is fairly intuitive. There are, however, some drawbacks and challenges that I faced during the creation of this project.

Problems with JavaScript

JavaScript is an interpreted language, meaning it has no compiler, but also meaning that it will always run, no matter how horribly broken the code is. To quote W3Schools, “Normally, errors will happen, every time you try to write some new JavaScript code.” This makes debugging more difficult, as one tiny change can make nothing show up on your webpage, and without the kind of error throwing and debugging tools that exist for compiled languages, it can be difficult to find the problem. Less obvious errors might go completely unnoticed by developers for long periods of time.

Because JS is such a popular language, though, not all is lost. Tools like JSLint and JSHint can help in resolving errors and adhering to conventional formatting (though JSLint is a little too strict about some conventions, in my personal opinion), and IDEs like WebStorm will catch syntactic errors and provides support for other libraries and frameworks. It is still a step more difficult to debug than compiled languages, though. It is no surprise why there are so many frameworks and libraries that exist to solve many of its annoying quirks.

The Good of CraftyJS

By far the best things about Crafty besides its general ease of use is its documentation. It is well-written, and best of all, it provides examples of how to use it. There are multiple demos on the website whose code is also on GitHub, which was useful for some problem-solving when the documentation was insufficient. Overall, I’ve found Crafty’s simplicity to be a great and pretty fun thing to use, which is not what I expected at all.

Problems with Crafty

Even though its demo code is on GitHub and it has great documentation, Crafty otherwise has a pretty small community. This means it’s harder to find help for specific issues. Additionally, a recent issue has come up where directional keys don’t work in the newest version of Firefox, so I will have to come up with a workaround. However, I have been able to work through every other issue or challenge I’ve faced thanks mostly to Crafty’s great documentation, which will point out potential issues and how to solve them (ex. “the shared object trap“).

I will post a link to the working version of the game and my final thoughts once it’s completed, though you can see the in-progress code on my GitHub.