InfernalKeith Posted January 11, 2010 Share Posted January 11, 2010 Okay, I know this thread will be a letdown at the moment, as I don't have any photos yet. But I was able yesterday to finally tear into a significant chunk of the game code, and I can actually see a possibility of finishing it before the end of the world, so I'm excited and I wanna start the thread now. I'll take some pix tonight, although since I'm using a real TI, they'll be much lower quality than an emulator screen-grab. The concept of Herding Cats is simple: you can't herd cats. That's why it's a cliche. In each level of Herding Cats, you find yourself confronted with a screen full of randomly wandering little black cats, and your goal is to get as many as possible into a large red exit before the time runs out. But you can't tell the cats what to do. So what to do? Adding to your misery: on some levels, there are holes in the board, through which a cat will fall and never be seen again. Walls will occasionally pop up, which can both help and hinder your cause. And on some levels, cats who collide with a wall, or with each other, will unceremoniously blow up. However, you can "stop the music" at any point and employ one of the following fifteen tools, each of which costs you a varying amount of points: - exit expand: makes the exit 2x as big, thus making it more likely a cat will wander in - double exit expand: makes the exit 4x bigger - exit move: move the exit anywhere on the screen - catnip magnet: make the cats much more likely to go toward a certain point on the screen - cat repellent: the opposite effect as the catnip magnet - turn back time: effectively gives you 100 more 'cycles' to achieve your goal - bump the table: cats fall toward one side or the other - catdozer: moves across the screen from left to right, "scooping up" any cats it encounters and pushing them toward the edge - build walls: block off certain areas, one square at a time, to keep cats from wandering off - cat rapture: bring all dead cats back to life - cat-a-pult: create a small area that, if a cat steps on it, "bounces" the cat across the screen - cut the table: removes half the table, creating less empty space for the cats to wander off into - cat-a-port: randomly teleport all cats on screen to a different location - cat bookie: score extra points for each cat through the exit - fill hole/destroy wall: does just what it says If you can get enough cats into the exit by the end of the level, you can move on to the next one. If, somehow, you save ALL the cats, you get a huge bonus. I am programming Herding Cats in Extended BASIC on an expanded TI 99/4A system (32K). After toying with the idea of loading each level from disk, I am creating version 1.0 to be one self-contained program. My biggest concern right now is speed: I'm trying to keep the code as simple and tight as possible in the main game loop so that it doesn't take too long to determine where each cat will move, if it's stepped into a hole or the exit, etc. Graphically, the game will be simple, but I will jazz it up with an intro screen if memory permits. I'll post screen photos and some pix of my notes later. After getting to really roll up my sleeves and do some coding last night, finally, I'm very enthused about it, and I think it's going to come together quickly. Keith Quote Link to comment Share on other sites More sharing options...
Opry99er Posted January 11, 2010 Share Posted January 11, 2010 Great to see the game on this forum. As soon as you have screen shots, I'll post them to your section of Opry99er as well. You rock, Keith! Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted January 11, 2010 Share Posted January 11, 2010 Excellent! Looking forward seeing screen photos and pictures of the notes. This is cool Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted January 13, 2010 Share Posted January 13, 2010 That's great ! Couldn’t help myself ... Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted January 13, 2010 Share Posted January 13, 2010 That's great ! Couldn’t help myself ... Very nice! I like the one with "HERDING CATS" letters below the eyes Quote Link to comment Share on other sites More sharing options...
Opry99er Posted January 13, 2010 Share Posted January 13, 2010 Sometimes99er.... You have some kind of super-secret invisible, top security clearance programming computer, don't you? I mean, the fonts (which I'm jealous of) the pixel manipulation... Sh** man. =) The rest of us are just "jerkin off" (pardon my language) =) Keith, the premise of this game is very intriguing... I'm looking forward to seeing some demo code I can paste into Classic99. =) Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 13, 2010 Author Share Posted January 13, 2010 Sometimes99er.... You have some kind of super-secret invisible, top security clearance programming computer, don't you? I mean, the fonts (which I'm jealous of) the pixel manipulation... Sh** man. =) The rest of us are just "jerkin off" (pardon my language) =) Keith, the premise of this game is very intriguing... I'm looking forward to seeing some demo code I can paste into Classic99. =) Whoa!! I obvioualy didn't get photos done yet, but I did work literally till I passed out last night. The main game loop is nearly done. Cats are now actually roaming the screen, falling down holes, and (very) occasionally finding their way out the exit. Tonight I start adding in all the player manipulations. My worry for tonight is that adding the extra checks for the catnip and cat repellent (increasing the probability a cat will or won't go one way) will slow down the main game loop, which pacing-wise is pretty much perfect right now, and performs a lot better than I expected out of XB. Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted January 13, 2010 Share Posted January 13, 2010 Sometimes99er.... You have some kind of super-secret invisible, top security clearance programming computer, don't you? I mean, the fonts (which I'm jealous of) the pixel manipulation... Sh** man. =) The rest of us are just "jerkin off" (pardon my language) =) Nah, it’s typically like when you know how, then there’s nothing to it. Also it’s a matter of taste. I’m glad you like it, but then someone else might think it’s crap. It was done in 5 minutes, and then it’s just a graphic mockup - bringing it alive on the TI is something else ... Cats are now actually roaming the screen, falling down holes, and (very) occasionally finding their way out the exit. Sounds marvellous ! Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 13, 2010 Author Share Posted January 13, 2010 Cats are now actually roaming the screen, falling down holes, and (very) occasionally finding their way out the exit. Sounds marvellous ! I'm definitely making a lot of dumb mistakes due to being rusty at programming, too... little things, like in the main game loop, if the cat in question has already left the playfield, it increments the loop and goes on to the next one without doing anything else. But the number of 'moves' shouldn't increase, because no one moved on the screen in that time. I ran it and saw the clock ticking up and up with no cats moving. Oops. I will say, my organizational skills have never been better. I used to write code when I was a kid and a week later, I'd go back to it and have no idea what the hell I'd just done. Keeping notes, using subroutines, and having the code flow somewhat logically -- who'd a thunk it? Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 14, 2010 Author Share Posted January 14, 2010 OK, I know it's not much, but here's actual photographic evidence that I'm working on a program. I went out for breakfast this morning, kidless, after realizing last night that I'd made a mess of the probability portion of my main game loop. Basically, if the player uses the "catnip magnet" or "cat repellent" options, I want there to be a much greater chance that each cat will toward (or away from) that point on the screen. So if either of those items are deployed, the loop vets each random movement number, and - if it clashes with the item in question, like if the cat was to move north and there is a cat repellent to the north - there's a 90% chance that the direction will be rejected and the loop will select another direction. It's not a particularly difficult concept, just tedious to get right (at least the way I came up with doing it). There are eight conditions under which the "90% chance of rejection" scenario kicks in (I'm allowing diagonal moves to proceed normally, to avoid even more long IF-THEN-AND-AND statements to slow things up.. which is why the probabilty of rejection for the other four directions is so high). For example: IF the cat is to move north, and IF the device is north of the intended destination, and IF it's a repellent... it kicks out. IF the cat is to move north, and IF the device is SOUTH of the intended destination, and IF it's a catnip magnet... it kicks out (we're "attracting" the cat south by limiting its chance to move north, away from the catnip). etc, etc. I *think* I've got this all figured out, on paper. It was nice to get away from the screen, and the internet, and other distractions, and just drink coffee and work the formulas out. It all seems a lot simpler NOW. Later tonight I'll strip out the crappy code I WAS installing to do all this, add my new solution, and let 'er rip. This is probably the most cumbersome part of the whole program. Many of the "tools" the user gets to manipulate the playfield will be coded in 2-3 lines, tops. If this routine works out, a lot of the rest of the game will fall together over the weekend. Real screen pix soon, I promise! Keith Quote Link to comment Share on other sites More sharing options...
Opry99er Posted January 14, 2010 Share Posted January 14, 2010 (edited) Very cool man... I think you've got er pegged now. Perhaps rather than using all the IF THEN ELSE AND stuff, you could set up individual subprograms that deal specifically with each "tool". You might already be doing this, but if not, read on. 300 IF CATNIP MAGNET THEN GOSUB 1000 1000 (scan for cat "CALL POSITION(#CAT,XCAT,YCAT")) scan for tool(CALL POSITION(#TOOL,XTOOL,YTOOL)) 1010 IF XCAT>XTOOL THEN CALL MOTION(#CAT,repel or attract,0) 1020 RETURN just a thought.... You might even have something better already. . But if each tool has it's own subprogram, it would send to and from smoothly and quickly. Good work, can't wait for screenshots! Edited January 14, 2010 by Opry99er Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 14, 2010 Author Share Posted January 14, 2010 I can't use CALL MOTION, CALL POSITION, etc because these are all graphic characters, not sprites. There are actually no sprites being used in the game right now, though I may utilize them for an animation when a cat hits the "cat-a-pult." Many of the tools will be things done while the action is stopped -- moving the exit, "bumping the table," etc. Only the repellent and the cat magnet are conditions which will affect the cats' movement in each cycle of the game, once they're activated. I actually feel a little weird about the fact that those two tools DO influence the cats' otherwise random movement -- the whole idea of the game being that you CAN'T tell the cats what to do. But without them, I think the game would be TOO random and would end up frustrating. As it is, there will still be plenty of chances for cats to veer off in unexpected and dangerous directions - even these tools won't be absolute behavior changers. (It'd be easier to program if they were!) Very cool man... I think you've got er pegged now. Perhaps rather than using all the IF THEN ELSE AND stuff, you could set up individual subprograms that deal specifically with each "tool". You might already be doing this, but if not, read on. 300 IF CATNIP MAGNET THEN GOSUB 1000 1000 (scan for cat "CALL POSITION(#CAT,XCAT,YCAT")) scan for tool(CALL POSITION(#TOOL,XTOOL,YTOOL)) 1010 IF XCAT>XTOOL THEN CALL MOTION(#CAT,repel or attract,0) 1020 RETURN just a thought.... You might even have something better already. . But if each tool has it's own subprogram, it would send to and from smoothly and quickly. Good work, can't wait for screenshots! Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted January 14, 2010 Share Posted January 14, 2010 I can't use CALL MOTION, CALL POSITION, etc because these are all graphic characters, not sprites. There are actually no sprites being used in the game right now, though I may utilize them for an animation when a cat hits the "cat-a-pult." Working with graphic characters is not necessarily bad. One benefit is you don't have to worry about "invisible" cats if you get 4 of them lined up in a row Just out of curiosity, how many cats will there be on-screen ? Keep up the good work! Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 14, 2010 Author Share Posted January 14, 2010 I can't use CALL MOTION, CALL POSITION, etc because these are all graphic characters, not sprites. There are actually no sprites being used in the game right now, though I may utilize them for an animation when a cat hits the "cat-a-pult." Working with graphic characters is not necessarily bad. One benefit is you don't have to worry about "invisible" cats if you get 4 of them lined up in a row Just out of curiosity, how many cats will there be on-screen ? Keep up the good work! I figured the game doesn't need sprites, so why mess with them? I have it set for up to 30 cats, which will vary by level. On some levels you'll get many and some are 'expendable,' on others, you'll get only a few and need to try to save them all to proceed. All of that is subject to change, of course, once play-testing levels begins, or if I have to start conserving memory (not a problem yet). On my demo level I'm using to test, I have 15 cats on screen, and they move quickly enough, though some disappear rather soon due to holes in the floor, etc. Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 15, 2010 Author Share Posted January 15, 2010 Obviously, the title screen is just a placeholder. The main game screen will be a little nicer when it's done, too. For instance, the solid yellow block is actually a cat repellent, which I'll redefine as a real graphic when I get the game engine finished. The black squares are holes, which will be round and jagged. The big red rectangle is the exit, where you want the cats to go. I actually, finally, for the first time, downloaded Classic99 and grabbed my XB code with my new CF7+ so I could get the screenshots. Fancy stuff! Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted January 15, 2010 Share Posted January 15, 2010 Nice! Looking forward seeing this game in action. Quote Link to comment Share on other sites More sharing options...
ovalbugmann Posted January 15, 2010 Share Posted January 15, 2010 Great concept, awesome title name - will be a cool game. Is this for a old Texas Instruments TI-99 Computer? Would love to see this on the Jaguar. Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 16, 2010 Author Share Posted January 16, 2010 Great concept, awesome title name - will be a cool game. Is this for a old Texas Instruments TI-99 Computer? Would love to see this on the Jaguar. Jaguar's a little new for my tastes. I do plan to port it to several other systems as I learn more - the Commodore Vic 20 will probably be the next one. I'm going to try to work on that concurrently with my next TI game project, but as always, time is an issue. Eventually, I plan to make a small and simple enough game to port to a dozen or so classic systems, as a learning exercise to discover the strengths and weaknesses of their native BASIC dialects. Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted January 16, 2010 Share Posted January 16, 2010 Looking good ! Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 17, 2010 Author Share Posted January 17, 2010 Well, it's 4am here and I'm still working. I decided to add a more complete splash screen and begin formatting some in-game help tonight, as well as an introductory screen for each level, explaining the level's goal, how many cats were coming, if they would explode on contact with each other, if they could wrap around the edge, etc. Getting to that impatient phase now, where I want the whole thing done RIGHT NOW! I really want to get the meat of the game engine done over the next couple days, so I have the time to properly design and play-test each of the levels. I have a feeling that some issues with gameplay may come up when I'm testing, so I want to have time to adjust point levels, etc. and not turn in an "almost right" game. The encouragement and support of you guys here on this forum means a lot, and it's really a great motivator. Thanks - I appreciate it. I'm really enjoying this whole process of knocking the rust off this portion of my brain, and it's great to have some feedback, and not be working in a total vacuum. Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted January 17, 2010 Share Posted January 17, 2010 wow, seems you are really pushing your game development progress I had many times while developing my game, where I wanted everything done at once. And then it is so nice to step back for a second and see how the pieces slowly start to fit together and watch how the game comes to life. That made quite an impression on me, and yes getting feedback sure helps Anyway, keep up the good work! Quote Link to comment Share on other sites More sharing options...
TI99Kitty Posted January 17, 2010 Share Posted January 17, 2010 Okay, I was already looking forward to this, and now I find out that there are different effects when cats collide? <crane game alien> Cooooooooooool... </cga> Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 19, 2010 Author Share Posted January 19, 2010 Okay, I crossed a bridge tonight. You still can't actually enter any commands yet during the game, or use any of your tools. But the game actually functions from beginning to end -- title screen, main game loop (with informational screens before and after gameplay), and at the end of the level, either a bump up to the next level, or a "game over" and kick back to the main title screen to start over. I'm gonna clean up some of the displays and then I'll post some more screen captures, hopefully tomorrow night. After that, I gotta retest my "catnip/cat repellent" idea, the one I scrawled out on paper at the diner the other day, and then it's time to start adding the player commands one by one. The bare bones of a working game could be done by this weekend. I'd do a victory dance and hoist a Guinness if it wasn't 3:30am. Tomorrow, perhaps. Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted January 19, 2010 Share Posted January 19, 2010 Hehe ... Great ! Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted January 24, 2010 Author Share Posted January 24, 2010 New developments as of 4am, January 24: - "Wrap" function works, so cats can (depending on the level) walk off an edge of the screen and appear on the other side. If this function is turned off for a level, cats aren't able to move off the playfield. I toyed with having them blow up if they moved off the edge, but there's enough drama with their blowing up when they collide with each other or a wall - Several of the levels are designed, and point values have undergone an adjustment based on the first rudimentary play-testing I've been able to do - Ability to place cats randomly on screen for a level, or read pre-determined starting points from DATA statements - character set cleanup - I used set 2 for a red graphic, then found I needed comma, exclamation point, and period. I redefined the left and right brackets and forward-slash character, respectively, for those, and use those in lieu of the 'correct' ASCII char in game screens - fixed a few display bugs and cleaned up pre-level and post-level stat screens Tomorrow's to-do list: - add the probability functions for the catnip magnet and cat repellent functions (I thought I was going to do this tonight, but screen wrap needed done) - begin coding player tool functions - begin advanced level designs I may actually finish this thing by the deadline! Maybe. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.