8/1/2017 - Finally off the road againAfter about 4000 miles of being on the road, we finally arrived at our destination. Unfortunately, during that trip, we had out alternator go out on our car on the way and that was an unexpected expense, but we had enough of a buffer in our travel budget to allow for that. I saw a number of sights along the way including the town of Alexandria from The Walking Dead and Antique Archaeology from American Pickers, and Mount Rushmore. Now that I'm at my destination, I'm now able to concentrate on the game more. I have added a nice texture to the cards so they look like real playing cards when zoomed in. I also found a few bugs and fixed them.
I created a UI which includes a slide-out menu bar and a message that pops up at the bottom. I decided to go with a polished hardwood with gold trim theme for the UI to match it, with this being a card game, so I went for a fancy casino look. I have some sliders, buttons and a slide-out menu bar as well. I added a number of new features such as scrolling around the table and stacking cards into books.
I finally figured out what the advantage of an interface is over inherited classes. It allows you to define a set of functions that are guaranteed to be available for a given set of classes even if they are completely different. Because the functions are guaranteed to be there, you can grab the interface of the object and interact with it regardless of what the object is.
I was having a number of performance issues with the game. I turns out the culprit was the outline effect script and it wasn't the script itself. It was how I was using it. I was using it on both faces of each card on about 4 decks of cards (with the option to use 6). That's over 400 copies of the script that needed to be drawn/erased each turn. I changed it so that instead of erasing the highlight, the script itself is turned on and off. Additionally, it only displays the highlight for the cards that need to be shown and for the face that is showing. After doing that, I realized when you hover over the card, the highlight is drawn through the card itself. I put an erased highlight on the card that is moving around and that solved the problem. While typing this, I realized that it also did this with your hand of cards and I could do the erased highlight, but I decided to just leave it as a feature instead.
I'm currently in the process of adding grid squares that allow the cards to be dropped onto. The main reasons for this include organization and prevention of card overlap such as setting it partway onto the deck. I came up with a layout and I'm programmatically having everything lined up so that it will always be correct. This still needs to be tested on multiple screen sizes as that may affect how I'm doing my calculations.
I made some slight updates to the artwork as well. For instance, on my Joker, it was easy to confuse it for a jack when the cards were layered on top of one another. So I added a joker symbol to each joker card and now that's what you see when the cards are stacked. So the question now is when I project the project to be done and I'm trying to target the end of Q3, but in reality it may go a little into Q4 since this is my first game that I will actually complete to release.
6/21/2017 - Card Highlighting and TransitionI've now added several major features to the mechanics of the game. The first thing I added is a smooth transition from the 2 dimensional hand in front of you onto the 3 dimensional playing field. This required a bunch of math to get working, but it feels very natural, which is what I'm going for here. You can also re-arrange the cards in your hand by moving your card from side to side and dropping it.
As you may have notice in the picture, there are two draw piles. This can be set to one or two with a rules setting change. Very customizable rules is the cornerstone of this version of Hand and Foot. It seems just about every version I find has slightly different rules and none of them exactly follow what I was taught. So for a few years now, I've been wanting to make a version that I could customize. The fact that it's 3D was more of a convenience thing, but has worked out very well. So, for customizing the rules, I documented exactly what I want the options to be. Then I created a custom unity editor that I can choose amongst those rules. The custom editor is something I only see in Unity, but it will serve as the model for the version I make in the game.
Another feature I added was single target highlighting. What this means is that if you can drop a card onto a target it will highlight. If you are over multiple objects, it will select the closest one, which is why I call it "single target".
I ended up using another free package called Outline Effect to achieve this. It has a lot of customizable options and I'm still playing with those. As you can see in the above picture, I've made the decks look better than in the last entry. This was achieved by scaling the thickness of the card meshes to be more realistic. I've also added a discard pile, which is created by removing the top card off the draw pile, or if there is more than one then a random draw pile is used.
I also moved a bunch of code from the Card Manager Script, which does all of the shuffling and automated moving of cards to the Draw Piles and Discard Pile themselves. This allowed me to create more than one draw pile and is really the proper way it should have been done in the first place. Though to be perfectly fair, when I originally wrote the Card Manager, it was a component of the draw pile.
The next thing I've been working on is designing and setting up a UI. This will include menus, the title screen, any dialogs, on screen buttons, the settings controls, etc. Unfortunately for me, this is a bit of a weakness, though I have done it before in the past successfully. At the moment, I'm working on strengthening my skills and exploring different design ideas. I find the process similar to designing a website and my web background should come in very handy for that. Hopefully on my next entry, I'll have some UI components to show off.
6/8/2017 - Going on the roadOk, it's been a few weeks since my last update and a lot has happened. First of all, I'm going to be on the road in a few weeks. The house I've been staying in sold right around the time of my last update. Because of that, I've been helping my wife with her business a bunch, and I haven't been able to do as much as I would like on the games, but I have been making progress. I've also been setting up company organizational stuff such as tickets so I can track any issues that need to be done and file any bugs to work on later. I also set up an internal wiki as a central place to keep stuff and a Git repository so I won't lose much in the event of a computer crash.
Something interesting that happened at the end of last month is that almost all of the RadioShack stores closed around the country. The one close to where I'm staying had received inventory from other nearby stores that had already closed and they sold a lot of the remaining stock to us for a very good price. So we've been sorting through it and deciding what is the most valuable because we need to fit it along with all of our other stuff in a van. So we plan to be driving around the country for a couple weeks, hence the company name Vagrant Games which was more of a play on the fact that I'm mobile.
I ended up redoing the game in 3D and it's coming along nicely. I actually stopped working on the Unity 3D course because I felt I had enough knowledge to work on this game on my own at this point. I've instead learned a lot of small things in the process. 2 components I'm using for my game are Lean Touch and DoTween which are both free. I was evaluating whether to use some paid assets or not and decided that ultimately what they provide me, didn't justify the cost at this point in time. I just got it so when you draw a card, it animates flying off of the top of the deck and going into your hand. Your hand appears as a fan of cards, which condenses as cards get crowded in.
I also designed a nice icon for the game. The 2 stacks of cards represent the hand and foot (the one turned over) and the Joker is a card I originally designed for the 2D version of the game, but brought over to the 3D version. The Green felt is a texture I created and use in the game for the table and I added a subtle layer mask to make it a bit darker in the corners to simulated a lamp. I could probably do art if I ever got tired of programming. :) The next step is to implement drag and drop of cards from the player's hand to the table. I would also like to figure out how to make the edges of the cards show up a bit better and I have some ideas on that.
Another bit of news is that I got tickets to go to Pax West 2017. I'll be there on Sunday with my daughter (who loves going every year). This will be my first time and I figured since I'm programming games now, that I'd go with her. So I'm very excited about that. That's really all the news I have at this point. I'm going to keep on working on the game.
5/22/2017 - The Exciting NewsOk, I can finally reveal the exciting news today, but first I wanted to mention that I decided that I think I do want to go ahead with a more 3D version of the card game. Some of the reasons for this are that I found and bought a nice looking asset of 3D cards from the Unity Store for $10 and that screen real estate won't be at such a premium if you can move around on a 3D surface. Because of the nature of Hand and Foot, it can use a lot of table space since there are a minimum of 4 decks of cards. I believe this will give it a somewhat unique perspective that a lot of card games don't see. Also, I would love to do some stuff with lights and shadows that is just too hard to make look good in 2D.
I've been making my way through the Unity 3D tutorial and it's already starting to feel fairly natural. It's very similar to 2D, with the main exception that you're working with meshes, materials, and textures rather than sprites and the colliders use their 3D counterparts. I've also been downloading some more stuff. Mostly more photoshop stuff I missed, some Maya stuff, and some other drawing courses. I updated the script that I mentioned on 4/22/17. After I made my changes to account for spaces being left on at the beginning and end of titles of remote files, I've got the accuracy working so far at 100%. I also changed it to analyze the content on your clipboard so that you don't have to blindly hope you have a valid URL and see if the script errors out. Another nice feature I added is that it will now color code the folder with a colored tag based on the difficulty rating of the course. I also made it so you can adjust the delay of how long it waits for safari to load the page, with the option of having it prompt you when it's loaded.
And finally, here's the news. I am now working on my games full time. I gave my notice a few weeks ago, but because I was going through a staffing agency, they waited until the last day to let them know, which is why I wasn't able to say anything just yet. I'm still helping my wife with her business too, which will be our main source of income for the next while, but at least I don't have to waste 2 hours and a ton of gas for a hundred miles worth of commuting each day. So that whole change is very exciting, at least to me, and I'm hoping the fact that I can get games out sooner is exciting for everyone else.
5/17/2017 - Cards Can Now MoveOkay, maybe not super exciting, but they move on both the computer and mobile. Since the cards are actually 3D elements in a 2D environment, I'm considering bumping it up a notch and making it fully 3D with a movable table. Now, this is merely an idea and one that I need to do some research on. I'm only going to do it if it wouldn't be a big increase in complexity, because I want to avoid much scope creep. Now if I do go this route, I'll probably buy an existing asset for the cards so as to not make the project much more work with creating 3D models.
The next step that I'm going to do for my research is go through the Lynda Unity 5: 3D Essential Training course, which will help familiarize me with working in a 3D environment. I think this was the next video that I wanted to watch anyway, so that works out well. The Creating Mobile Games with Unity course was done using Unity 4, but I was able to update it to work with the latest version of Unity (5.6) as I went along. What surprised me was that this was one of the more useful courses because I was able to re-purpose some of the code samples. The other course that has been super helpful is Learn To Code Trading Card Game Battle System With Unity 3D. You can purchase most Udemy courses for only $10 if you search for a coupon code. I say most, because I've found coupons for 100% free courses including one that was in my wishlist. I'm also going to look into Playmaker to see if it will help speed up development. It's currently $65, but if it saves me a week of programming, that's a really good value.
Another thing I came across is Unity Remote. This runs on the device and acts as a proxy to the Unity Editor play mode, so it streams the output to the screen and the inputs from the mobile device to the computer, while running through the editor on the computer. This means not having to wait 3-5 minutes every time I want to test it.
Regarding the exciting news that I mentioned before, I'll be able to reveal that on Friday. However, I'm not hinting at what that is other than it being exciting to me.
5/12/2017 - Making ProgressI've watched a bunch more tutorial videos and I believe I am ready to focus working on the card game some more. I've created the card object and setup scaling and rotation (though nothing scripted at this point). Some more difficult steps are adding Drag/Drop, Setting up a surface, click/touch detection, etc. For the initial setup, it will have a learning curve. For all of the logic behind the scenes though, I feel like I have a good grasp on that.
I've also been accumulating some other ideas for games to work on after this. Watching the effort vs success, I'm kind of rethinking the direction I may want to go with a different game. I could go something like a Legend of Zelda/Metroid route where you need to fight monsters, but I believe 2 crucial elements that all of the games I've been thinking about have.
First, they're all non-linear and therefore encourage exploration. That's a huge part of what I want to do. Those are the games I've always enjoyed the most. They're all 3rd person and you collect items along the way. The second element is that they have a good story. I would say that Adventure Games tend to focus much more on the story given that they are dialog heavy, but some of the later Zelda/Metroid games started implementing much more complex stories and as such, I believe they became even more fun.
I've also been thinking about if I did do something like Zelda or Metroid (the 2D versions), which are kind of tile-based. There is a good tile editor I've run across called Tiled. It appears that it outputs the tile-map in XML. If that is the case, I may end up writing something that converts it to JSON as I've heard XML is a lot harder to work with than JSON in unity, though I'll have to check my sources to be sure.
So regarding the exciting news, I am SO close to being able to share it, but not just yet. Probably next week. An a different note, I still have a little work to do on this website, but I'm focusing more on the game development at this point, which is a good thing. So hopefully I'll have a little more to share next week.
4/27/2017 - Slight DetourI have some pretty exciting things planned. First off, I'm starting a new company called Vagrant Games. I'm going to start off with a specific mobile card game, which I've been wanting to make for a while. This will help familiarize me even better with Unity and I can get something out to help make money. I'm thinking I'll do a free ad-version and a paid ad-free version or I might just make it an in-app purchase. That way everyone can enjoy it with the option of no ads and I can get some money coming in.
I have some other exciting things happening too, but I can't post about it yet. I did finish up reading the Thimbleweed Park Blog and listened to all of the podcasts to date. Appearently they're posting one last podcast, so I was able to get a question in, though it was related to the actual game itself and not the development of it.
I finished up a couple more courses. The first was the C# for Unity Game Development course, which I found didn't really teach me anything I didn't already know. I started learning Adobe Illustrator and pretty much without a course. I designed a logo for Vagrant Games and did all of the artwork for the card game using it. I couldn't find a good font for the logo that was free for commercial use, so I decided to just write out the letters by hand using my drawing tablet and forego the font altogether, which I ended up liking. I can always redesign the logo in the future, but all in all I'm happy with it now and I got some positive feedback on it.
Now that I have a logo designed, I plan on using it for the back of my cards, which is why I took a little time to design it. I already made a splash page for the website and have the logo up. So many tasks to do, but at least I'm making a list. Right now, I have all of these companies spamming me because when I signed up for the domain, I saw that privacy was included, but hadn't realized for a day that I had to manually enable it. Now that privacy is set up, hopefully the spamming will die down. I really don't need any logo design services or programming services. I'm doing it all myself.
So the next steps are to finish up the art for the card game and get on to the actual programming.
4/22/2017 - A New Backend!I decided to post an update now that I have a basic backend up and running. The new backend (which I'm still improving) now allows me to type my posts using BBCode, but from a GUI perspective, as opposed to doing it directly through the database. I also added the ability to have published and unpublished articles as well as supporting multiple authors. There's a few quirks, but I'll get those straightened out soon enough. Eventually I want to allow comments, but that's a ways off.
Yesterday I also received a XP-Pen Star05 Wireless Digital Drawing Tablet that I ordered off of Amazon. So far my impression that it seems to be very good quality and I'm pleased. I figured I could use it to help with drawing any artwork for my games, until I find somebody willing to do it for me.
For my next course, I decided to go with learning C# for Unity Game Development. I figured it will cover what I need to work on improving, which is learning the C# part better and in the right context. After that, I may start working on the Photoshop side of things.
In regards to reading the Thimbleweed Park Blog, I'm getting pretty close to finishing that up. They also did a number of podcasts (66 to be exact), which run about 25-30 minutes on average. I'm also getting close to finishing those up as well. Now that I've made my major website changes and once that's done, it will give me more time time to focus on the learning portion. I've also been brainstorming ideas for the game and I'll let you know when I come up with something more solid.
4/16/2017 - Mostly Programming TodayOk, I have a few more things to add to the blog here. First of all, I don't intend to update this every day. I don't really have an interface for adding data directly into the blog, though I will add that soon. I really just threw this page up really quickly in about 15 minutes and spent the rest of the hour writing my first blog entry directly into the DB.
I would like to add a login, which should be pretty easy and use a basic text entry component like SCEditor since I'm already using bbcode (for security and simplicity reasons) and since I'm using Laravel for the backend, writing some simple CRUD pages should be easy, though I could use something like CRUD Booster. Eventually, I'd like to add the ability for readers to comment with an approval system (to avoid spam).
Ok, so second, some other less well known games that I remembered after writing the last blog post that I had played when I was younger were Lost in Time and Rex Nebular and the Cosmic Gender Bender. I'll list more as I think of them.
Most of today was spent learning unity because that's really important at this point. I've learned a lot of languages during my years developing and I've dabbled with C# in terms of ASP.net, but creating scripts in unity is new for me. One of the things I need to figure out in Unity is creating a NavMesh for Path finding, but fortunately there are a lot of tutorials.
After this course, there are one of three courses that I'm looking at. One is on C# in general, one is on adventure game programming and the other is on C# Scripting with unity. I haven't yet decided which direction to go and I think that it depends on what I end up learning in this course. Hopefully game programming will commence soon enough, but I don't feel like I'm quite there. I'm also going to need to start out with the artwork since I don't currently have an artist to help me.
My artwork definitely won't be final in the game, since it's not my forte, but I plan to enlist the help of an artist at some point.
4/15/2017 - Starting the JourneyI just created this page to update my Game Development pursuits. I am looking at writing an adventure game and I am at the beginning of the road. I'm not quite sure how this is going to end up going.
At this point I am doing research and learning as much as I can. I am looking at writing it using the Unity Game Engine because it is multi-platform including mobile and being a website developer, I know what a pain it can be to deal with the idiosyncrasies between different browsers and I'm hoping that Unity brings to game programming what jQuery brings to the web.
Some of the Point and Click adventure games from the 90's is what I find inspires me. I've also considered writing a novel, but I've found that I really would rather put my time into programming than writing, however, adventure games will allow me to focus my desire to tell stories through that medium.
I really started playing Point and Click adventure games in the late 80's even though I didn't know what they were at the time. One of the first adventure games I can recall playing was Shadowgate for the NES, which came out in 1987. Some others that I played on the NES included Deja Vu, Uninvited, and Maniac Mansion. When I got a computer in 1992, the first game I bought for it was Monkey Island and I was hooked at that point.
I've been playing whatever adventure games I can get my hands on since then and some of my favorites are the Monkey Island series, Indiana and the Fate of Atlantis, Maniac Mansion and MM:Day of the Tentacle, really any of the LucasFilm/LucasArts games, The Longest Journey, Broken Sword, and most recently Thimbleweed Park.
So, I think replaying The Longest Journey yet again and recently Thimbleweed have been my biggest inspirations to get going on this. One of the resources I have been using to learn about programming 2D adventure games has been the Thimbleweed Park Blog. It has a lot of details about the whole process and mentions many of the tools used for development. Even though Ron Gilbert (Maniac Mansion, Monkey Island 1 and 2, Thimbleweed Park) wrote a custom engine for the game, he also had the code for an existing engine he wrote and had adapted it. Since I'm starting from scratch, I plan on using Unity. Also, he integrated the Squirrel Scripting language to handle the specific game scripting, but I'm looking at incorporating Lua in the same way with a Lua Framework Package.
I'm also using Lynda to start out with for learning Unity. The course I'm starting with it Unity 5 2D Essential Training and depending on how comfortable I feel at the end of the course, I may watch some more videos that focus on aspects related to making this kind of game. Other research involves playing games themselves. All of the aspects of my research are fun, but I need to keep in mind my end goal. As long as they are helping me get to the coding stage, then I am heading in the right direction.