To Build Or Not To Build
One major thing most developers do – myself included – is to fail to target the right platform. And by that I don’t mean the whole android or iPhone or windows debate, I mean those all-important system specs. Do you focus on your end user’s system specs to start? Or is it better to tweak later? You have a shiny new super powerful computer that you do all your coding, your graphic design, your entire game on this amazing machine, and it performs beautifully. But then you realize it must run on ‘normal’ systems. All those amazing glows and animations, are they going to look good, much less perform decently on a lower end device? That’s the big question! I know I am guilty of doing the same thing and I have a bad habit of developing almost the entire game to completion before I upload it to my target device to test, and then it bombs. Ok, so most of the time it doesn’t bomb, but I have to go back and make numerous performance tweaks and adjustments to get it to run acceptably. Same thing with the latest project, Scratch’n Score. It’s a pretty simple 2D game though using some 3D dice that use physics to roll. It runs great on my system and in the editor with everything on screen at around 6-800 fps. Amazing! Then you remember the device you develop for is a much lower end device, think entry to barely mid-level android devices, and bam, now you’re struggling to hit 60fps during some of the ‘cool’ stuff. I just did exactly that. In fact, I spent hours on one animation, slicing and aligning the images, designing the animation, all to play when the player scratches and loses all their points that round. Does it look great? Yep! Does it play on the device? Well, barely. By the time the device catches up, the whole animation is over halfway done and then bam, it’s gone… Not to mention, now that I see it playing on the device, I really don’t like how it looks. But that’s a developer’s dilemma. It takes time to save and compile everything and deploy it to the device in question to test, depending on the project it can take anywhere from 3 minutes to an hour. Is it worth it to do this on a regular basis or is it better to develop and then tweak it later after testing. That’s up to you and how valuable your time is. On the bright side, deciding out of the blue to test it on the device today (mostly because I wanted to show off a bit), I realized I don’t like that animation anymore and thought of a much better solution, AND saved myself some time since I was thinking about doing some other animations the same way. Overall, testing it on the device probably saved me several hours of designing more animations like that that I would have ultimately tossed out anyways. Well, since the wife is out of state for the weekend, I am going to take advantage of her absense get back to some coding! This project is wrapping up nicely and I can see the light at the end of the tunnel. The gameplay is essentially done, it’s all the polish and animations that I need to work on now, along with a couple game variations just to add some spice and keep replayability up there! Then all the boring stuff, settings menus, etc.. Ugh..
Rewrite rewritten!
Amid all the distractions last night, not the least of which was standing in line for several hours to vote, I did manage to get some coding time in and made significant progress on Scratch’n Score, eliminating the issues with the old codebase. It took a couple days to truly get over it and delete the old code completely and rewrite it. I know I’m stubborn, but I backed up the two files thinking to use them as a reference, but the problem came when I kept going to them, trying to just copy and paste to fix it, rather than doing what I had intended, a rewrite. Once I was able to get my brain to cooperate, and after several heated internal arguments with myself, I convinced all those nagging thoughts that a rewrite, from scratch, was the better way to attack this. And the result? A lovely dice rolling simulator, that lets you roll until you scratch, or until you score your points and pass the dice to the next player. I amended the score calculating code to keep track of which dice in a roll were contributing to the score to eliminate players trying to cheat… For example, you roll and 5 of your dice are scoring, but that last one wasn’t. Well, you could cheat the system by just selecting all 6 and then boom, next roll it would think you scored with all 6 and let you reroll 6, instead of one. Not anymore. As a matter of fact, I think it’s going to be a default ‘house rule’ that if you try to include a non-scoring die in your take, it will be an instant scratch.. The rewrite also allowed me to handle some other things that would have been harder with the old code like having wild dice where if you’re lucky you could change one of the die values to anything you want, among other variations. In the long run, this was worth it, but painful. I hate doing a complete rewrite as I feel like I have just wasted all that time, but it was worth it. Hopefully this weekend I’ll get back to the code and finish up the gameplay portion. Time will tell!
Bugs… There are always bugs…
Well, this just serves to prove.. No matter how hard you test, watch, examine, rewrite and try to bugproof your code, there will always be something. Just fired off another update for That Cribbage Game.. And trust me, I appreciate the feedback! The game has had amazing sales and everyone loves it, and every bug squashed just makes it better for everyone else! So, turns out there was a bit of code that for some reason I was taking the boardsize and subtracting 1.. so basically what would happen, is in the rare case that you collected enough points to land on the 120 hole exactly.. the game just said, I’m moving you to 121, you won!!! Thanks to Heather and Mark who notified me and captured it on video, we found it, squashed it, tested it, and sent it off to be deployed.. This just says it doesn’t matter how many people you have testing and playing and for however long test, someone will always find something that slips through the cracks.. Mind you cribbage is a complicated game that a lot of people don’t even know how to play, that makes it much tougher for testing as well.. Enough rambling.. back to coding.. Got bugs in CashFlo to squash and I’m sure there are bugs in the 5 ongoing projects, so…. =D
Final Touches… And Another One Done…
Well, what was started back in June is now done.. Now mind you I took a 90 day break to work on That Cribbage Game, so if I started this in June, through December 1, works out to 6 months there, minus 90 for Cribbage, so about the same time frame; a full board game done in 90 days.. Rather proud of myself.. Of course due the timing and the time for testing, plus closures during the holiday season, it means this wont see publication until January, but hey, it’s done! I still have to do up all the write ups and the media, screenshots, videos etc for it, and I’m sure I’m going to look at performance tweaks.. At least on the game table, which is lowest hardware, it’s running 15fps.. I am going to almost guarantee that’s due to images and compression, so once all that is tweaked, it should be 30fps.. I’m also sure it’s going to run much better on the game board.. better and faster hardware and all. So overall sine June, that makes 2 games done.. I’m rather proud of myself.. Now if I can cut that time down to 60 days or so? Then i cant get the next 5 projects done next year.. Lol 5.. Lets see, Opanico, Gremlins Grotto, Frustration, Precision, and Delve.. 3 are clones of other popular games, and 2 are unique titles. All will be developed exclusively for the Infinity Game Table right now.. Anyways, thinking bedtime… it was a good day!
Next Projects… Yep with an S
Now that That Cribbage Game is in the hands of the testers.. and then was passed back to me.. then back to them. then back to me. then back to them. then.. well let’s just say it’s always a back and forth process and testers identify things that we as devs, just don’t see, or we saw it so much we just got used to it and it didn’t bother us, or some of these testers are relentless in trying to break things! BUT! That’s a good thing! I’d rather them find these little issues and get them fixed, even if it’s not something a customer would ever likely come across. To me, it’s release ready, it’s just a matter of them setting a release date, getting promo videos playing, and setting a price, which i still haven’t decided on yet. Leaning towards 6.49.. I want a little more than 4.99 but at the same time I don’t want to alienate people by going up 8.99 or something. Some people like me, will see a 8 or 9 dollar price point, and I’ll just skip the game because of the cost. I’m just hoping for a release to be set, ya know, on my birthday sounds good! Dec 4th.. Well, now is time to move forward.. I still have some work to do on CashFlo, but that’s almost done as well, it’s just a few minor AI pieces to work out, and then thats another title out the door for testing.. It’s crazy in what, 15 months I’ll have put out 4 titles? It makes a difference when you see a lifting of the financial burden from doing this. Even as a hobby, it has a pretty high financial investment even when your doing everything yourself, and when there is no return, you slow down a lot.. So next up on my agenda, are 2 different projects, the way I work, I get bored.. So 2 projects will allow me to jump back and forth and hopefully reduce the days that I just don’t wanna work on it, because I’m bored or burning out on working on the same thing day after day.. First, is a clone of a board game out there.. Haven’t on a title for it yet, but it’s a simple tile based game, laying your tiles down for points and seeing who can score the most.. Some of the potential titles: Mine & Dine Gremlins Grotto Dwarf Delve Crystal Caverns Crystal Crunchers Crystal Carvers Something OPanico The second title, Opanico is a new card game loosely based on another game called Blink.. I was going to do a recreation or Blink, then I just started wandering, and well it turned into it’s own whole game, so.. I have the rules all written out, should be a very fast paced game based on matching colors, shape or numbers, along with the panic.. you’re timed on your turn, and if someone else looks like they might win, well you can ruin their day with a panic, and shuffle everyones cards together, and re-deal… So that’s what I’m up to.. Gotta a preference on names for the unknown above? Join us on Discord and talk about it! Join us on discord to discuss! https://discord.gg/Aw2pZDq
Cribbage Final
Well, I think we finally have a final product, at least until I ship it off to the beta team and they start making a giant freaking list of bugs.. But that’s ok! There were definitely a lot of issues with this, and it’s not my coding or anything, it’s the low end hardware of the target platform. So in the game, there are 12 different cribbage boards, each one is composed of 5-600 GameObjects.. Nothing major at all there.. I was loading those into an array that the game would then instantiate the board it needed for that game.. Well apparently the IGT hardware can’t handle that.. It worked on every device I deployed it too, so I thought, ok, lets kick this over to the table and test it! And the only thing it did was crash. And of course, Logcat showed NOTHING of value whatsoever.. Basically it just spewed nonsense that didn’t give me any direction to look. After spending hours and hours trying to rebuild scenes, and rewriting scripts, and stripping everything down to it’s most basic pieces, even at one point removing everything except the images.. no code, no animation, no sound, no voice.. Finally I stumbled on the gameboards.. Figured ok, gotta be memory, removed half of the boards from the array NOT even instantiated objects, and sure enough it starts working.. Sadly I had already completely redesigned the title scene and stripped out the player selection and joining into its own separate scene (which I may put back to the way it used to be).. Either way, the damn thing works properly now. Stuck the board prefabs in the resources folder, and loading the prefab from resources at runtime, so as not to hurt the tables tiny little memory feelings.. It runs great now, 45+ fps on average which is fine.. 1 or 2 tiny things to wrap up and do all the marketing pieces for, and I can ship it off. Definitely not going to write an entire game again without testing on the table every step of the way.. not again.. Still don’t understand why it cant handle 6000 objects, that’s a pretty minute number.. but hey.. It’s all good now!
Designing Cribbage Boards.. #%^!$@!
Designing cribbage boards sucks.. End of story… So, first comes the task of finding proper templates to work with for some of the more common designs. Then spend several hours using those templates to draw out individual boards, and drawing out 4 colored tracks for each board. Then, you have to draw the outlines, and make sure you have some sort of guide so the holes are spaced evenly on the board. Now that you’ve spent multiple hours doing that, Paint Shop Pro crashes, and claims it doesn’t have enough memory to even save your file.. ugh.. so another hour to reproduce those last changes.. And that is JUST the images! Next up comes importing those images into Unity and then the painstakingly long process of placing everything. You might not think it’s much, but to achieve a consistent look and feel across all of the boards, you have to individually align and place all the holes.. Each hole is it’s own separate gameobject.. Oh yes.. What does that mean to you if you don’t Unity? It means I get to spend hours placing 520 individual objects on each board, across a total of 13 boards, meaning a total of 6,760 hand placed items.. Minimum of 2-3 hours per board.. yeah.. But hey, the way this is set up I don’t have to worry about anything with gameplay, the game knows where each hole is, and can automatically move the pegs properly to their next location, so it’s worth it in the end! I hope… Now let’s hope I can live up to this and get this released by November like they asked! It should make a great bonus check in January for sure if I can get it done!
Cribbage Work
It’s interesting when you start working on a project. There’s things you plan for, things you think you planned for and then the things that you think you have covered until you realize you don’t which makes you replan your whole plan. Which is what tonight has led in to. It’s not a problem per se, it’s just a matter of handling each players cards. In cribbage, you’re dealt x cards, and then you keep 4, and send the rest to the crib. That’s the part I didn’t think about.. The rest.. So in a 3 or 4 player game, it’s easy; you’re always putting one card in the crib. Queue 2 player mode.. crap.. now I have to rewrite things to allow for selecting two different cards to send to the crib. Fortunately I caught that early enough and it was a pretty simple fix, but it’s a lesson in planning. No matter how well you plan something out, it’s going to fall apart, or at least deviate.. End of story.. So code will continue, now that I have the ability to select cards to put in the crib, it’s now time to actually program that and the animations to move them there.. The rest, should be easy.. Famous last words, I know…. And just for fun… https://www.youtube.com/watch?v=2-H1OV4Bfm8
AI Gameplay Video
Nothing like a quick AI Gameplay video, in fast forward.. An entire month of two players condensed into roughly a minute and a half. There are a few issues I see, mostly that annoying taxman banner, when its rotated for the player on the right side of the board, it insists on playing its animation in 2 different rotations, which is extremely odd considering when you look at it, only one of those is real, the other is this weird ghost image that I can not track down. I have a fix, but it involves literally duplicating that prefab in unity, deleting the old one, and renaming the new one and assigning it. No code changes, its unity weirdness.. and it’s ONLY that one prefab.. it makes no sense. The dual animation on plays in the gameplay window on top of it all, it does not show up in the editor window.. I don’t have a clue what the deal is there, but the AI is almost done.. I need to implement it for the end of the month routines and end of game still, and all the logic and decision making that goes with that.. Of course animating the cursor too adds a lot of extra work, but I think it adds a little something extra to the game. If I had just decided to skip on the AI, I’d be done and on to my next project, but noooo… I decided to keep it.. ugh..