The holidays are a rough time for work. Weddings, Thanksgiving, Christmas and New Years: it's been a travelsome couple of months. It's been a delightful couple of months.
The time was sparse on devlogs, but not on dev.
Treasure! Ironing out items and UI.
Pug can now pick up items from containers! This naturally led to a lot of work and fixes to the existing inventory/equipment system. That was kinda the point! I think it's pretty solid now. And I'm slightly less likely to be proven wrong about that the next time I work on it. But also I got to make a treasure chest.
Making a game instead of an editor. GETTING READY FOR DEMO TIME
Showing at an expo was nice and all, but my chief goal for this hunk o' months is to produce a public playable demo so I can get opinions from more seasoned VR players. The biggest step toward that goal is to actually be able to produce content for the game.
The PugEdit level editor works fairly well for producing tile-based worlds, but adding details and hooking up actual gameplay requires a whole bunch of work that, frankly, duplicates things Unity's Editor already does perfectly fine. Connecting object logic chains, making one-off decor, adding cutscenes, etc. I'm fine putting in the work to enable that sort of thing in PugEdit once I know it's worthwhile. Adding that level of guff and cruft to every thing I prototype just ain't worth it.
So I added the ability to preview PugEdit levels from inside Unity's editor, and reworked the general level workflow to allow for standard Unity scenes that load .puglvl files on command. And I can launch the external editor from inside Unity!
Compromise: using my editor for world geometry and adding more complicated stuff via Unity's editor.
— Tyrus Peace (@TyrusPeace) December 19, 2018
I can now launch the editor I #madewithunity from inside Unity! It saves to json and its geometry is loaded after the unity scene is opened in the editor (or loaded in-game!). pic.twitter.com/W3klxKKoh3
(I somehow produced a video that can't be uploaded to YouTube or converted to something that can. So have a tweet embed. Sorry.)
The most awkward thing about this is that I have to manually build PugEdit from inside this project whenever I update something that affects it. At least the in-editor preview will always be up-to-date!
Oh wait I'm still working on dumb editor stuff too
Don't worry, I still spent plenty of time fixing boring level-editing stuff! The PUGLVL format has had whitespace added to make it diffable and its key syntax has been shortened to produce 9% smaller files, even with all of that extra whitespace! Exciting.
I also drastically improved the performance of bulk-adding tile blocks. For those times when I want a level to have more than one block in it. Just in case.
{BORING OPTIMIZATION DETAILS} Tiles updated their neighbors when they were placed, since neighbor info, and even secondary neighbor info, could affect what meshes should build a given block. That's exactly correct for adding one block at a time. It is prohibitively expensive and stupid when you're placing a hunk of 512 tiles all at once. I'm fairly certain I've seen that hit infinite loops. Embarrassing.
So I added the ability to delay that update 'til later and pass in an external list to track updates and skip unnecessary churn. I still need to update the full chunk of new tiles twice: first to make sure they all have correct neighbor information and a second time to actually update all of their meshes based on that. It's okay. Computer don't mind. Thanks, computer. {/BORING OPTIMIZATION DETAILS}
I only need one update for bulk deletes, though. Oh, I added bulk deleting! Yay.
Unity 2018.3
NESTED PREFABS. Totally worth updating Unity mid-project. I wanted to wait for the official release, and that finally happened in December! The update wasn't that difficult according to my diff logs, but I remember it taking a day and offering a painful pile of problems.
Git only remembers the thing that worked at the end. It doesn't remember the pain it took to get there. Maybe I should be more like git.
Now that JARPUG's levels load more dynamically, nested prefabs are a big help. I can have one big "game core" prefab that I load on start without nuking all hopes of future organization. I can manually place and preview buttons but still have them be prefabs! I can more easily share a dog model between multiple prefabs!
a cool door
There's probably an actual word for this but I made that load-a-new-area gate thing and I hope it looks okay without anything behind it.
toon glass
Basically every screenshot/gif of the pug has been suffixed with "yeah I'll make a shader for some good looking cartoony glass later" for the last several months. I've got a list of backburnered things that need to be finished before release. This was at the top.
It uses rim highlighting logic to also increase the opacity of the lit edge, making for a cartoony shine that highlights edges in an appropriately unrealistic fashion.
THIS WEBSITE
I'm a one man dev team. It doesn't make sense for me to have separate devlogs per game. The blog lives here at Floating Island Games dot com now, because duh. I also decided to make the header image overlap the nav menu and it cost me half a day of poking at CSS to get that working on both mobile and desktop. Oops.
January
I've got an outline of the planned script for the demo side-by-side with the technical requirements each scene will introduce. It should help me home in on what's actually important to add for that silly little "actually release a thing" milestone. Bye!