Showing posts with label Project 19. Show all posts
Showing posts with label Project 19. Show all posts

Tuesday, April 14, 2020

Project Updates: April 2020

It’s pretty usual for me to get to April and realize that I’ve lost track of all the things I was excited about. I’m still working on balancing my teaching so that I can be creative and productive and a good responsible teacher as well. It’s less usual to have that April realization fall in the middle of a global pandemic where suddenly everything has gone weird and suddenly I’m stuck at home, as opposed to being a little out of work for the spring and stuck at home.

Anyway, once I finish marking I want to do … something, so I’m going to “circumwork1” and see where my projects on this blog are at.


Projects I am "actually working on"


One of the problems with maintaining the blog is that I have a list of things I “should” be working on even if they’re not actually the things I want to be working on. I try to avoid that by keeping my timelies short and achievable (yes, I know I’m bad at that) and by keeping the number of projects I’m working on at once (yes, I’m not great at that either).

Currently I have on my list:
  • The Blog (as Project)
    • I’m not 100% sure where I’m at with the blog, I’m enjoying tracking games and books. I don’t know that it’s a really productive thing to be doing, but I’m enjoying it. I also find that I don’t really want to put that much out there in terms of thoughts, because I’d rather put my time towards making something.
  • Covert Action in Space
    • I got a little held up because it turns out that randomly generating meaningful floor plans is a little harder than I’d figured. I still love the idea, but this isn’t at the top of my list.
  • Game Tracker
    • I’ve been teaching first year Java again and I wanted to get things rolling here again. I also taught a senior programming course in the fall which involved using online services and mobile interfaces, both of which my project needs. I opened it up a few weeks ago and couldn’t quite figure out where I left off, but managed to get it mostly on the path again.
  • Pong
    • I wanted to be way further ahead on this and have my AtariST version done ahead of my students, I managed to work along side them, but then completely lost the thread when the “transition to on-line” teaching happened. Hopefully I’ll have cause to get back to it.
  • Code Click
    • I already spend quite a bit of time thinking about how to share that moment of joy I get out of coding, and while I haven’t got that much done, I still think about code click a bunch. Transitioning to on-line has also pushed me to think a lot more about how I want to teach and the resources I want available when I’m teaching.



Projects I have “on hiatus”


There are a bunch of things I started out and then put aside, some of them are things I want to be working on so I think it's worth listing them all out too.

  • SNES Coasters
    • I’d like more and bigger coasters and maybe to spend a bit more time working on perler stuff.
  • Space Station Game
    • I keep thinking about this one. I’m still not ready to really set down and work on it, partly because I’d like to build up my skill working on some other projects first. I've been playing quite a bit of EU4 which has definitely provided some feeling for how the game should work when I actually get to it.
  • Action RPG
    • This is another one I’m not ready to work on yet, but I have a lot of ideas and I’ve been developing my drawing skills.
  • Sci-Fi Novel
    • The problem with having sat with a story in your head for 20 / 25 years is that when you think about writing it, it feels pretty trite. There’s a lot of things kicking around in my head from as far back as when I was a teenager. I don’t really know where to go with it, but it still might be fun to tackle at some point.
  • The Roofs (Fantasy Novel)
    • This is the story that sits further in the front of my mind. I’m not sure it makes sense, and it might be missing a reasonable antagonist, but I guess I won’t know until I write it.
  • Chrono Trigger Sprites
    • I have the first two sitting in the window over my desk and I love them. It’s time I got the rest finished.
  • Bubble Puzzler
    • I think with Pong out of the way this is the place I want to focus building games. It’s a good learning opportunity and I think it’s a great place to get started.

Projects I actually want to work on now


So I’m not sure where I want to put myself for all of the time between now and September. Obviously working on code click is a good idea for professional growth, but the Game Tracker and the Bubble Puzzler also make sense.

I also want to work on more artistic things. A lot of that I don’t think I want to make projects for, but I think that both the SNES Coasters and the Chrono Trigger Sprites. I also really want to get the Roofs written.

