Friday, November 19, 2021

Text-Based Game (update #2)

Re-Upload (original date: 11/19/2021)

I’ve recently reached a large milestone for my text-based game and would like to provide a bit of information about how the development has been going. I recently finished all of the scenes that I had planned out in my outline and feel as if I am in a spot where it is a viable game. My next steps are to move on to testing and continue editing. I’ve been working on a questionnaire for testers, but I haven’t begun testing lately. I did a little testing early on in the process.

Development:

Twine is an interesting program. It mostly works like a flowchart, connecting different passages together. I’ve included some screen shots here to help show you how it works.


There is a fair bit of basic programming involved in my particular game. It is really mostly just setting up variables, changing them, and then using if-statements which check their value. I have variables set-up to track the karma, companion approval, and the bishop’s approval throughout your play-through. This is able to be seen when the player checks their status, but also has an effect on the epilogue, completely changing the dialogue there. I use some programming to track some of the links, like with the ‘Check Status’ and ‘Ask Party For Advice’. These all actually link to the same passage and the code changes what is seen. I also have a variable to track which companion you choose and use if-checks to determine which bits of dialogue or options for the next passage are available. Many if-statements are used to determine whether or not to display certain text or options.

The program, Twine, builds an HTML file that plays the game, so there is also access to general HTML tags and CSS styling, as well as even JavaScript. I mostly have used this to remove the back-button that is there by default, as that can be exploited throughout the game, and to change some of the colors. You can also use these features to add images and sound.

Design:

In some sense, adventure games/text-based games generally have two different avenues of design. There are ones where certain options cause your character to lose the game and you have to move back to a checkpoint/the beginning of the game and try again. The other type is present in games where there is effectively no wrong answer that causes you to lose the game and no matter what path you choose, you end up in the same spot, beating the game. My game is in the second category; no matter what you pick, you end up successfully completing your mission. The truth is, the first category of games are also quite similar to the second, as restarting the game every time you mess up will inevitably allow you to reach the correct solution as well. What I did implement to actually make it feel as if your decisions ultimately matter is the tracking of morality/approval and its impact on the epilogue.

Another point I’ve noticed through developing is that, you have to measure how long a particular passage is. I don’t think anyone wants to read over a page at a time during a text-based game. However, some of what makes these games appealing, is the detailed, evocative descriptions. It’s also relevant to make sure that no matter what path the player takes, they’re not having a drastically different play-time or seeing drastically different length passages. I really won’t have a major sense of how my general game-length is until I test more. And even then, I don’t think many players read very much nowadays, not that their input wouldn’t still be valuable. I’d really like to find some testers that are active readers or enjoy playing text-based games like visual novels. So it is a tough balance.

Frankly, I didn’t imagine I would be getting into writing this much when I started this project. I had always been interested in it though. I enjoy reading quite a bit, I’ve liked my writing assignments in school, and I write a lot of notes/ideas/brief blurbs in my notebooks. This is likely the largest creative writing project I’ve made. Also, just by virtue of it being a branching story rather than a straight-forward novel, there is a lot of writing that needs to be done that players will not see on a single play through. The player likely sees less than half the passages I wrote in a given play-through. All together, this game is 29,865 words. From what I’ve read, the average novel is about 40,000+ words. So, it has been a significant amount of writing. I had the outline done a long time ago and it really took a long time to fill out the details between each major plot point.

I would also say that, although Twine is great, I don’t think it is the perfect program for making complex games and doesn’t easily allow for dramatic changes to the game’s structure. You can do a lot with HTML/CSS/JS and with the Twine language, but it gets complex. It’s not particularly easy to add new features like key-based input or porting to different devices. I’d still like to use Twine for the time being, especially while I just iron out all the text itself, but if I wanted to move this project on, I would likely end up porting it to the Godot game engine. This would make it easier to add new features, like animations and such, but would also be a significant change in that I would be able to use the tools I learn making this game in Godot on other games that aren’t even necessarily text-based.

Anyway, this has been an informative and fun process so far and I appreciate you reading about it.

School Projects (update #1)

Re-Upload (original date: 11/19/2021)

 
This blog post was made mostly just to move some of the information that was on the portfolio page for my school projects to a separate page, so that if people are interested to learn more, they can, but are not otherwise exposed to that extra info if they just want to see the finished pieces themselves.

These were all done during my Interactive Media - Game Design Associate's program and were generally done in 1-3 weeks each.

Unity Platformer Level:

This was a school assignment I had in my third semester. I've included some of my pencil and paper designs below. We spent a couple classes establishing a character controller in playMaker, the health/damage systems, and the UI, using free assets. 'playMaker' is a Unity addon that is basically a visual coding tool. Then we were given creative freedom to make a platformer on our own, with intent to make it around 10 minutes long to play. 


3D Models:

This was my assignment in my first semester Game Design course. The assignment was to make a weapon. This was made by directly referencing the Daedric Axe from The Elder Scrolls V: Skyrim. I made this in Blender.

The other set of 3D models were made in my 3D Modeling course. The assignment was to model any outdoor or indoor environment, using modular development (making set pieces and duplicating them). I picked a simple harbor/port. This was made in Maya. The textures were free assets downloaded from online. This involved basic modeling and UV texture mapping.

Vector Graphics:

These were made with Adobe Illustrator as well as with Inkscape. They were for my Digital Design Concepts course. I used a reference photo and traced over it with vectors for the first image. For the second, I sketched the pictures of Mario and Link using reference images, scanned them in, and then traced over with vectors. It was a poster assignment.

Raster Graphics:

These were made with Photoshop for my first semester Digital Imaging and Design course. I've used GIMP (GNU Image Manipulation Program) for over ten years, and I'm relatively familiar with creating/editing raster graphics. The first two were done by drawing over a reference layer, with the circlet and sword being images taken from the internet. The last assignment shown here involved combining real photos of landscapes to create a unique landscape.

Thursday, November 18, 2021

Video Animation (update #2)

Re-Upload (original date: 11/18/2021)

Over the past week, I went back and finished up my Video Animation that I started in school. Using Adobe After Effects, I put together all the digital images I had made during school and finished up all the scenes I had planned. Most of the process was straight-forward, I found, I had very few instances where I had to learn something new to continue.

Some of the interesting points during development included:

- Adding the looping flame effect. I ended up using two duplicated layers, that were offset, and looping them back to the beginning when they reached the edge. I also had to draw a new image for the flames, which I scanned and traced over in GIMP.
- Generally, just how long it can take to make an animation, even when you know what you’re doing, have everything planned out, and have all of your images already done.
- There is a lot of math involved if you want things to be smooth. It’s all basic math, but it is frequent. Math like counting frames, counting pixels, figuring out relative scaling, and just planning around how long you want things to last in frames.

I enjoyed working on this animation. I’d like to make something more complex in the future, with actual frame-based animation (like a walk cycle – drawing multiple frames), instead of just mostly changing the position/scale/rotation of a single image. It would be best, though, to get more experienced drawing directly digitally on a tablet, rather than drawing by hand, then scanning, then tracing, as this takes pretty long and would really add up if I have to do a lot of frames for a short animation. Otherwise, Adobe After Effects itself is nice to use. It’s an effective program overall. I just am not in love with the Adobe pricing model and would rather just use an open source tool. Blender has some 2D animation tools and I would be looking toward that next for any animation I’d like to do.

Thursday, November 11, 2021

Website (Update #1)

 Re-Upload (original date: 11/11/2021)

I went off my schedule for about 2 weeks and have been working on finishing my website instead. I felt like it was reasonable to delay my regular routine a bit to get my site up and ready to present.

I was primarily just trying to recreate the portfolio site I made during my Associate’s Degree. This site was originally made using the GUI website builder, Wix (https://www.wix.com/). I think this is a reasonable tool, especially to present to a generalized group of game design students who aren’t necessarily all interested in learning much programming (though I do personally think all game design students benefit greatly from learning programming - how else would a designer or artist know what is practically feasible to implement in a video game - but that is a separate topic). However, Wix forces you to use their given domain name (‘username’.wixsite.com), as well as having a banner advertising Wix across the top, or pay them a monthly subscription to upgrade your account and allow you to use your own domain with their service. So, I had three main reasons to build my own site, rather than continuing to use my Wix set:

1. The domain name/banner was unprofessional, and to change it to my own domain, I’d have to pay more than I would like. I had already done some HTML in high school and knew it’d be worth it to set it up on my own rather than pay for the service
2. I wanted to have more experience with Web Design/HTML/CSS and to be able to advertise that skill on my portfolio
3. I would have more direct control over my website, rather than using the preset paradigms given by Wix

I purchased a domain quite some time ago. I then spent some time looking into hosting. I fiddled with Apache for a bit, using an IP provided by my ISP, but after troubleshooting with Apache for awhile, I ended up just using GitHub Pages to host my website. This ended up working pretty well for me as I had already started to use GitHub to backup my projects anyway.

I then started to recreate my website using HTML and CSS. I haven’t used any JavaScript here, yet, managing to get all I wanted done just with CSS. There are some points where I’d like to try implementing some JS in the future, perhaps for showing images in a slide-show format.

I learned a lot throughout this process and really enjoyed it. Each page basically had a new challenge for me. The major ones were, using iframes to embed pdfs/video so that they are readable on most browsers, centering div containers and making columned image sets, and the bloghome page was a good design challenge as well. A major point was, optimizing for mobile. I thought I may have to use JS to detect what device is being used, but I ended up using the @media{} tag. This effectively works like an if-statement, detecting what sort of media the page is being displayed on and running the CSS within the braces. So, I checked if it was displayed on a screen with a viewport width of under 1000px and if it was in portrait mode and, if so, the CSS would be changed to accommodate, generally increasing the size of elements so they could be more visible. If a mobile device is held landscape though, it just loads the default CSS.

This has been a very productive, fun, and informative project. Thanks for reading about it.

General Update #4

Re-Upload (original date: 11/11/2021)

I’d like to provide an update on what I’ve been doing on a regular basis. I’m going to break it down by my scheduled tasks.

First Week:

Text-Based Game Design:

I finished my first draft of my game and have been repeatedly editing it. I seem to always find something to change when I play through it. I also have dozens of notes about changes I’d like to make - some small some big - that I have been implementing. I’ve also been writing down a beta test set of questions/form to help when I beta test. I could start testing now, it is in a functional, feature-complete state, I just imagine it would be wise to implement my edits first so I’m not wasting my testers time (i.e. they may note something that I already have plans to change).

Physical Document Organization:

I finished scanning all the notebooks I had in queue (roughly twenty notebooks of varying sizes). In this process, I categorized the scans into folders – Writing, Images, ImagesWithWriting, and Game Ideas. Afterwards, I went through the entire folder of Writing and transcribed each of the scans into a raw document. Then, I categorized the text in these raw documents into their own categorized documents (e.g. notes to self, to-do lists, creative writing, etc.). Throughout this process, I didn’t transfer any notes that seemed of little use, as I have more than enough ideas and need to separate the wheat from the chaff. Next up would be to go through Images and pull out any drawings that stand out to me and set them aside, categorize the ImagesWithWriting, and go through my newly categorized Writing documents and review them/pull out useful info. I already categorized the Game Ideas as I went along.

Computer Programming/Computer Science:

I’m still working on my Unix/Command Line tutorials on YouTube. In the tutorial series, it mentioned this site (http://www.catb.org/esr/faqs/). I took a detour to explore this site and found it be very valuable. I ended up spending some time reading up a bit about programming at a high level. I read about the fundamentals of how a computer/the internet works, specifically on a Unix system. I read about how best to find information when stuck on a programming problem and what sort of mentality/procedures are advised if one likes to tinker with computers (referred to as “hacking” in this early 2000’s post).

Drawing:

I’ve been doing a lot of drawings of wallpapers, usually video game art, alongside some drawing of the human form and environment drawings. I have some new ones to add to my portfolio.

Web Design:

I’m still going through my JavaScript course and look forward to trying some it out on the web. I took some time off that, though, to get my website up using HTML/CSS alone. It went pretty well – there’s more info on it in my dedicated blogpost.

Math:

I’m working through my Calculus review still. I also forayed a bit into linear algebra, as the game development textbook I was reading through started to mention it.

Second week:

Tabletop Game Design:

I’m still going through my book, Challenges For Game Designers. I’m on a chapter about randomness/chance and, as one of the exercises, I made a variant of Tic-Tac-Toe with randomness that worked out pretty well. I feel as if I may want to add some of these games to my portfolio even though they are all just simple prototypes.

Digital File Organization:

This overlaps heavily with my Physical Document Organization, as now that my notebooks are scanned, I have a lot of sorting to do.

3D Graphics:

I recently finished the texturing section of my Udemy Blender course and made a complete scene. They include all textures that I made, using mathematical noise generators and such.

Video Game Development:

Still going through the Godot Docs. I’ve made two more simple games through following the tutorials and have exported a game to Android. I’m also considering uploading some of the games I made during my Udemy tutorials. I imagine it’d be best to put some of my own spin onto them – making new levels, mechanics, and/or changing the assets – rather than just uploading a tutorial game.

Research:

Much of this task has spilled into my daily routine, rather than being set aside for one day. I’ve been reading through my Introduction to Game Development textbook. I’ve also been listening to old GDC audio segments. I’m hoping to go through all of the ones available on the GDC Vault website and have done all from 1997-2000. It’s really valuable to learn about how things were done before and there still is valuable perspectives and information that still applies today. Otherwise, I recently found out about The Game Maker’s Notebook podcast, which is associated with the Academy for Interactive Arts & Sciences. I’ve also been reading through a classic fantasy story, Phantastes by George MacDonald.