Recent Forum Posts
From categories:
page »

RB and PiscesMike,

I tried out the last build of Umbra. It looks like the graphics detector PiscesMike put in is working. It is saying I have an Intel(R) HD Graphics.

The 3D ship looks cool that PiscesMike posted on YouTube as well.


Here it is the final week already.

Week 3 Results

I didn't make nearly as much progress as I had hoped. Honestly, I didn't do anything at all on either this book or my game until today. And I put all of my time today into the book (so the game suffered).

I did knock out a few important features:

  • Content on NuGet (mostly because it's required for some of the new C# 7 features).
  • Information on using ref for return values and local variables.
  • Language support for tuples (and multiple return types).

Week 4 Goals

I'm still very concerned that I have a lot to do, and it is entirely possible VS 2017 could be released officially at any point in time. I've still got a lot of work to do before I have the option of releasing.

Here are a few high priority things that I'd like to knock out this week:

  • Finish work on local functions (still searching for the best example to use for this).
  • Pattern matching (improvements to the is keyword and switch statements to make them more versatile).
  • Revising some of the content I've been adding to make it more concise and with better examples.
  • Updating the cover for the 3rd edition.
  • Adding in more quizzes and problems so that every chapter has at least something.

Sprint 3 Results

Well the last week of the competition is now upon us! It's crazy how that happens…

Unfortunately (unless PiscesMike did a bunch of work in secret that I don't know about) we didn't make a whole lot of progress on the game. And as such, I'm going to skip posting another download.

A couple of small bug significant things did happen:

1. PiscesMike completed a little 3D model for our umbra, the enemy in the game.
2. We had some design discussions on how you will control the lux and generally play the game. It was some of the last big topics we had yet to flesh out, and now that they're done, we're a huge step closer to being able to build the game.

Unfortunately, we didn't even come close to the goal I had outlined.

Sprint 4 Goals

It's the last week of the competition. Based on past experience (the last two weeks have not been especially amazing) I'm going to not promise much.

It would be nice if we could still complete the things I mentioned for goals for Week 3—getting movement and objectives implemented, adding the umbra, and turning it into a playable game that can be won and lost.

I'm not holding my breath, though I do expect, no matter what, that there will be progress this week. I'm just not sure yet what.

Sprint 2 Results

Well this week was not the most productive one we've had, but that's to be expected with the holiday weekend.

The one thing we were able to get done is that PiscesMike added in a feature that would tell you what graphics card is in use. If you've got multiple cards, and the game is running on a less great card, then there might be some things you can do to play around with your computer's settings and get it to use the right graphics card.

We're not completely sure it's working as intended yet, but there's a new build available with that code in it:

Week 3 Goals

The first goal is to get back into the game and start making some progress again. Our focus is on a couple of things: some adjustments and tweaks to how you control the lux and get them to move around, and to begin introducing the bad guys in the game: umbra.

If things go exceptionally well (don't count on it) we might have a playable game by the end of the week. That's a stretch goal anyway.

Either way, we'll hopefully be making more progress than this last week…

First off, sorry for the late post. I usually try to post on Sunday night for this, but we were driving home Sunday, and both Monday and Tuesday, I came home from work and was too tired to do much and just watched TV. So here it is Wednesday morning before the update post.

Sprint 2 Results

With the holiday weekend from Wednesday to Sunday spanning nearly the entire sprint, I was not able to make nearly as much progress as I might have otherwise hoped. But it went about as well as I thought it might, and I was able to make some progress.

Here's the list of tasks completed this last week:

  • Began taking stock of what quizzes and problems the book currently has. There are 55 total right now, and the hope is to add another 50. This is one of the biggest requests I've been getting on my book: add more problems to work through.
  • I added two additional quizzes, one in Chapter 24, and the other in Chapter 38.
  • I also added content for a new C# 7 feature: arbitrary task-like return types for async. Basically, you can now use async on things besides just void, Task, and Task<T>. It's not easy to make your own. The rules are somewhat complicated, and getting everything just right is tricky. You probably will have very little need to define your own between void, Task, Task<T>, and the new ValueTask<T>, but the language now allows it.
  • I also went through the book and updated references to VS 2015 to refer to VS 2017, and added a brief summary of C# 7 changes to the front of the book. (Note that I have not updated the Installation chapter, nor have the screenshots been updated to 2017. Both of those are a fair amount of work.)

Sprint 3 Goals

The goal for Sprint 3 is this:

  • Get all of the content on new C# 7 features written and added to the book.
  • Ensure that every single chapter has at least some sort of quiz or problem to work through. I think there are only about 3 more before that's the case.
  • Finish the section on the NuGet package manager, which is a requirement for a couple of the new C# 7 features anyway.

If all of those get completed, it puts me very close to having the bare minimum needed for being able to publish. I have a lot of other features that really ought to be included, but if it became necessary, I could publish the 3rd edition much sooner than that.

As always, please feel free to check out the Trello board to see the current status at any point in time:

Sprint 2 Results


I've made progress!

The framework code that I'd written prior to finishing the artwork functioned pretty well once I was able to test it, so after some relatively minor debugging and correcting mistakes I was able to get the player drawing, animating, and, after some more work, responding to basic navigation controls. Beyond that, I also made an NPC class and set up a system in which I can easily reassign characteristics and/or behaviour, the first of which (that I've already implemented) is simply following the player character around by maintaining their relative locations. It still needs work to be more natural, but it's a good first step (no pun intended). Finally, I set up a system for easily generating a random appearance for each character, as I've said I designed the artwork to lend itself to and that you can see in the image above (I specifically assign the player character's appearance to something I like, but the NPC is randomly assigned).

So yeah, I'm happy with the progress of this last week. I was hoping to get more done, but a lot of other things were competing for my attention, as I'm sure we've all experienced, so oh well.

Sprint 3

I'm not sure what to expect with regard to my productivity during this next week, but I'm hoping to improve the NPC's movement and begin work on a simple environment.

Re: Name TBD (Marcus' Entry) by Marcus42Marcus42, 28 Nov 2016 02:34

RB and PiscesMike,

While we discussed in the forums, I thought I would post my results here as well so you don't have to dig through the chat logs.

I had to drop numbers of Umbra down to 1050 to hit about 30 FPS. I don't think the program is using the graphics card for some reason.

If you two design something to ping the graphics card, let me know and I'm willing to try it out.

Windows 7 64bit with Service Pack 1
INTEL i5 M460 2.53 GHz
6.00 GB ram
Graphics Card: GeForce GT 330M


Sprint 1 Results

Unfortunately, I haven't gotten a whole lot done that I can talk about. I've laid a bunch of framework code so that I should be able to plug in some artwork and immediately be able to navigate the animated player character around the screen, but the artwork itself has been very … Problematic.

I've got two approaches to creating animations that I seem to alternate between fairly regularly, but I just didn't feel like either one would suit this game, so I'm doing something a bit different. I wanted something more realistic than very rough pixel-art, but the animated and rendered 3D models approach requires that I find 3D models that fit my game, which I couldn't this time, as well as being extremely time-consuming. Instead, I'm trying to go for more realistic hand-drawn art, but, well, I'm not an artist, and so trying to draw something realistic has been, ah, frustrating.

The good news, though, is that I've finally managed to finish the walk animation, and that the way that I've drawn it lends itself towards reuse, so that I should be able to re-skin it very quickly to get a lot of different looks.

Sprint 2

For the second sprint, I most definitely want to get the player character moving around the screen and may improve the walk animation a bit once I see it in action. Hopefully, though, it'll be fine as is and I'll be able to work towards getting some simple NPCs on the screen following you around in a simple environment.

Re: Name TBD (Marcus' Entry) by Marcus42Marcus42, 22 Nov 2016 00:59

Sprint 1 Results

You can see from the Trello board that I've actually put a dent in my list this time around. In particular, the following got completed, and is ready to ship with the 3rd Edition already:

  • A section on the new binary literals in C# 7.
  • A section on the old hexadecimal literals. (It felt right, once I had a section on the binary literals. I had originally just left it out entirely.)
  • A section on the new digit separator in C# 7.
  • Made sure all errata on the website was included in the latest document. There were quite a few that hadn't been updated, but most had.
  • A section on declaring output variables inline, which is another new C# 7 feature.
  • A relatively minor change to the formatting of quiz answers, which show up in the book just under the quizzes themselves. Rather than them being a floating text block, they now appear inline. This allowed me to put new content after a quiz (rather than always having to go to the next chapter with a section break). It is a small but meaningful step towards making all content "flowable", which is going to be a requirement if I want to support EPUB and MOBI formats.

There were a couple of other features that I got started on, but ran into some issues and couldn't complete yet:

  • Language support for tuples (key takeaway: multiple return values).
  • Local functions.

I've posted about my issues with the second one over in the chat room. I want to do a little more investigating on the first one, but I'll probably be posting about my concerns there in the chat room as well, at some point.

Sprint 2 Goals

With it being Thanksgiving week here in the US, I don't dare make any promises about what may or may not get done. Cleaning up those last two items (local functions and language support for tuples) are top priority, assuming I can get things sorted out. Addressing other C# 7 topics is my next priority.

Big News…

The big news of the week though is that Visual Studio 2017 (which is what they're now calling Visual Studio "15") had a Release Candidate come out on Thursday. That means that we are advancing quickly towards the actual release.

Where things currently stand, I'd give it maybe a 50% chance of releasing in January, a 25% chance of releasing in December, a 20% chance of releasing in February, and a 5% chance of releasing in March or later. So I estimate I've got weeks (but probably not months) before VS 2017 is released officially, which is my tentative target date for releasing my 3rd Edition as well. Stay tuned…

Sprint 1 Results

I think we got less done in the first full week than we did in the first full weekend, but to be fair, the week keeps us pretty busy with work, and I know I was busy doing my book project yesterday and a self assessment/performance review thing for work most of today. So there wasn't a ton of time for game dev, unfortunately.

But here's the link for the new build:

Here's the list of features that we were able to complete this time around:

  • Made the number of lux configurable. @Brett208, if you have a few minutes to play around with that setting (there's a Settings.yml file next to the EXE) and let us know what number gets you up to say 30 frames per second, that would be very helpful to us. We don't anticipate that this number will remain settable in the settings file forever. Just for now, in the early stages of the game.
  • We made it so the version number displayed is not hardcoded, but comes from the version number of the EXE itself.
  • We put in a pre-build step (PowerShell) to set the last revision number to the Mercurial commit number. So every commit we make will increase that number by 1, which is kind of nice. No manual work involved at all.
  • We wired up the + and - keys to also zoom. There is a bug where those keys don't zoom the same way the mouse does. I believe PiscesMike mentioned he had a fix for that, but I don't think it has been pushed yet.

Aside from that, we also started playing around with some alternative lux controlling schemes. This new build is actually in a branch off of our default branch, which contains the beginnings of an alternative scheme. I think @Marcus42 will find that it doesn't feel like it's in 3D anymore, though there's a part of me that still likes the gravity-based system. Nothing is final yet, and even the current version deserves some randomness added in.

Sprint 2 Goals

I don't think we're going to promise any specific set of features for Sprint 2, with it being Thanksgiving. Especially after the results of Sprint 1. We'll get some time, I think, and our top priorities are currently improving how you control and move lux around the world, and getting the enemy, an umbra, to show up and do something as well. We'll just have to see how far we get into that.

Thanks Brett208 and Marcus42 for giving the first version of the game a try! We definitely appreciate your feedback.

Marcus: The game has a top-down perspective. There's no 3D movement at all, but something about the way they move (a combination of gravity, some drag, and a bit of randomness) can leave you in situations where it feels like that's what they're doing. It's definitely a problem, but we're going to revisit how lux move in the upcoming sprint. (We've already started playing around with it and have another solution—it doesn't have the randomness in it yet, and so it doesn't feel quite so organic, but maybe by the end of the week.)

Also, on your comment about the hard line of "alert" lux when you click… that's also in the plans. The intent is that lux are not very smart on their own. You can "call" for them, or signal them, but that doesn't necessarily mean they'll respond. So while at this point, I'm not sure we'll have lux wake up outside of the range, not all lux inside of the range will necessarily respond when you try to signal them. We've also talked about the idea that we want you to somehow be able to signal different types of lux more specifically (attempt to signal the fast (green) ones without necessarily also signaling the slow ones. But that wouldn't be perfect. So while you might call for only fast ones, not all fast ones will immediately respond, and some of the other slower ones will. All of that will hopefully combine to form a more organic/alive feel to the lux, and make them feel like things that are just on the edge of being alive, while also keeping the vibe of the player not controlling specific lux, but a swarm/cloud of lux instead.

Brett: The 5 or 6 FPS is painfully slow. I wouldn't mind getting the specs of your computer (CPU, memory, graphics card details) to know if it's something we should try to target. We could maybe try reducing the number of lux and seeing if that fixes things, but we may also just simply need to find a way to be more performant. We might try to make the number of lux a setting in the next release in a few days, at which point you could manually reduce the number of lux until it speeds up.

Thanks again for taking the time to look over the game as it currently stands. I know it's not much to look at yet, and isn't really much of a game yet. But your comments have helped immensely, and I'm glad you took the time to give it a try.

RB and PiscesMike,

Umbra sounds like a fun concept for a game. I'm looking forward to seeing how it progresses.

I downloaded the trial. It stabilizes are 5-6 FPS on my laptop. I think it is running on my CPU only. It is always troublesome to get my GPU to work right, partly since I use it so little. My laptop is about 6 years old now I think, so it is probably slower then average!

Windows 7 64bit
INTEL i5 M460 2.53 GHz
6.00 GB ram

The idea of lots of weak enemies trying to destroy a few really tough ones has come up a few times in these competitions, and I'm still really intrigued by it (probably because a game based on this idea has yet to come to fruition!), so I'm very excited to see this progress!

So, I did try the download, and I've got a few thoughts to share. First of all, the swarm effect was interesting. I liked how the lux wouldn't immediately and efficiently hone in on the cursor, but instead spiraled around a bit in a believable way - I was a bit thrown off without having much perspective, though. The way the swarm of lux curve sometimes when spiraling (as well as the starting position) gives me the impression that we're not looking at them from directly above or from the side, but without any frame of reference, I couldn't totally understand what I was seeing. Not necessarily a problem, but at some point it will probably be nice to have something a bit more tangible to latch on to.

Also, while I like that you only wake the lux close to the mouse when you press the mouse button, something about the very clearly-defined circular cutout of lux that would start tracking the mouse bothered me on an admittedly nit-pick scale. Having a few lux that are just outside the circle also waking up to soften the edges could be nice.

As for the framerate, it started around 40 fps until I woke up a bunch of lux and got them zipping around, at which point it began a slow descent to around 30-32 fps, although it never dipped below 30. However, I was running it on a laptop, so keep that in mind.

It looks and works great for only one weekend of work, though! As I've said, I'm really looking forward to seeing how this comes along, and I hope my feedback was useful for getting an idea of how an outsider perceives what you've got so far. I definitely enjoyed playing around with it for a few minutes!

The first weekend came and went fast. I was able to make that Trello board that contains a list of the things I want to add/fix/adjust for the 3rd Edition. That doesn't feel like a ton of progress, but it is nice to have the full scope of what needs to happen.

I can't make any promises about how far I'll get through that list. I'll probably start by prioritizing it a little, and starting to come up with a list of new problems (or at least areas that need new problems) for readers to work through. That's one of the biggest tasks to do in this update.

More to come soon…

I've told several people before that I'm doing two projects for Competition #9. The first one is the game that me and PiscesMike are working on. The other project that I'm working on is getting my book ready for the 3rd Edition.

What is the Time Frame for the 3rd Edition?

Obviously, the first question people are going to ask is, "When is it supposed to come out?" It depends. I don't plan on releasing it until the next version of C# (C# 7) and the next version of Visual Studio (Visual Studio "15", not to be confused with Visual Studio 2015) are released.

Microsoft does not do a good job of letting you know when that will be. Here's how it usually works. After a given release, they start to think about what might go into the next version. A few months to maybe a year after the last major release, they start to put out periodic "CTP" (Community Technical Preview) releases of the next version. These are more or less prototypes of what could be. They sometimes are outright missing huge important features that the previous version had, and focus on getting some sort of beta/preview in the hands of early adopters. These CTP releases are not meant to be used for anything official. It's just a playground of sorts.

CTPs seem to come out initially about quarterly. Every several months, you get a new one. The total number of CTPs varies wildly from version to version. We're currently on #5, which came out in early October 2016.

At some point (and you can sort of get a "gut feel" for when they're getting close) they suddenly start putting out Release Candidates. I've seen them have releases after only a single RC. I've also seen them have 3 or 4 or 5 RCs.

The time period between RCs is usually quite a bit shorter than CTPs. More like every week or two or three.

Currently, we have not had any RCs. We're still in the CTP stage. But it does feel like the RCs might be coming pretty soon.

Which is the reason why I'm getting antsy to get my book updated.

I don't plan on releasing the book before there's a new C# and a new Visual Studio. But in a perfect world, I'd be able to simply hit the Publish button the day the final version is actually launched.

At any rate, hopefully that gives a bit of insight into when the 3rd edition might be available: we're currently weeks to months out. (I'm pretty confident a year from now, it will be out.)

I'll be posting occasional updates on how things stand for the 3rd Edition here in this thread.

You can also check out my Trello board that should have up-to-date status here:

Should I Wait to Get the 3rd Edition?

I probably can't answer this question for you. At the moment, it looks like we've still got at least a month or two before anything major happens. You could honestly be done reading the book long before then.

So I think it probably makes the most sense to just go ahead and buy the book. Of course, I'm biased in that regard.

But I do take care of my readers. If this is a concern for you, please email me and I'll get you all sorted out.

Like I said, it could still be many months before C# 7, VS 15, and the 3rd edition of my book come out. I wouldn't necessarily wait, because you could be waiting indefinitely.

I can also tell you (despite how long the list on the Trello board is) that the vast majority of the book is going to remain the same. The only major changes to speak of are going to be the new C# 7 and VS 15 content, and the new sample problems. (If you want the new sample problems before the 3rd edition comes out, email me. I'd actually love to have some people work through them before I publish the book officially.)

What's Going to be Different in the 3rd Edition?

I've got a Trello board ( that contains the list of features I'm currently planning on working on. If you've got other suggestions, especially if you've already read through the book and have some ideas that might be helpful to people who might buy the book, then I'd love to hear those suggestions.

In general though, the thrust of the new changes are along these lines:

  • I've got many comments that there aren't enough problems to work through. So I'm planning on adding in quite a few more problems across the whole book. (There are about 50 in there now. I might double that.)
  • I'm obviously going to add content relevant to new C# 7 features. These are sort of small and scattered. Most of these items will be another sentence or two in an existing section. A few might deserve their own section.
  • I'm adding some tables to the back of the book. It's all information that is currently contained elsewhere in the book, but some reference tables in the back will be helpful.
  • I want to explore making .MOBI and .EPUB formats for my book, in addition to the PDF version. (That's never going away.) I won't make any promises. I've looked into it a bit before. The organization of the book assumes that pictures are to the left/right etc., and one or both of those formats expect everything to just flow like HTML. It may prove to be too much to make those formats work this time around. If so, it may happen in the 4th Edition instead.
  • Additional material in a few places to clarify some points:
    • A bit more about classes and objects, and class design.
    • Some more information on how the stack works.
    • Some additional examples on when/how data gets stored on the stack vs. the heap.
  • Fix all the errata from the website that people have submitted over the last couple of years.

Sprint 0 Results

Well here we are at the end of the first weekend. We've made some progress and want to show you where we're at.

In a nutshell, the current version of the game places lux (the small weak "good" guys that you control) across the area of play. When they are "alert" or active, they will swarm towards the mouse cursor. When they are not alert, they glide to a stop. There is quite a bit of framework code that also went in.

The current version should give you a flavor of what the game might be like, though it is a very long way away from being an actual playable game.

Please give the downloads page (in the first post) a shot and see what you think. In particular, if you see the frame rate drop below about 40, we'd love to know that. On my (RB's) computer, the frame rate always stayed in the mid to upper 40 frames per second. The release build should run a bit faster than that.

You can also mess with the Settings.yml file if you want. (Keep in mind if you mess it up, I'm pretty sure the program will crash. But it should be intuitive as to how things should be organized there.)

Sprint 1 Plans

PiscesMike and I have not had a chance to review together where we're at and where we're planning on going. So these are just a few thoughts from me. We may completely change our plan tomorrow. Or the next day.

I think the next priorities for the game fit along these lines:

  • Refine how lux move. Currently is is actually a model that is based on gravity. I don't know that that's really what we want long term.
  • Add in some semblance of umbra, the bad guys in the game.
  • Add in ways for new lux to spawn.
  • Add in ways for lux to die.

I'm not sure how far we'll get down that list, but if we do, we'll have the skeleton of an actual playable game in there.



In many games, you control a character that wanders around, making mincemeat out of the enemy's minions. You take down thousands single-handedly, usually without breaking a sweat.

This game is not that.

This game is the opposite of that.

You control a swarm of those aforementioned weaklings called luxliving light as you attempt to take on massive, mechanical, shadowy enemies called umbra.

Most — maybe all — of your lux may die. But that is the price that must be paid to repel the invading umbra.

Scope for Competition #9

We don't plan to truly complete this game in the 31 day competition. Mostly, we want to get the game to a point where it is playable and can give a flavor of what we're aiming for.

We want the player to be able to control thousands of units at a time (current goal is 10000, but if we can hit 50000 or 100000, then even better). We want the player to feel like they're truly controlling a massive swarm of individually powerless, but collectively strong units to take on massive, boss-like enemies at every turn.

Ultimately, we'll just need to see how things play out. This game has a lot of challenges that we've never had to deal with before, so it will be an interesting experience for us.

We are planning on posting weekly updates, probably at the end of the weekend. (Sunday nights?)

We are also planning on making builds available for people to try. We definitely want feedback on how the game is going, especially as we get further into it and start to have a playable game.

Links and References

Downloads Page:

Hello, everyone!

Per usual, I've come up with really big ideas while I'm brainstorming and so there's a lot of cool things I'd like to do with the game I've come up with, but I'll keep the description relatively simple. That way, it's a lot easier to readjust my plan to something more realistic without having to correct stuff I've said earlier.

Basically, it's a, err, zombie game. *sheepish grin* That darn zombie apocalypse finally took place, you see, and now you're left to fend for yourself in the countryside with a few towns/villages nearby. Luckily, you've found a small group of people wandering around without any kind of leadership, perfect for you to join and, if you're smart, take control of. You'll have to guide these people wisely, though, because too many wrong decisions could lead to betrayal or a bit of a snack for the zombies. You'll have to manage resources, make expeditions, and listen to how everyone feels about things such as newcomers wanting to join your group. Be careful out there - dangers are everywhere!

I'll be returning to XNA and my familiar 2D, top-down perspective for this game, with what I'm planning to be hand-drawn graphics (so prepare yourself for it to look terrible). Like I said, there's a lot of things that I could do with this game, some of which I've already described, but at minimum I'd like to have the player character and a group of people following you around and through a building with a group of zombies chasing you. We'll see what else I can do from there.

All right - let's get started!

Name TBD (Marcus' Entry) by Marcus42Marcus42, 12 Nov 2016 18:51

I'd be good either way. I definitely won't be doing my updates like I did in the last competition, but if we were doing sprints, I'd join in - I would just be following them loosely.

Re: Sprint Cycle? by Marcus42Marcus42, 11 Nov 2016 01:15

Don't worry, RB! I'm signing up, too! No idea what I'm going to work on, though - I'll figure that out tomorrow.

Re: Official Signup List by Marcus42Marcus42, 11 Nov 2016 01:07
page »