(Jan 31, 2023)
It is not given to us to be perfect, nor to do perfect work. But this program, surely it's close? Let's talk about the value of tiny improvements.
(Jan 30, 2023)
Now that the Collision Strategies area all broken out, let's have a look and see what we think about them. Am I reversing yesterday's work? Yes, some of it. That's OK. (Ninth decade? Really?)
(Jan 29, 2023)
After an idea that doesn't pan out, we complete the installation of CollisionStrategy objects. We begin assessing what we like — and what's troubling.
(Jan 28, 2023)
We'll try another one of our CollisionStrategy things. I was hoping for some reuse but am not clear yet how to get it, nor whether its really worth it. I think we'll complete all four Strategies and then look around.
(Jan 28, 2023)
Delegation using Kotlin's `by` seems not to be quite the thing, though I believe I could make it work. I think that late yesterday I invented the Strategy pattern. Let's find out.
(Jan 27, 2023)
As promised, we'll discuss `by` delegation, but I now think that it isn't going to be as useful as I had hoped. I could be wrong, and — oddly enough — hope that I am.
(Jan 25, 2023)
Let's simplify some tests. I think we can get `knownObjects` out of Game.
(Jan 25, 2023)
Let's see how we like the look of the new GameCycler, and review how it went. There are things to do. Could we get more objects to be immutable? That would be interesting.
(Jan 24, 2023)
Let's move some more code over into GameCycler. We complete the Strangler!
(Jan 24, 2023)
Let's look at cohesion, duplication, and other considerations. Maybe we can get a bit more gilding on this lily.
(Jan 23, 2023)
I've gone back and forth on how much type information to preserve. Let's try to compare the two.
(Jan 22, 2023)
With the simpler SpaceObjecgCollection in place, it's time for Transaction. Do we just check out the old version? No, we do not. But why not? Also: You are waffling, sir!
(Jan 21, 2023)
I think we're ready to try the new simpler collision scheme, which is really the old collision scheme from before we started this centralized version. We'll discuss further whether this is a step backward or forward.
(Jan 20, 2023)
I really thought I was finished improving the centralized version, but these small changes will, I think, make things much simpler overall.
(Jan 20, 2023)
There's a lot to like about the centralized version, but this morning I realized that it's far from ideal. Let's explore why and what to do.
(Jan 19, 2023)
Let's explore some possibilities for improvement. Maybe we can even reduce some duplication. That would be nice. Added in Post: Almost a complete waste of time! Dammit! My hopes are dashed!
(Jan 18, 2023)
Last night, I made a change that I now believe to be a mistake. In fact, I did it twice. Further: We begin to draw a conclusion.
(Jan 17, 2023)
With changes to Transaction, I think I can get rid of most of the type checking in the system. I could be right ...
(Jan 17, 2023)
I think that code in Missile is a bit too clever. I may have a better idea. Let's find out. Also: remarks on Jira.
(Jan 16, 2023)
Let's rename all the `interactWithThisAndThat` to `interact`. I think that will reduce unnecessary noise. We'll see.
(Jan 16, 2023)
The new Interaction object is in place. Now let's work to unwind the calls through Subscriptions, moving toward simplifying the hierarchy. Added in Post: Woot!
(Jan 15, 2023)
Let's do interactions in our new type-sensitive style. Let's do it with an object. Let's test-drive the object.
(Jan 14, 2023)
Let's try replacing interactions all at one go. It might not be too difficult. In Post: I do it, it works, I roll it back.
(Jan 14, 2023)
I think we just have one more `finalize` to remove. After that, well, I hope not the Deluge. Also: Do you have a lessón for your minkey?
(Jan 13, 2023)
I'll take another run at finalize. I expect to succeed this time. I could be wrong.
(Jan 13, 2023)
Today, probably, we'll push on with making things more cognizant of type. Probably in Transaction. But let's think first. (Added in Post: we don't do what I thought.)
(Jan 12, 2023)
I'm rather sure there is no active use of the `attackers` and `targets` collections. Let's remove them.
(Jan 12, 2023)
We're engaged in a somewhat extended diversion in our centralization effort, aimed at making better use of Kotlin's strict typing. Let me explain.
(Jan 11, 2023)
Last night, in a stroke of good fortune, I was schooled by GeePaw Hill. I may have learned an idea, and I may be able to learn to apply it. Also, ducks, and an oblique reference to a koala bear. Added in Post: Nice result so far.
(Jan 10, 2023)
Let's experiment today with the sketched collision logic that I threw in a number of days ago. Maybe it has been long enough to see its flaws. Hypotenuse!
(Jan 9, 2023)
This morning, we Big Plan a bit, then do small changes. We're refactoring toward a new design: we're not doing a big rewrite. It's going quite well.
(Jan 8, 2023)
I think we can simplify things a bit by adjusting the hierarchy of our space objects, now that a number of subclasses have been removed. Let's see if I'm right. It could happen.
(Jan 7, 2023)
I had an idea the other day, something I should probably have done a while back, so with a little time this afternoon, I'll try it now.
(Jan 7, 2023)
I plan to wrap up the centralized version of Ship creation this morning, with the concomitant removal of two classes from the mix and the system.
(Jan 6, 2023)
I have a cunning plan for doing the ship insertion in the centralized version. I predict that this is going to be nice.
(Jan 5, 2023)
I have a little time. Let's try another experiment.
(Jan 5, 2023)
It's time to address centralizing creation of the Ship, including hyperspace. This is one of the more complicated bits in the game. (Ron keeps a spike. Shall we withhold his treats?)
(Jan 4, 2023)
I have a test that sometimes fails. I have no notion of how that can be happening. Let's find out.
(Jan 4, 2023)
As we centralize more and more code, the Game class is getting messy. Should we start to improve it now, or let it get worse before it gets better? Some thoughts about thinking.
(Jan 3, 2023)
I have a little time. Let's see if we can take a few small steps toward wave-making. Should be possible, I had it working yesterday.
(Jan 3, 2023)
Today, I was hoping to finish up the new centralized wave-making. But first I need to bring my testing up a bit. Added in Post: Includes Ron's Jira.
(Jan 2, 2023)
Today, I think I'll start on moving the WaveMaker logic into the game. There are issues.
(Jan 1, 2023)
I'll begin this new year as I ended the old one, programming and writing about it. Today, I think we'll work on score.
(Dec 29, 2022)
Now on a somewhat better build, I'll begin by redoing yesterday's changes, and then continue with the centralizing work. Bison?
(Dec 29, 2022)
Continuing to work on creating a centralized version of Asteroids, for comparison with the current decentralized design. Amazing the things I don't know how to do.
(Dec 28, 2022)
I think I can start on a collision detection thing. Shall I test it, or spike it?
(Dec 28, 2022)
An insight and an idea show me a way to approach centralized control. I think it'll be quite nice.
(Dec 27, 2022)
Let's try another way of decelerating to see if we like it better.
(Dec 26, 2022)
While I muse about a different design, there are a few things that we need to do, and I need something to distract myself. Things go oddly but turn out OK. Details in Summary.
(Dec 24, 2022)
Not that this version is exactly done, but I was thinking: Would it be interesting to start over and do Asteroids in a different style?
(Dec 19, 2022)
Going to try for a light morning, as I have an appointment. Let's check the checklist and pick some small but beneficial changes
(Dec 19, 2022)
Yes, I know there's a closed-form solution for targeting. Let's see if there's something simpler. But first, a bit more safety.
(Dec 17, 2022)
The Saucer can fire targeted missiles. Let's explore what we might do about that.
(Dec 15, 2022)
'When things get too complicated, add simplicity.'' Let's try that.
(Dec 14, 2022)
An issue in the design troubles me. I'm not sure whether it really should trouble me, but I think something needs to be done. I really find this hard to think about. I'll discuss why at the end. And I'll tell you what you should do.
(Dec 12, 2022)
The Kotlin game appears to me to have a different scale factor between asteroids and ship. I don't see yet what's going on. I discover that I've done a very poor job. Don't read this, it embarrasses me.
(Dec 9, 2022)
Can you believe that I forgot the flare of the ship's exhaust when it accelerates? No wonder I can't win this game.
(Dec 8, 2022)
The original game spawns more and more asteroids. I'm terrible at the game but I guess we need the feature. Just a little afternoon playing around.
(Dec 8, 2022)
The game should display some info about the keys to operate it. Not that I don't know, or the other person, but there might be one more person ...
(Dec 7, 2022)
When it's GAME OVER and we want to go again ... where do we put the quarter? A HARD DECISION: which way would you go?
(Dec 6, 2022)
I'd like to clean up ship emergence. I believe it can be more clear and if it can be, it should be. BONUS: A movie of the most interesting bug so far.
(Dec 5, 2022)
I think I've thought of a defect. Let's find out.
(Dec 5, 2022)
Best laid plans scarcely get past the first paragraph.
(Dec 4, 2022)
This morning, out of the blue, I plan to assess a core aspect of my Asteroids design: the subscription model. The conclusion surprised me. (Yeah, click bait. Skip to the end if you're that way.)
(Dec 3, 2022)
the OneShot and DeferredAction are looking for places to be used. It's 'small boy with hammer' time!
(Dec 3, 2022)
In which, our intrepid hero has yet another idea. Will this one be better, or just another idea?
(Dec 2, 2022)
Got this thing, might as well use it. Let's eliminate WaveMaker.
(Dec 2, 2022)
Where do ideas come from? I don't know. Where do they go? Into the code, of course.
(Dec 1, 2022)
The game is supposed to give you a finite number of ships. And it's supposed to be possible to earn new ships at certain levels of point score. How could my 'independent' objects do that?
(Dec 1, 2022)
Finalize existed because an object could be destroyed by another object. The unwritten rule now is that objects do not destroy other objects. Can we get rid of finalize?
(Nov 30, 2022)
I improved the Splats a bit last night. I report on last night, think about design, improve Saucer some more, and feel rather ashamed of myself. But good, too.
(Nov 29, 2022)
Let's have the saucer fire randomly. Should be about what I need for an afternoon session.
(Nov 29, 2022)
Let's give the Saucer some more capability. And a question/request to readers.
(Nov 28, 2022)
Too much duplication in colliding. Let's sort it a bit.
(Nov 28, 2022)
As much fun as I'm having with the odd simplicity / complexity mix of this program, it's time for a feature. We'll do the Saucer ... or at least start on it.
(Nov 27, 2022)
Still thinking about the essence of this design and what it implies. This time for the game, not the world. I am fascinated and love what it is ... and isn't. In a real sense ... it isn't a game at all.
(Nov 26, 2022)
I'm renaming Interactions to Subscriptions. IDEA helps. What else?
(Nov 26, 2022)
Now that all the SpaceObjects are broken out, we have duplication. Let's see how much and how we might improve things.
(Nov 25, 2022)
I think I'm ready to create a Ship class and remove SolidObject (or turn it into ship, whichever works. Let's do this!
(Nov 25, 2022)
I'd like to get my version of this thing closer to the state of Hill's, so that whatever changes he comes up with are easier to assess, and to learn from.
(Nov 24, 2022)
GeePaw Hill and I paired remotely for about three hours on the new 'Interactions' idea that I am borrowing from him. It went rather well, though differently than I had expected.
(Nov 23, 2022)
I feel that I understand something when I can do it, not when I can just use it. Let's try to learn Hill's latest idea.
(Nov 22, 2022)
I want to break all the Solid objects out into separate classes. Have not yet found a smooth way to do that.
(Nov 22, 2022)
An imaginary chat leads to a determination to push this design as far as it can go. Along the way I face an apparent fact.
(Nov 21, 2022)
In which our intrepid author expresses frustration and then gets down to making the program better.
(Nov 20, 2022)
Let's see if I can sort out the HyperspaceOperation a bit.
(Nov 20, 2022)
Fundamental theorem or not, implementation inheritance the tool of the devil or not, what we have is better than anything I can foresee. Full speed ahead! (Three false starts, then success.)
(Nov 19, 2022)
The Fundamental Theorem of Software Engineering is 'We can solve any problem by introducing an extra level of indirection'.
(Nov 18, 2022)
Hill has been learning the code with an eye to helping me understand why he is right and I am wrong. I fully support this and have some comments.
(Nov 17, 2022)
Having written up the theory of the game this morning, this afternoon I feel pretty certain that what's supposed to happen isn't really happening. We need to see what's to be done about it.
(Nov 17, 2022)
Implementation inheritance, or delegation? I've chosen the former in a fairly big way. Why? It seems that I'm evolving a sort of 'framework', and to make it do what I want, I think I need this inheritance. Some may disagree.
(Nov 16, 2022)
A change improves many objects. Summary follows.
(Nov 16, 2022)
Kent Beck has me thinking about cohesion and coupling. Let's look at the ShipMaker with that sensor turned on.
(Nov 15, 2022)
We replace ShipMonitor with ShipChecker and ShipMaker, about the same number of lines but far less intricate. A win.
(Nov 14, 2022)
Tidying. Why are we all setting asteroid velocity?
(Nov 14, 2022)
I'd like to push the new interaction scheme a bit further, returning something less basic than a Pair. A day to make the code a bit better.
(Nov 13, 2022)
Sometimes you just know you have a good idea. Sometimes you're even right. Is today one of those sometimes?
(Nov 12, 2022)
What if we run out of asteroids? What shall we do? Is a GameGod trying to be born? Sorry. Nope. Won't do that. Minor deities, that's one thing. One thing to rule them all? Nope.
(Nov 11, 2022)
I have dedicated the next portion of my life to implementing that cool hyperspace emergence rule. It means that I have to be able to count asteroids. So be it. But how? You'd think it'd be easy. It isn't.
(Nov 11, 2022)
Info from a viewer leads to a question. The answer leads me to a bigger question: Why didn't I think of that? THEN THIS ARTICLE GOES SIDEWAYS.
(Nov 10, 2022)
Let's do hyperspace ... and try to do it right.
(Nov 9, 2022)
My Zoom Buddies made an interesting observation. I choose to respond productively.
(Nov 8, 2022)
Things are a bit ragged here and there. Let's just trim them up a bit.
(Nov 8, 2022)
When things get bad in space, your ship has a hyperspace capability that will remove you from normal space and, after a delay, insert you back somewhere else. There is a chance that you'll not survive the attempt. Our mission today: implement this capability. There are issues.
(Nov 7, 2022)
Before a respawned ship appears, the game is supposed to check to be sure that it won't emerge colliding. How, in our distributed system, can we do that? At this writing, I do not know.
(Nov 6, 2022)
In Asteroids, after your ship dies, if you are allowed any more, a new one appears ... somewhere. Let's see how to make that happen.
(Nov 5, 2022)
No, not young people tweens. Tweens are little objects that do interpolation for us. I think we should have them. P.S. Dealt with that little lifetime issue.
(Nov 4, 2022)
It's 0500, way too early to be awake. I am awake. To keep the demons away, I think I'll see about narrowing the Flyer creation interface. As one does.
(Nov 3, 2022)
Hill tweeted something. Perhaps it had been mentioned at the Zoom Ensemble but if it was I missed it. It seems like a good idea. Spoiler: It was!
(Nov 3, 2022)
Options abound. further cleanup of Flyer seems prudent. But it might be fun to do the Splat. So many choices. Splat wins.
(Nov 2, 2022)
Looking at Flyer collisions, I wonder how it would look if it didn't look like it does. P.S. Two more little refactorings. Free of charge!
(Nov 2, 2022)
I think something needs to be done about the growing mess in the flyers. Let's take a look and see what we see. I'm trying to honor GeePaw's concerns ... and yet ... and yet, I go a different way than I anticipated, with better results.
(Nov 1, 2022)
It's about time ... to work on time. I think the code is telling me something, but I'm not sure just what it is. Shadows in the mist.
(Oct 31, 2022)
I have in mind some learning to do about Interfaces, and possibly abstract classes. I want to work on scoring, and I have in mind a way to do it with a flyer. Spoiler: He shoots! He scores!!
(Oct 29, 2022)
We have an interesting architecture going here, unlike any I've used in these games before. Let's see if it can go all the way.
(Oct 28, 2022)
What shall we do today, Brain? Let's see if we can get this baby under some semblance of control. Spoiler: It's ALIVE!!!
(Oct 27, 2022)
I believe I learned enough yesterday to make a good job of the ShipMonitor today. One question is whether to start over, or move forward. I make the right decision, of course.
(Oct 26, 2022)
I have what seemed, in the early morning hours, to be a good idea. Is it? Let's find out. ARRGH: What we may have found out it that it's too cute to live. HOWEVER: There may be a clean way out.
(Oct 25, 2022)
Let's get the display loop running on a Game instead of a couple of ships. Then I'll see if I can figure out the keyboard connection. Probably.
(Oct 24, 2022)
OK, I've seen it move. Should I plug in drawing for each element? Or test controls?
(Oct 23, 2022)
Creeping up on actually having to display some objects. Maybe I should just do it today?
(Oct 22, 2022)
We're like ten articles in on a video game with no video. This is rather interesting. I'll try to explain why.
(Oct 20, 2022)
I may not get much coding in today, but I have some ideas and will set them down in the few minutes before I have to head out.
(Oct 19, 2022)
The Zoom team 'might have done differently' but agree that current code isn't signalling very strongly how it wants to be. I guess today I have to add more of a mess.
(Oct 18, 2022)
This morning I'm wondering whether I made a mistake yesterday. Well, I must have made some mistake, but I have a particular possibility in mind.
(Oct 17, 2022)
It's lonely in outer space. We need some other stuff up here.
(Oct 17, 2022)
Space objects, as everyone knows, have a maximum speed limit. This morning, I plan to implement it.
(Oct 17, 2022)
Space objects, as everyone knows, have a maximum speed limit. This morning, I plan to implement it.
(Oct 16, 2022)
I seem to be zeroing in on an asteroids kind of game in this exercise. That's probably good, because I've done asteroids at least once before.