In an effort to keep my goals small and my projects limited, these are my near, term projects:

  • SNES Coasters
    • I want to finish a set of 4 large coasters, get them fused and backed and then I’ll see what’s next. I think I can get that all done by April 30.
  • Game Tracker
    • I’d like to get this working with outside data, either my original plan of google sheets, or with something else (possibly firebase). Either way I don’t want to spend too much time thinking about it, so I’m going to try to have some version of that working by April 30 too.
  • The Roofs
    • I don’t know how long it is, or how I’ll feel actually trying to write, but I’m going to give it a shot and try to have a first draft finished by August 31. (And yes, I think I did just put write a novel on a list of “short achievable near term goals” no, I’m not great at planning things)

(and we’ll leave the blog rolling along as it is, since that’s fun).

1 Circumwork: To do things that feel like work without actually being related to any task that needs to be done.

Sunday, November 03, 2019

Project 19 - Pong - Phase 1

Project 19 - Pong

I am implementing Pong. Yes, that Pong. I’m implementing it both for fun, but also because it’s going to be necessary for a project for work in the fairly new future.


I figured since I was implementing Pong, I might as well make a project out of it. As a bonus since my implementation is basically finished, I get a free finished project out of the deal.

I decided, as is my wont, to work in Processing.org. This is pretty much my go to platform whenever I need to prototype something or do a thing with quick interactions. I’m also educating myself about P5.js which is proving to be fun as well.

My original take was to work with vectors, which has exposed me to all of the linear algebra I didn’t learn or have forgotten. This will also be helpful for my Bubble Puzzler work (which apparently I haven't updated here, to my surprise). I then remember that my Phase 2 for this project is to have a working version of Pong on the Atari ST, and so I’d be better off handling things like coordinates and motion as simple variables. You can find the source in on GitHub.


// player positions on the screen
int p1Y;
int p2Y;
int p1X;
int p2X;

// paddle display information
int paddleW = 10;
int paddleH = 75;

// player scores
int p1Score = 0;
int p2Score = 0;

// ball position on the screen and motion
int ballX;
int ballY;
int ballMoveX;
int ballMoveY;

int ballSize = 10;

Within the program my code is fairly basic, I’m relying on processing’s control of the framerate, and basically assign the ball a speed between 2 and -2 on the y axis and 2 and -2 on the x axis. This feels like a fairly workable implementation of speed, although increasing it as the game goes on would be an option (I suspect an actually competitive game would go on for quite a while).

The ball bounces off the top wall and off the paddles. If the ball hits a paddle near the edge (about 1/8th of its total length) then it bounces in the y direction as well as the x.


void bouncePaddle(int paddleX, int paddleY) {
    // bounces the ball off the paddle 
   if (((ballX + ballSize >= paddleX) && (ballX <= paddleX + paddleW)) && 
              ((ballY + ballSize >= paddleY) && (ballY <= paddleY + paddleH))) 
        {
     ballMoveX *= -1;
     
     // reflects the ball back on the y axis if it hits near the edge of the paddle
     // mostly for fun, not sure it was in pong, but I enjoy it in most clones
     if ((ballY + ballSize < (paddleY + (paddleH / 8))) || 
         (ballY + ballSize > (paddleY + 7 * (paddleH / 8)))) {
       ballMoveY *= -1;
     }
     
   }
   
}


This produces enough interesting effects that I’m calling this phase of the project done.

That being said, in the short term, I suppose I need some more inputs because solitaire pong seems not-too much fun. Beyond that I think that’s probably it for the Processing.org implementation. My next priority is to prepare to produce the Atari ST version of the game. I would also like to produce a version of Breakout because that seems fun and possibly also add in a few interesting visual effects.

I should be done the AtariST version by early January because I need my students to start on their projects by then.

Reading

I’m not sure that anyone, myself included, really needs this post. On the other hand, I read a thing about re-reading and I want to write ab...