View Full Version : The Regen3 Project (A football game development diary)
GoldenCrest Games
08-09-2016, 12:30 PM
I'm getting a lot of enjoyment from the two python development logs, so I thought I'd contribute my own here. Besides, FOFC has a lot of quality insight and thoughts about football sims in general, so I'll probably get a lot of great feedback.
(plus, I only have 1 member on my own forum! ;) )
The first few posts in this topic are going to be re-posts of previous work, just to help build some context for the current work. I'll date the historical info so you'll know where it was in the process.
Also, I'll be happy to hear feedback as we go. There are some aspects of the game that are locked in, but most of it can be changed based on your impressions.
GoldenCrest Games
08-09-2016, 12:50 PM
Pre-Log Work
Here's a quick description of the goals for The Regen3 Project:
At a high level, I want to make a graphical football sim where you play the role of the GM and, optionally, the coach. Your main responsibility is to handle the GM tasks such as building the roster, managing the balance of talent, and depth chart management. The coaching part is limited to play-calling. (you won't directly control players on-field)
I'm not attempting to recreate the NFL in this game. I'm going with 8-man football instead of the traditional 11-man NFL-style game for a few reasons:
I want each player on the field to mean more. In the current NFL style games, I have a hard time paying too much attention to guards or defensive tackles. I think the 8-man game places more importance on each player.
Roster sizes are going to be small, so players are going to be expected to play both offense and defense. Again, to put more importance on each player and force decision making from the GM.
Other than that, the rest is up for change. In the end, I basically want to try and take the game of football, and make the rosters more intimate. (like in the NBA) I want every player to mean something to you. I want it to be graphical because I have a hard time getting a feeling for my players unless I can see them perform. Some of my fondest sports sim memories are from College Hoops 2k8, when I'd just watch my players play games. I still remember my wild SF who would never run his plays right, but was always running mad around the court disrupting the other team and slamming down breakaways.
I want to recreate that experience in a football game.
GoldenCrest Games
08-09-2016, 12:54 PM
From 6/25/2016
The play engine is starting to take shape. I finally have it set up so I can create plays 'offline' and then copy-paste them into the game at a later date. It took a while, but now I can make offensive and defensive plays without having my development computer with me. (of course I mean at work :) )
For the game engine itself, it has some basic features running:
All:
Players can have varying speed, quickness and strength. (So far that's all the ratings I need)
Plays are imported from the playbook prior to starting the play. (not hard-coded anymore)
Offense:
Formations kind of work
Pass routes work with up to 4 route segments
Defense:
Man coverage works, but it limited to tight coverage over the top. AI structure in place to add more man coverages, though.
Formations kind of work
I've uploaded a YouTubes to show what it looks like: Regen3 Update#1: First Play - YouTube (https://youtu.be/dKoEAg-Jtfk)
(I'm still figuring out how to do the YouTubes well, so be patient with the quality!)
You might notice that every player is Ronnie or Green Ronnie (from Questionable Hero). That's just because I don't have a great football player model yet. I've been looking, and have found a couple that show promise, but we're not quite there yet. Once I find a model that is the right style, and has the ability to change uniforms, I'll make the changes in the game. For now, we'll all have to live with my random Questionable Hero assets. :D
What's next:
Pass Blocking & Pass Rushing
Zone Defense
More formations work
GoldenCrest Games
08-09-2016, 01:19 PM
From 7/12/2016
Quickie updates:
Pass Rushing and Pass Protection
I think I have a pretty good pass rush and pass protection system now. (video coming soon) There isn't a lot of complexity yet, since every pass rusher is using speed to try and get around the OL. It's fun to watch, though. Depending on the way the DL is getting blocked, they either try to speed rush around the outside, or pull a cutback move.
I'm going to let any new techniques wait until I get the other parts of the game engine working.
AI Updates
While doing the pass rushing and block update, I made some pretty cool changes to the AI. I have to roll those updates out to the route running and man coverage next. The AI update is going to allow for some better real-time decision making for both WR (think run-and-shoot!) and the DB (switching, reading the QB, breaking off coverage to get INT...)
Overall, it's going to be pretty sweet.
Next Items:
Roll out AI updates to WR/DB
Zone Defense
Start QB stuff
GoldenCrest Games
08-09-2016, 01:21 PM
From 7/17/2016
Check out the YouTube channel for the latest update video!
In this update I show the latest progress on Pass Rush, Pass Block, Zone Defense, and Passing.
Regen3 Update#2: Progress Update - YouTube (https://youtu.be/u7YiBG1PTeY)
It's all still rough, but a lot of the systems are starting to work together pretty well. Now if I could only find a better player model than the Questionable Hero's Ronnie model.......
GoldenCrest Games
08-09-2016, 01:28 PM
From 7/20/2016 through 7/23/2016
Today is all about updating the QB actions and AI.
Current State:
The QB just stands there, and does nothing. I type in the WR number that I want him to throw the ball to and press a button to make the ball launch. Essentially, the QB is just standing there to look pretty.
Goal For Today:
1. The QB will get a receiver progression (defined by the play loaded) and check through each WR to evaluate if they are open
2. QB pick the best WR option
3. QB read the WR movement and decide where to place the throw
4. QB make the throw
5. I just sit back and watch
Let's see how much of this I can get done in 1 day.....
======================================================================
So that didn't quite happen....
Most of it was nearly complete, but then I created a bug that wouldn't allow me to proceed for nearly 3 hours. When I figured it out, there was one of those "omg I'm dumb..." moments.
I think I should be able to fix everything now that the bug is squashed. Let's aim for today to have this thing running!
=======================================================================
So here's why I'm dumb.
I wrote some beautiful and amazing "read the defense" logic (that doesn't work) implemented it, and hit go...
The problem is that according to my QB logic, every WR is open at the microsecond the ball is snapped. The QB whips the ball out every play the moment I hit go.
That's just dumb.
Then I added an internal clock to the QB, to simulate the idea that he has to wait for the play to develop, but the clock never worked. It took me hours to figure out why.
Answer: because every WR was open the second the ball is snapped, the AI never got to the second level to activate the QB clock. The QB saw the WR was open, and then proceeded to the throwing AI.
Simple solution, just swap the QB clock to make it in front of the defense reading!
Cool! Now the QB waits the right amount of time for the play to develop, and then scans the field! It worked..... only now the defense had time to properly cover the WRs.
No problem, the QB can just wait until one gets open... only he doesn't.
If there isn't an open WR the second the QB clock goes off, the QB just hangs on to the ball forever.
I think I have the solution, but it's going to take another 2 hours. I'll get a video up when it's done to show the progress.
=========================================================================
Basic QB reading done! That got a lot more complicated than I thought it would.
Video of it in action here: Regen3 Update#3: Passing Updates - YouTube (https://youtu.be/SAThNpKmu3M)
GoldenCrest Games
08-09-2016, 01:32 PM
From 7/25/2016 through 7/28/2016
After playing round with the WR reading AI, I think it's in a good enough place to continue on. (not ideal, but at MVC level)
The next hit-list of items to work on all revolve around the passing game:
- Pass accuracy (let's get the ball at least in the neighborhood of the receiver!)
- Different throw "styles" (lob, bullet, floater...)
I don't think this should take too long, but you never know....
===========================================================================
It was surprisingly difficult, but I got the passing power equations figured out.
The engine is mostly physics based, so I'm using a force to send the ball flying. This causes some issues....
If I want to hit a spot somewhere on the field, I need to know:
- The direction vector the spot is from the QB (easy to figure out)
- The distance the spot is from the QB (easy to figure out)
- The height/lob to throw the ball (this is an input, based on the throw style)
- The force to apply to the ball (really really hard to figure out!)
So the force not only varies based on the distance, but also the lob I'm going to throw the ball at. If I fix the height/lob, it's easy. However, I want to be able to change the lob based on the QB style, so I have to account for that somehow and still hit the dot for every combination of lob and distance.
That's where the equation got weird.
Throw in the fact that I'm not using normal gravity (to make the ball flight more visually pleasing) and I've added air friction (to have a nicer trajectory at the end of the pass), and you have a recipe for fried brain.
I think I have it now, though. I can move the spot all around the field and hit it every time. (tested from 5 yards to 65 yards)
Insert this into the AI that leads a running receiver, and we might have something cool!
Passing accuracy update video on the YouTubes now: Regen3 Update #4: Pass Accuracy - YouTube (https://www.youtube.com/watch?v=lGPofHe1Zig)
GoldenCrest Games
08-09-2016, 01:47 PM
From 7/29/2016 through 8/1/2016
Today is going to be all about updating the player models and field. I'd like to accomplish 2.5 things today:
1. Size the players appropriately to the field/coordinate system
2. Put some yard lines on the field to help with play testing
.5 Hopefully get an actual football player model to replace the Ronnie model!
===========================================================
Updated graphic pics!
http://goldencrestgames.com/images/random/Baby%20steps.png
http://goldencrestgames.com/images/random/football%20players.png
Yes, the QB is wearing the football.
:D
GoldenCrest Games
08-09-2016, 02:10 PM
From 8/4/2016
On the topic of ratings....
I've spent the last few days working with the ratings for player movement. (speed, acceleration, agility) As I was fine-tuning everything, a thought came to me. Is the current system of describing how a player runs more complicated than we need?
Think about Madden, since most football games seem to use the Madden style of running ratings.
SPD: Describes the top-end speed a player can get to
ACC: Describes how quickly a player gets to top speed
AGI: Something about turning. I've never really understood how it's implemented in Madden, but in other games it controls how fast you can be running before making a turn. (in other words, how much do you need to slow down before making a turn)
Looking at that list, I think that accurately describes everything we want to know about how a player runs, and I could see all sorts of interesting decisions it leads to. Do I want the speedy WR that has low AGI? Will he be too slow in and out of cuts? Does the CB have high enough ACC to cover the short routes?
However, in practice, how many of us can actually see the difference between these two players:
90 ACC 70 AGI
70 ACC 90 AGI
We all know the difference between a 90 SPD and 70 SPD guy, but how much do the AGI/ACC ratings really matter? Does one matter more than the other? Do they average eachother out? (this goes for every sports game with this rating system)
I have no idea, and I've been player these games for over 20 years.
Now fast forward to the draft. What's the first thing you sort on when drafting any running type position? I bet it's SPD. (ok, for me it's often height. But that's a different rant of mine ;) )
ACC and AGI are sometimes a tiebreaker, but we almost all go for SPD.
So that's my long-winded way of proposing that the Regen3 Project combine all 3 ratings into a single speed rating. I've done some testing (video to be posted soon) and have found that the best distribution of running across a 0-100 rating system comes from a combined single speed rating.
Here are some other interesting findings:
--When acceleration is added as a 0-100 rating, you'll find that high-speed players get bunched at the top. You get "groups" where anyone with speed in the 80-100 range all look about the same. Lower than 80, the players tend to spread out until you get to the bottom 0-20 speed guys, where they are so slow that it almost ruins the engine. I think this might be the same thing seen in the Madden engine, which might be why you rarely see players with lower than 40 speed. (measured in a 40-yard dash)
--When acceleration is locked in the middle, the distribution of players at the low end of speed looks better, but the high end speed players all stay bunched. Basically all the decision making is for players below 80 speed, because all players above 80 are almost the same. That's not what we want. If anything, we want the opposite.
--When acceleration is locked at the max possible, the distribution across speed is nice but everyone is far too fast in change-of-direction situations. It looks too unrealistic. (measured in a 5-10-5 shuttle run) This would affect how the d-line and o-line play. Pass rushing is going to be a nightmare because the o-line is always reading the defender, and is at a disadvantage.
--Agility works as you'd think, but makes the players look stupid at the low end of the rating. On a 0-100 scale, any agility rating near 0 has players slowing down so much to make turns, that it is just dumb.
--When I limited the low end, to keep speed up during turns, the agility rating quickly became meaningless. (all players turned at a reasonable rate) There's a happy medium, but I think the agility rating is so much lower impact than the speed rating, it doesn't make sense to keep it.
Ultimately what I went with was a speed rating that has the AGI rating set at the max, and the ACC rating at about 80% max. The running distribution in the 40 seems linear across all ratings, and the 5-10-5 shuttle is pretty close to linear. It also works with all SPD ratings from 0-100.
Of course, this is always going to be up for future improvement as the game engine progresses...
GoldenCrest Games
08-09-2016, 02:12 PM
From 8/5/2016
Finally got the refinements done on the passing engine to account for the new ratings and the new player model & field size.
You wouldn't believe how hard it was to get the ball to hit the WR on every route, at every distance, with every potential WR speed, at every lob height!
In the end, I resorted to my trusty physics books and modeled a bunch of the trajectory/forces/gravity formulas. (who knew that stuff would be useful some day??)
Stay in school, kids!
In the end, the updates were worth the effort. The passing accuracy is almost 100% dead on for every throw. (some minor issues exist with hitting the WR at the knees instead of the chest, on some routes when the WR is at 100 speed)
Now we don't want 100% accurate QBs all the time, so the next part is to update the QB AI to take into account an accuracy rating. That should be pretty cool!
GoldenCrest Games
08-09-2016, 02:15 PM
From 8/7/2016
Passing accuracy update rolled out and model updates completed!
Regen3 Update #5: Model and Passing Accuracy - YouTube (https://www.youtube.com/watch?v=jfK2TxMvN8U)
GoldenCrest Games
08-09-2016, 02:18 PM
From 8/8/2016
I thought it through, and I think I have a good strategy for today's work:
1. Add the QB accuracy rating stuff in.
2. Add in the WR ability to adjust to the throw
3. Try to get the catching stuff added. (still not 100% sure of the best way to do this....)
We're getting down to the last few days of having lots of development time. (before I have to start the new job) Hopefully I can get a lot of progress done in the next 5 days. I'd like to have the engine to a place where it can at least run a complete play, from beginning to end.
*crosses fingers*
GoldenCrest Games
08-09-2016, 02:28 PM
That's it for the development progress backlog!
I'm working on some pretty cool stuff today having to do with QB pass accuracy. (and it lends itself pretty well to progress pics!)
The strategy for pass accuracy is to have a pass grid that has its size determined by the pass accuracy rating. (The grid is the list of all possible locations the pass could go, with the ideal pass position in the center)
I then randomly choose a node in the grid to set the target location for the pass. The idea is that a great QB will always have his passes land in a small square around his target, while a bad QB will have his passes land in a much larger square.
seems to make sense, right??
I have to iron out a few things with the WR adjustments, but then I'll post a video or pic.
SirBlurton
08-09-2016, 02:42 PM
Awesome, I can just keep coming here for updates.
This project looks really cool and it's awesome to see the progress!
One of my future "dream" games is something like this, but Blood Bowl themed. I keep downloading the Unity updates and reading about C#....maybe someday! :)
Do you use C#? Are you writing everything yourself or have you used any assets from other people?
GoldenCrest Games
08-09-2016, 02:51 PM
One of my future "dream" games is something like this, but Blood Bowl themed. I keep downloading the Unity updates and reading about C#....maybe someday! :)
Do you use C#? Are you writing everything yourself or have you used any assets from other people?
I know what you mean about almost starting Unity. I had it on my computer for over a year before I finally buckled down and started learning it.
I'm using C# in my development. I started off trying to do everything myself, but I found that I'm just not that good at a lot of the things you need to make a legit game. Once I was at peace with that idea, I started buying assets from the Unity store for things I couldn't do myself. (mostly art and models, but I've also invested in some pathfinding)
Downloading assets for things I don't want to do, has really accelerated my development. In my previous games, I spent months developing decent a* system. This time, I downloaded one from the asset store and had it running within an hour....and it was light-years ahead of what I'd previously made. :(
The asset store has also allowed me to have more fun in the development. I'm not forced to do things I don't enjoy. So far that's been the best thing about working in Unity.
SirBlurton
08-09-2016, 04:03 PM
That's really interesting. It definitely seems like the asset strore is one of the biggest things going for unity. I've spent a little time looking at Unreal engine and it doesn't seem to have the same size of community.
Good for you for finding a "path of least resistance" when it comes to finding fun!
GoldenCrest Games
08-09-2016, 04:07 PM
You definitely need to "drink the kool-aid" if you're going to do Unity. It's got some core concepts that are hard to get used to. Once you get the basic premise, it becomes pretty easy to bend it to your will.
GoldenCrest Games
08-09-2016, 04:35 PM
Got a couple screenshots to show what I'm talking about when it comes to QB accuracy... Both passes are for the same WR route, and the ball is intended to go to about the same spot on the field.
High Accuracy Grid (http://goldencrestgames.com/images/random/highQBacc.png)
Low Accuracy Grid (http://goldencrestgames.com/images/random/lowQBacc.png)
If you notice the black and the white bubbles, they are showing a couple interesting things. The black bubble is showing where the "ideal" pass target is. This has the WR speed, distance, running direction, and pass lob baked into it. The white bubble is where the pass is actually going to land. (ignore the other colors for now. they will become important later)
the idea is that the white bubble can be at any of the nodes. What I'm hoping is, by controlling how tightly packed the nodes are, I can simulate the ability of a QB to accurately hit his target.
Working on a video that shows it in real-time, with the ability of the WR to adjust.
GoldenCrest Games
08-10-2016, 08:55 AM
New video uploaded Accuracy and WR Adjustments (https://www.youtube.com/watch?v=AD8_RPDhdDA)
In this video you'll still see the black and white bubbles from before, when the QB makes his decision to throw the ball. The black is the original "ideal" pass location and the white is the actual pass location, as determined by the QB accuracy. There are a whole bunch of low-accuracy passes in the video, so you can get a good feel for the randomness of a crappy QB. After that, there are 3 passes from a great QB to show what a difference accuracy makes.
The WR adjustment part is pretty simple right now. I have a simple internal timer on the WR that delays the adjustment a small amount from the time the ball is thrown. (opportunity for an awareness rating?) I started off with immediate adjustment, but quickly found that the WR could get to almost every errant pass, rendering poor accuracy fairly meaningless.
I think it accomplishes what I was hoping it would. It's at least enough for me to move on to the next thing. I was hoping to have a breakthrough idea about catching and holding the ball......but I didn't so that's going to have to wait. :(
I think I'm going to tighten up a couple things on the ratings, and then move on to run blocking and running AI.
This should make for some fun videos. :popcorn:
GoldenCrest Games
08-10-2016, 10:51 AM
On another note, I just saw that the Axis Football developer is using Unity!
I'm getting a ton of great tips by watching his development videos and looking at the code.
Axis Football Dev Logs (http://axisgames.proboards.com/thread/20/axis-football-dev-diary-log)
It's like nerd catnip. :D
SirBlurton
08-10-2016, 12:09 PM
Thanks for the link and looking great on the accuracy!
GoldenCrest Games
08-12-2016, 03:01 PM
So after watching a bunch of the development videos from Axis Football, I took some of the lessons and reorganized a lot of my AI and scripts.
Sooooooooo much better!
Unfortunately this took most of the last 2 days, so I won't reach my goal of having the engine do a full play. :( The good news is that I think I have about 75% of the run blocking AI figured out. I think I'm going to have run-blocking done in two phases.
1. Point of Attack (PoA): Think of this as everything that happen from the start of the play, to the line of scrimmage (LoS). When the play is loaded from the playbook to the active container, it does some calculations and figures out what the PoA is at the LoS. This is the point that is gong to be used to determine the priority list of who needs to get blocked, who should block them, and where they need to get pushed.
You might be thinking "Hey, can't you just design the blocking scheme in the play editor?" I thought that too. The problem I found is that O-Line assignments get broken too easily by strange defensive front alignments. I want the line to create its own assignments based on the intent of the play and the way the defense is lined up. Reason #2 is that you won't have to worry about blocking assignments as a player. You'll only need to worry about where you want to run the ball. The rest will be done for you.
2. 2nd Level / Open Field: This is everything that happens after you cross the LoS. This is where the play diagram is over, and it's all up to the RB. Blocking in this phase of the play is going to be pretty similar to blocking on kick returns. This is where linemen need to be able to look around, and pick out guys to block in the open field.
There are a few things I still need to work out when it comes to blocking. Since I'm not using "suction blocking", I need to find a way for blocker to stay on their guy. I also need to find a way to push defenders in specific directions, without resorting to pulling or suction. Right now, defenders will just slide off the linemen.
GoldenCrest Games
03-05-2017, 05:24 PM
It took a while, but we're back in business. I apologize for the long break on this project, but there were a number of pretty boring reasons for the delay.
Other than those, I also came to the hard realization that I didn't yet have the skills I needed to accomplish what I wanted to in Regen3 project. It's not fun to know you're not skilled enough to make it happen, but at least I could do something about it. I took some time and worked intensely on my other project, to practice some new skills, and keep from getting discouraged on Regen3. (the other project being kind of like the sacrificial lamb of development projects)
Now that I look back on my old Regen3 code, it was time well spent. That stuff looks like it was written by a drunk monkey banging on a keyboard. We're going to do a complete overhaul on that mess.
Anyway, I'm back in full Regen3 development mode, and I think I've got a few things planned that are going to be fresh and different. (hopefully fun, too) Since my work blocks OS, I won't be able to update here as often as I do on my own dev blog. I'll try to provide updates here as often as possible, though.
GoldenCrest Games
07-13-2017, 07:36 AM
Wow, last post was over 4 months ago!
Even though I've been locked out of FOFC by my day-job, I think I have a system figured out now.
I should be able to post more regularly again. ;)
On the development front, things have been progressing. I promise I didn't take the last 4 months off! (feel free to check my dev blog for details)
It's hard to get feedback from the blog, so I'll probably focus this topic on more of the technical 'behind the curtain' details and see if I can get some opinions from you all.
I have to finish up the AI/performance overhaul before we get back to the fun stuff, but then we're back to new feature mode.
GoldenCrest Games
07-15-2017, 10:53 AM
(Picking up updates from the blog)
3 days into the new programming routine, and we're back to making progress!
The AI "structural overhaul" is complete. Remember how I was using framerate as a way to tell if we were missing AI cycles? Well.... that's not good. Framerate and AI shouldn't be tied together like that. If they are, that's probably a sign that something is wrong. Something was wrong.
My AI structure was set up like one huge tree. All players went into the AI tree and then branched off based on their role, position, actions, and the progress of the play. It makes a lot of logical sense, and it's fairly easy to troubleshoot, but it also means that there are a lot of unneeded calculations/checks done each cycle. Also, the program doesn't have the ability to skip sections if the CPU load is too heavy. I changed the structure so that instead of a single AI tree, I have 29 parallel "role-specific AI" running each cycle. Each specific AI also has the ability to bail out quickly if it doesn't apply.
Sounds good, right? Well..... it didn't fix the AI cycle skipping. Honestly, it probably made things worse. However, I'm running at a brisk 60-67 FPS at all times, including when I have 22 games running at the same time. That's pretty cool!
I was really hoping that I solved my AI cycle-skipping issues, but I didn't. Deep down I know I have some bad AI code, but my laziness was hoping it went away on it's own. :) I guess I'll still have to do the actual work of tightening it up.
On another note, I took an AI break and implemented the defensive play diagram system. I think it worked out pretty well. I might play with the colors and the icons, but it does the job right now. (Also made some small tweaks to the offensive diagrams, to sex it up a bit.)
http://www.goldencrestgames.com/wp-content/uploads/2017/07/diagramDef1-1024x544.png
http://www.goldencrestgames.com/wp-content/uploads/2017/07/diagramOff1-1024x544.png
GoldenCrest Games
07-16-2017, 06:43 PM
Weird thing happened this weekend...
My goal for the weekend was to build a system of measuring how many (and which) AI cycles were getting skipped during peak load. My theory was that there are too many players calling too many AI when I have lots of games running at the same time. During those times, there are too many AI being called and some of them end up not getting run because the game loop finishes too quickly, and the remaining AI just get skipped. (that's how it's supposed to work) I have some evidence to support this theory, too. As I started adding in heavier AIs, I could see the players starting to skip cycles. I did some research and confirmed how it works, and made the adjustments to address it.
Which brings us to this weekend. All the adjustments are in, the cycle skipping problem didn't go away, so it's time to buckle down and really figure this out. This afternoon I got all the test stuff implemented and started investigating.
I generally run 2 games at the same time, as a default. With 2 games running for just under 3 seconds, I get 1200 AI calls. (evenly spread out across 26 AI) When I look at how I set the AI up, that's just about 100% of the AI getting called correctly. Cool. That's what I would have guessed.
Now when I jack it up to 22 games, I expect the AI counts to jump WAY up, (because 11x more players are calling AI) but to have a large spread between the individual AI counts. (because the low priority AI should get skipped when the game loop runs out of time) What I found was that all the AI calls are still exactly evenly split across all 26, and the overall total of AI calls went down.
That means by adding more players, I'm getting fewer total AI calls?
WTF???
So I started running intermediate amounts of games to investigate. (4, 6, 10, 16, 20, 26, 30) As it turns out, the total AI calls drop fairly linearly after 4 games. OK, that's matching what I see, but it makes no sense... Unless I've been looking at the problem the wrong way all along.
What if my crappy AI isn't the problem? What if it was just a coincidence that the cycle skipping started when I implemented my heaviest AI?
So I still don't know what the problem is, but here are my top theories to investigate over this week.
AI actually is the problem, but it doesn't skip low priority AI like it's supposed to.
The real problem is the physics of having that many players playing at the same time. The physics problem is causing players to not update at all during each game loop.
The animation is the the problem. Animating that many players all at once is causing players not to update.
I think I know how to quickly test each of these, so hopefully there will be a direction identified by the end of the week.
GoldenCrest Games
07-17-2017, 07:21 AM
I ran a few experiments this morning to test out the theory that bad AI is causing the cycle skipping issue. Here’s the data:
http://www.goldencrestgames.com/wp-content/uploads/2017/07/AICycles.png
I started off with turning all the AI off, with the exception of the ones relevant to kick returning. Then I ran the kick return and measured the number of cycles for each amount of games. (Kick return is the hardest on the AI system because of all the open field calculations)
The numbers looked about as I expected. With the AI set to run 0.05s, it became unplayable at 14 games. At 0.1s it became unplayable at 12 games. At 0.2s it was unplayable at 8 games. (and pretty bad for 4 games)
No smoking gun there, so I turned on all the AI to set a baseline to compare the numbers to. That’s when it got interesting. After turning on all the AI (the ones not being used) and setting them all to refresh at 0.15s, the game became unplayable at 6 games and quickly went out of control.
That’s a clue!
Nothing changed with the animation or physics, but I could send the game into the crapper just by turning on and off AI. All of those extra AI are built with a quick ‘bail-out’ at the front end, so they only do 1 simple flag-check calculation before exiting. That shouldn’t cause this problem. However, actually calling the various AI might be a bit more process intensive than I’d thought. Just the simple fact that they need to be tracked and called might be killing my cycle time.
I’m going to do more investigation into this, and see if I can come up with another experiment for tomorrow morning.
Progress!!!
GoldenCrest Games
07-18-2017, 07:37 AM
I’m pretty sure I’m almost at the bottom of the AI cycle skipping problem. I ran a couple more experiments to confirm what I was thinking yesterday, and everything is pointing to the AI code/processing as the culprit.
First, here’s the updated graph:
http://www.goldencrestgames.com/wp-content/uploads/2017/07/AICycles2-1-1024x639.png
I ran a quick experiment to see if the physics collisions are causing the problem. Basically, I turned off the field for all the games and played them without all the player-to-ground collisions. If collisions are a problem, then this reduction should show up in the data at least a little. If you look at the line, it falls almost exactly on top of the line with the field on. That seems to suggest that lowering the collisions didn’t affect the problem one bit.
Cool, let’s look at the AI a little more. I reran the first experiment (turning off everything but kick returns) and tried it with pass plays. My theory here is that if the data lines up exactly on top of the kick return AI, then the AI code itself has little/nothing to do with the problem.
That’s not what happened, though. The pass play data came out almost as bad as the all-AI data. Yikes! In fact, the game became unplayable at 8 games.
Conclusions:
That kind of sucks. I thought my pass play code was better than that.
I’m pretty sure the code efficiency has a huge impact on the cycle-skipping problem.
I’m also pretty sure the overall processing of AI’s contributes to the problem.
I’m 100% sure AI’s don’t get skipped as I thought they would.
Once the time between cycles gets above 0.21, the AI starts to fall apart
Tomorrow we start investigating solutions.
GoldenCrest Games
07-19-2017, 07:18 AM
I’m pretty sure I figured it out. The problem is a combination of poorly written individual AI, and the way the individual AI’s are being processed.
I had a feeling this was the case, but the roadblock for me was the incorrect interpretation of how the AI was supposed to be processed. Everything I’d read about my AI package told me that the lower priority AI would just be skipped if I ran out of cycle time. That’s not what happens. What actually happens is all of the AI gets evaluated every cycle. If we run out of cycle time, the next player in line to be updated gets skipped entirely.
I’d always relied on this to cover up for the brute-force approach I’ve been using to write the code. I have a lot of evaluation code (like collision avoidance) that cycles through all the players on the field for the awareness-type evaluations. Sometimes I cycle through all the players more than once in the same script. (open field blocking)
Even though I’m only cycling through 8 or 15 players at a time, you can see how this has the potential to eat up a lot of cycle time when it’s done for every player, every cycle. That’s just bad design. (I knew it was bad at the time, but I wanted the damn thing to work!)
Luckily I’ve learned a lot since most of this was written, and I have new techniques in my toolbox to replace the brute-force methods I used before. That shouldn’t be hard to fix, since I’d planned to scrub/refine all the AI anyway.
The other problem is how the AI is processed. The ‘all or nothing’ processing kind of threw me for a loop. From the earlier testing, you can see there’s a difference when we turn off unused AI. That definitely feels like the right way to control AI processing. Unfortunately, the AI package I’m using doesn’t allow for that.
🙁
So I guess I have to write my own controller!
🙂
So I spent some time yesterday and this morning whipping up an “AI Master” to make determinations about which AI are needed, and which aren’t. It only allows processing on the needed AI, and blocks off all others. Ran a few tests and I’m replicating the cycle times for when I turned off all the unused AI’s. That means it works!
So we’re back on track!
It kind of sucks to lose 3 days to this investigation, but I’m glad that I understand how all this works. I also know a lot more about my ‘AI refresh rate’.
Anything above 0.21s is unplayable.
No matter what my base refresh rate is, as soon as I start losing cycles it begins to look bad.
At the fastest refresh (0.05s) I lose cycles earlier than if I use a slower refresh (0.15s). The game isn’t unplayable as early, but I can tell something’s wrong earlier.
0.1s is probably the sweet spot.
I’m never going to get to 20 simultaneous games. It’s just unrealistic to do that much processing at once. However, 10 games is a realistic possibility. If I can even get 6 games reliably, I can work with that.
Anyway, back to the fun stuff!
GoldenCrest Games
07-19-2017, 07:43 AM
Major AI Refresh #1: Passing Plays
Passing plays were the first thing I wrote, so they are in the worst shape right now. I've been running plays over and over again, to bathe in the embarrassment.
Here's the hit-list of what needs to be updated:
All - Need to implement more position specific ratings. Need to make the code more efficient.
OL - Not horrible right now, but they need better recognition of late rushers and overloads.
DL - Everyone is an 'agility rusher'. I need to allow for bull and speed rushing.
Route running - Need some collision avoidance. The worst thing right now is when 2 WR run into each other and get stuck.
QB - Needs a LOT of work. Reads are terrible right now and the QB never reads past the 2nd option. QB often throws into coverage. Accuracy is off on crossing routes. Throw arc is generally too low, and needs to be variable. Need to implement in-pocket movement and scrambling.
Man Coverage - Not terrible, but need to tighten up the collision avoidance and positioning.
Zone Coverage - This is a mess from start to finish. Complete overhaul.
Blitzing - Actually, this might be the best one I have right now. Not much needs to be done.
Blitz Pickup - Too 'predictive'. Need to make the RB read/react more than predicting the blitz.
Screen Blocking - Still a mess. Complete overhaul.
Misc - Need to implement incomplete pass resolution, interceptions, tackle animation, missed tackles animation, throwing animation
Here we go!
GoldenCrest Games
07-20-2017, 07:43 AM
I'm actually pretty pumped about this morning's progress. Today I started implementing the positional ratings in the AI, and it's working out pretty well.
In case anyone forgot, my ratings strategy has been to keep things as simple as possible. (I had a blog post about speed, but I think I lost it)
does a quick search to find reference blog posts..... can't find them..... ugh!
Since it looks like I lost some of my old pre-GoldenCrest blog entries, I'll recap:
I want to keep ratings as simple as possible.
:)
Seriously, the strategy is to try and hold the number of ratings as low as possible. I want to have enough to have a variety of players, but not so many that individual ratings become nearly meaningless. The focus of the game is on building and managing your team, not to see who can come up with the optimal interpretation of the ratings system.
With that in mind, here's where I'm currently at on ratings:
Physical Ratings
Speed - The only rating I use for running. I have all players with the same acceleration and all players have nearly perfect agility. It sounds weird, and it looks a little weird at first, but it really works for differentiating players.
Strength - This is only used for pushing. The stronger the player, the more he can push other players. Just that simple. It actually makes a huge difference in the engine, because it comes in to play every time players collide.
Mental Ratings
Positional Skill - I combine every mental rating into a single positional skill rating. Each player is rated on every position. Your top WR might have a 95 for his WR Skill, but he's rated below 30 in every defensive position. (remember, players play both ways) How much do you really want to invest in a 1-way player? Do you put him on the field for defense and hope he doesn't get exposed? Do you use up additional valuable roster spots to cover for him? Those are the kinds of decisions the game is about.
Back to today's progress. I started implementing positional skill in the AI. The first thing added was a "decision making timer". This is to simulate the idea that a player who is bad at a position takes longer to make decisions.
I like to imagine this as a kick returner. A great KR will bob and weave his way through the holes until he finds daylight, then he turns on the afterburners. The difference between a great KR and a bad KR is that bobbing and weaving. By using positional skill and decision making timers, I can now see the difference between KRs on the field. The 100 rated KR bobs and weaves through tight traffic. The 20 rated KR makes a cut and runs as hard as he can into the pile. The 60 rated KR will sometimes make a cut or two if there's a hole, but can't navigate tight traffic.
BOOM! drop-mic
Man, this is getting more fun every day!
GoldenCrest Games
07-20-2017, 07:46 AM
I forgot I'd copied all the pre-Website blog stuff here!
Sweet.
GoldenCrest Games
07-21-2017, 07:51 AM
This morning is all about collision avoidance.
As I was looking through the man coverage AI, I remembered that there was some fairly brute-force methods to keep players from running into each other. Early on, that was a huge problem. My solutions evolved over time, but they got more and more complicated each iteration.
The last version I implemented did something like this:
Each AI cycle, pick out 100 locations that the player could move to
For each location, evaluate the 'goodness' value
During the goodness value calculation, cycle through every player on the field and do these collision calculations:
Make sure they aren't physically located in that location.
Make sure the player isn't directly between me and the location
Even if the player isn't directly between me and the location, see if the player distance to me is so small that the location still becomes essentially behind him.
All of that takes about 25-30 calculations, done for every other player on the field, for each defender in man coverage, every AI cycle. (30 * 15 * 6 * 10 times per second) = 27,000 calculations per second for each game. Just in man coverage collision avoidance!
ouch.
I've been using sphere casting to check for running lanes, and I think it should work nicely for collision avoidance, too.
Basically it works like this:
Pick out the 100 locations the player could move to
Draw a fat line (the width of the player) to the location
If anything intersects with the fat line, there would be a collision.
That's it.
#2 and #3 are the same statement, so we've gone from 25-30 to 1 statement. The potential savings are HUGE.
That's the downside of learning this stuff as you go. I make a lot of dumb mistakes, because I don't know what this thing can do.
Know your tools.
GoldenCrest Games
07-21-2017, 01:36 PM
I got some "bonus time" today and tried to make the most of it by reworking the QB AI. As with most of the passing AI, it was done really early in my learning process, so it needed a pretty big overhaul.
Remember way back when I started using sphere casting instead of cycling through all the players? Well, it looks like there's a similar opportunity in the QB 'is the receiver open?' checks. Each time the QB looks to see if the WR is open, he cycled through everyone on the field and checked distance to the optimal throwing spot. Once again, way too many calculations.
I ended up replacing all of that with this concept:
Make a sphere at the throw spot. If anyone overlaps with the sphere, call the WR covered.
By playing with the radius of the sphere, I can fine tune what we call "open". (seems to work great, too!)
I also implemented a new scrambling system. Each player will have a "Scramble Tendency". This is going to be directly tied to the length of time he'll stay in the pocket before scrambling. Right now, I have the 100 scramblers hang in long enough to read 1 WR. (maybe 2 depending on the play) The 0 rated scrambler will probably hang in the pocket for 4-5 seconds. More than enough time to get through all reads. Once the QB breaks the pocket, he then moves into the open-field running system.
I've almost got the QB accuracy implemented, too. This is going to be a direct result of the QB Skill rating. For the QBs, the skill rating affects accuracy instead of decision making time because it just seems to play out better that way. The decision timer for QBs was more frustrating than anything, and it was hard anticipate the exact effect. (was a sack the result of coverage, or the decision timer? ugh...)
So far, the new system testing looks good. I'll get a video up as soon, I hope.
GoldenCrest Games
07-23-2017, 01:15 PM
Ventured into the man coverage AI this morning, and I think we can call it done!
Most of it was tuning performance and making sure the coverage "shading" looked right. I was having a hell of a time with LBs covering RBs on swing routes. The LB was diving into the line and getting stuck because he was always trying to gain tight coverage while the RB was running across the backfield. Now players just sort of follow across the field, maintaining their depth, until it looks like the RB is going to actually head upfield. At that point, the coverage gets tighter.
Not perfect, but it looks a LOT better.
I also had a tough time with how to implement positional skill. I started off with the decision timer, but it looked wrong. (just like in the QB AI) I'm starting to think the decision timer only works with running.....
Anyway, after testing a bunch of options, I settled on a system for coverage. Basically, positional skill affects these things:
Position when covering someone. Bad players will have wildly varying coverage position. They might be tight one play, and then play 5 yards off another play, and then completely botch the coverage on the next one.
Interception Ability: Basically catch percentage
Pass Breakup Ability: Bad players allow more catches even when in coverage.
I purposely left speed and strength untouched from skill adjustments. It just seems more interesting when your CB is fast, but is often out of position. I lowered the QB skill to see what would happen, and sometimes the fast CB could make up for bad coverage to get to poorly thrown passes.
Which bring us to the last item implemented this weekend, interceptions.
I have no idea why it took me this long to have interceptions, but it's in there now. It really changes the game! Remember that fast CB who sometimes gets to poor passes? It's really cool to see him pick the pass off and try to house it. idk, there's just something about it that's oddly satisfying.
Next up, Zone Defense!
GoldenCrest Games
07-24-2017, 07:39 AM
Zone defense is done, but I'm still not 100% sure about it. Everything has been updated for code efficiency and logical sense, but I can't quite tell if it's exactly right. I still have a few problems in the player movement engine that need to be addressed, and I think those problems are popping up in how the players execute the zone defense assignments. Specifically, I don't have a great solution for players who are really close to their objective. (no slowing down or stopping has been implemented) This shows up in zone defense more than anything because guys are sometimes sitting in their zones, waiting for someone to come through. It's hard to tell if the player freak-out is the movement engine, or if there's an actual AI glitch.
Aside from that issue, it seems like it's working. Everyone is in the right spots, they just do a freak-out dance more often than I'd like. I don't anticipate there are going to be very many all-zone plays, but I have one in my test playbook and it seems to work reasonably well. (considering how big the field is relative to the player size) The safeties sure seem to be ball-hawking any errant passes. That's pretty cool to watch.
Positional skill for zone defense was designed to affect zone position and size. It seemed to make the most sense for bad defenders to have problems with exactly where the zone is supposed to be, and how large it is. Once again I tried using decision making time, but it just looked wrong.
I think that's only going to work for running the ball. So far, that seems to be the best use of it.
Before I tackle the next AI, I think I need to fix up that player movement engine. It's a little frustrating to still see those freak-outs. I should be past that by now.
GoldenCrest Games
07-25-2017, 08:07 AM
Good progress day today. I knocked out a few things that have been bugging me lately. Here's the hit-list:
Players don't do the freak-out dance anymore. I updated the movement engine to take distance to the objective into account when calculating speed. If the player is right on top of his objective, or doesn't have a move order, he just stands still instead of dancing.
Incomplete passes stop the play correctly. Before, if a pass was incomplete, players kept running around as if nothing happened. I didn't have any real checks int he play to see if the ball hit the ground. Now it works correctly.
QB progressions now reset back to #1 after going through them all. Previously, QBs who hang in the pocket would just sit on the final read until they got sacked. Now they cycle through all the reads, and then start over at #1 if nobody was open.
QB Accuracy improved for receivers on the move. Basically my formula for calculating how much to lead the WR was off. The problem was with WR velocity calculations. As it turns out, if you get velocity off a rigidbody, you better be using FixedUpdate to do all your movement. If you're using Update for movement, your velocity calculations are going to be unstable. (know your tools!)
Receiver route running now avoids collisions. I was previously using a simple "go to your spot" type route running system. It was efficient and simple, but WRs often ran onto each other. It always bugged me, so I finally fixed that.
I also started digging into the QB "is the WR open" scripts. I'm not 100% satisfied with the QB ability to read openness yet. They always can find the wide open WRs, but I'm having trouble with 100 rated QBs throwing into weird coverage situations and missing open guys in the middle of the field. What I'm realizing is that it's way harder to define what "open" means than you'd think. Right now I'm using a system where I make a 4 yard 'bubble' around where I think the pass is going to land, and see if there are any defenders in it. I also make a 2 yard bubble around the WR and see if he's being tightly covered. The result of the two bubbles is the openness.
What I'm finding is that the QB is not throwing to guys I'd consider open. The most obvious one is a guy who is standing still, with a defender behind him. If the QB has a clear pass to the WR, he won't take it because of the defender standing 3 yards behind him. On the other hand, I'll get QBs making ill advised slant route passes that get picked off by roaming safeties. I can't increase the leading bubble because then nobody is open. I can't decrease it because then I get more throwing into coverage.
I probably need to rethink the whole system.......
SirBlurton
07-25-2017, 10:54 AM
Just wanted to chime in and say how cool it is to read these updates...definitely way beyond my skill level - so impressed by your ability to troubleshoot and diagnose!
GoldenCrest Games
07-25-2017, 12:17 PM
Thanks, I appreciate that! It's been a lot more fun to troubleshoot lately. Having a game engine that actually resembles football makes it more interesting and satisfying to dig into the details.
I also can't say enough about Unity as a tool. It allows me to do things I never thought I'd be able to do.
GoldenCrest Games
07-26-2017, 07:51 AM
It’s a little frustrating to spend a whole day’s worth of keyboard time on a single issue, but I really needed to get this QB read AI fixed. That being said... I GOT IT!
It was getting really frustrating to see the QB consistently pass up good throwing opportunities. I tried a lot of things to get it to work, but the QB was always reading open receivers as covered. I created some troubleshooting visuals to confirm what he’s looking at, and got even more confused.
Here’s what the QB is seeing on the slant route. The big yellow circle is reading the space in front of the WR and the orange is reading the tightness of the coverage. The little yellow circle is where the pass is intended to go.
http://www.goldencrestgames.com/wp-content/uploads/2017/07/investigation1-1024x542.png
This should be an open receiver, and the QB should throw the ball. (the CB looks close to the orange circle, but he’s not actually overlapping. Also, the yellow circle is returning an overlap with the CB…?) There are no options in the code to allow the QB to pass up open throws, so it really should happen.
It never happens, though.
It’s so frustrating because this isn’t rocket science. Does the defensive player’s circle overlap with either of those colored circles? If yes -> covered. If no -> not covered. Seriously!
After a LOT of investigation around 4 lines of code, I figured it out.
OverlapShpere is defined by its radius. Spheres are defined by their diameter.
omg…….
Here’s what the QB is actually seeing
http://www.goldencrestgames.com/wp-content/uploads/2017/07/investigation2-1024x542.png
omg I’m dumb…….
Well, it’s fixed now. What I see is the same thing the QB sees. He can reliably hit that slant now.
I need a drink.
GoldenCrest Games
07-27-2017, 07:07 AM
It looks like that QB thing was the last major hurdle to finishing off the base game engine. After figuring that out, I was able to hammer through a lot of the remaining tasks. Basically, I cleaned up all the remaining AI's and implemented positional skill in almost everything.
What I have left is:
Positional skill for receivers
Open field running defense adjustments for positional skill
Refine kickoff and punt target selection AI
That's it! After those are knocked out, I can move on to turning it into an actual game!
The only thing on the list that's going to take some thought is the punt target selection. I made a design decision early on to eliminate fieldgoals, so punting needs to pick up the slack. I really want punts to be more of an offensive play than it is in the NFL. I'm toying with the idea of not allowing touchbacks, which would turn punting into a potential scoring option. (essentially replacing the fieldgoal)
Seems like it will be cool....on paper. I hope it works out.
I think I'll knock these items out pretty quickly. After that, we're going to move on to depth charts and playbooks. (and stringing multiple plays together to make a full game)
GoldenCrest Games
07-28-2017, 07:42 AM
Well, I think the AI and ratings implementation is basically done! It's been a long haul to get past the base game engine, and I put off a lot of other features to get this right, but I think it's going to be worth it. I'm pretty sure I've locked in the ratings, which was the most important thing. I wanted to be sure which ratings were important so the game/interface could be designed around those, and not have to go back up redo interface as I update the game engine.
There are going to be changes in how the ratings are used as we go through more detailed testing, but I think the ratings themselves are mostly locked down. Here's how we ended up, and what's going to be reserved for future refinement:
Core Ratings
Speed - Used for all running. All players have perfect acceleration and agility, so this is the only rating that determines movement.
Power - Used for pushing other players. Mostly comes into play for blocking.
Positional Skill Ratings
QB, WR, RB, OL (Skill) - All the offensive positional skills. I don't specialize positions beyond these categories to keep it simple. (ex. No difference between a LT and C)
DL, LB, CB, S (Skill) - Defensive positional skills.
ST, K, KR (Skill) - Special teams positional skills. KR and K are used for both kickoffs and punts to keep it simple. (K = P, KR = PR)
Non-Core Ratings (probably invisible to the player)
Hands
Tackling
Break Tackle
Scramble Tendency
DefendPass
Decision Making Time
The interface strategy is to keep ratings as simple as possible, so the focus stays on roster and depth chart management. When evaluating players, I want it to be easy to determine who is better, without you having to spend a lot of time figuring out "player style" or "fit".
The decision making process should be focused entirely around getting the best players you can, with your limited finances and roster spots.
There are still some game engine things that need refinement. (like fine-tuning positional rating effects on performance) I'm going to hold off on doing any more of that until the game has progressed enough that I can manage rosters and really get into the details of following players through multiple games. That should give me a good feel for what works, and what doesn't.
Anyway, on to the next phase of the project! WOOHOO!
GoldenCrest Games
08-01-2017, 08:45 AM
Honestly, as much fun as the AI and game engine was to work on (for the last 12 months) I’m glad to be able to move on to something new. The next part is going to be really interface heavy, and I’m not very good at that. It’s going to be rough for a while….
First up is the depth chart interface. I started thinking about this way back in March (link here: )
After reviewing where I was then, I don’t think a lot has changed. I want all the work it takes to prepare for each week’s games to be as simple as possible, so you can focus on roster management. However, your per-game decisions have to be meaningful or roster management is pointless. I also don’t want to bury the player in spreadsheet type screens that don’t add much to the experience.
My first attempt at designing this:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dca-1024x768.jpg
Once you see it on the “screen”, there are some obvious problems. First, there are WAY too many text fields. It’s starting to look like a spreadsheet. Second, it’s going to take up a ton of screen space. I really want to see the players practicing while I manage the depth chart. Third, it requires drag+drop to make it work. Eventually I want to create a PS and Xbox version of this game, so drag+drop isn’t going to work real well. (besides the fact that drag+drop is something I hate in games)
Ok, let’s try something else:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dcb-1024x768.jpg
whoah, now we’re getting somewhere! The practice field is visible and the screen is nicely laid out. Looks great!
…… then I tried to implement it. As it turns out, it’s way easier to make things fit on the whiteboard than it is when you actually create them on the screen. The number of fields that this system requires makes it impossible to fit on the screen, and still leave room for the practice field. You end up with the spreadsheet look again. I also ran into a new problem I wasn’t expecting. As you adjust the resolution or screen size, the precise layout starts to become ‘unstable’ and the roster column can run into the depth chart rows. Yikes!
*begin random flashback*
There was a time, way back in the day, when I wanted to be an author. I had a lot of stories in my head, and wanted to get them out into books. I had a friend (Lee) who was already an author, and loved to talk about the craft. One day, as we were talking through one of my stories, he made a comment that always stuck with me.
“Sometimes, you need to kill off your favorite character.”
I was trying to get through a story where my favorite (and main) character was in a situation where he ‘should’ get killed. I was trying to find a way to get him to survive. Lee was pointing out that the story is what’s really important. The characters were living in the story, and it needs to go where it goes. I shouldn’t get too attached to specific characters if it hurts the story.
*end random flashback*
So I’ve been trying to find a way to have the practice field be the center of attention, but maybe I need to let that character die. If forcing that hurts the overall experience, it has to go.
🙁
So I went back and redesigned the depth chart interface with ruthless efficiency of space in mind. Strip it down to the bare minimum of space needed, and use the center of the screen if necessary. I need to be able to manage Offense, Defense, and Special Teams depth charts in a single screen, with the smallest amount of real estate possible.
Here’s what I came up with:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dc1-1024x622.png
The concept is that you have a roster of 12 players, so offense , defense, and special teams each have 12 predefined depth chart positions. (the playbooks will reflect this) Every player on your roster will fit into one of these slots, for each of these packages. (remember, players play on both sides of the ball)
Since we’re managing all the depth charts and packages on one screen, you need fast access to the ratings. If we put them on each player record, it starts to make sense to put it in a spreadsheet format.
But we hate spreadsheets…….so let’s make it an overlay on the practice field.
But if we do that, we can’t see the ratings because the players on the field are too distracting.
So let’s use bright colors to enhance the rating boxes. And if we’re coloring the rating boxes, let’s scale the color to match the number! Now we have multiple levels of information in a small package.
I think it works pretty well. The other added benefit is that it’s relatively small on the screen. I can adjust resolution and screen size way up/down and nothing becomes unstable or falls out of place.
Victory!!!!
Now I just need to make it functional. 😉
GoldenCrest Games
08-04-2017, 07:32 AM
Breaking news,
interface stuff is hard.
:(
GoldenCrest Games
08-05-2017, 02:24 PM
It was a lot harder to do than I though it would be, but I’m pretty sure I have the depth chart screen functional.
Here’s how it works…..
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dcB1.png
Starting from the left, the Offense, Defense, and Special Team “Squads” are listed vertically. Right now, the offensive squad is selected and highlighted. The brighter purple positions are what we’re considering the “starters”. Those are the guys that are in almost every play. The darker purple are backups or guys who come in on fewer plays. (I still might make WR3 a starter. Depends on how the playbooks shape up)
The defensive and ST squads are not highlighted, but you can still see what position the players are listed in. For example, Brent Favre is QB1 on offense, LB3 on defense, and ST3 on special teams.
I’m using nicknames for players, so the names section of the depth chart screen takes that into account. It figures out what combination of first, last, and nicknames fit in the field and displays it appropriately. Terrell Owens doesn’t have his nickname (“Love Yourself”) shown because it won’t fit. Favre has his first name dropped to fit “Wranglers” in. The random players all have the full first-nick-last names shown. etc…
Speed and Strength are just showing the raw values because I haven’t scaled that in the engine yet.
For the rest of the positional ratings, they are colored with the values. It simply shifts linearly from green to red on the RGB chart, based on the 1-100 ratings scale.
By clicking on Osweiler, he gets highlighted and designated as the ‘active’ player to manage. If I wanted to change his offensive position right now to QB1, I’d click on the QB1 square and he’d flipflop with Favre. I started messing with a system where you click an “up/down” button to shift the players up or down in the depth chart, but it became a pain to use. This just seems to be more direct and simple way of changing positions, even if it has it’s own flaws. (you want to do your swapping starting from best players to worst players, or you end up doing extra swaps)
As I was messing around with this in-game, it got hard to follow. I found that I was usually trying to set a single player at a time, so I need that player to stay highlighted when I switch between squads. (previously it just kept the row highlighted) That’s a lot harder than it sounds.
Anyway, I got it working with a little brute-force, and I think it’s fairly effective. Here’s the string of screens for managing Osweiler.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dcB2.png
http://www.goldencrestgames.com/wp-content/uploads/2017/08/dcB3.png
As I starting using this more in-game, I’m sure I’ll play with the colors and formatting. For right now I think it’s effective enough to continue to move on.
Honestly, I’m not sure what to work on next. I think a playcalling screen seems appropriate, but I also need to start transforming the engine from single-play resolution to full-game resolution. Maybe I’ll go chop some wood or something, and see if I get inspired.
GoldenCrest Games
08-09-2017, 07:41 AM
Not really a major progress update for this post, so much as a record of lessons learned....
*begin random flashback*
So back in the day when I was a complete hack, I used to try and impress my friend Lee. When he wanted to see how I got something to work, I tried to be really clever with the code and how I managed my data. I'd work really hard to get a block of 100 lines down to fewer than 10. Most of the time, I could figure out a really 'elegant' way to squeezing every bit of code efficiency out of it.
Then I'd ship it over to Lee and he'd be all "It's really efficient, but there's no way you're going to be able to fix this if it doesn't work."
Me: "What do you mean? I got 100 lines of code down to 10!"
Lee: "Yeah, but now it's so efficient that it isn't obvious what it's doing. Your code is doing multiple things at the same time, and your variable are generic and getting reused for different things. In 3 months you'll have no idea what this does."
Me: "You just hate me."
*end random flashback*
So I was playing around with my depth chart, just looking for the next thing to work on, when I noticed that sometimes a player would get cloned when I changed his position.
.. uh oh.
It didn't happen every time, but it was happening enough that I had to fix it right away. So I jumped into my code and tried to spot the error in my logic. Of course, I'm impressed with how I wrote the code and how efficient it is. However, it's only been a couple days since I wrote it, and I already can't figure out exactly what it's doing.
Damn you, Lee.
I hate it when he's right, but he's right. I ended up rewriting most of it to be really straight-forward and clear. It took 10x the number of lines, but it's extremely clear how it works. Then I started from the top and worked my way through it until it became obvious what the problem was. I was using a "If-then" type structure instead of a "switch" when checking position during a depth chart swap. What happens is that the player could get his position swapped, but then get his new position checked again and get swapped a second time, with himself, and get cloned. (I know, it's confusing)
Anyway, I fixed all that and started being really conscious about how 'clever' I make my code. It's already paying off, too! I just finished up the part where I reconcile incoming plays with the depth charts. I had another really confusing error, but it was easy to solve because the code was laid out in a simple and straight-forward manner.
I hate it when Lee's right.
:)
GoldenCrest Games
08-11-2017, 03:14 PM
For those who have been following along, what new important detail is shown in this screenshot?
http://www.goldencrestgames.com/wp-content/uploads/2017/08/1-1024x608.png
Did you get it?
The defensive team is on offense! (orange)
*end attempt to make the mundane seem exciting*
That detail doesn’t seem too important until you put it in context of the game engine development so far. Up until this screen, I always had a predetermined offensive team and defensive team. This is the first time the game situation decides who is on offense or defense. What you see here is the first play after an offensive touchdown.
oh yes, we’re scoring touchdowns now. 🙂
We’re using all kinds of things that weren’t ever part of the engine before!
Down and distance
Turnover on downs
Turnover on interceptions
Offensive and defensive touchdowns
Updated line of scrimmage (LOS) based on gain/loss
Turnovers flip the field (oddly difficult to implement, for some reason)
It’s pretty awesome to actually have drives. For a long while, I had a hard time believing I’d ever get here. Just before I put it away for this post, I had an 11 play drive that ended up stalling out near the 5!
That was a sweet moment. 🙂
There’s a lot of tuning and bug squashing to be done, that’s for sure. My strategy is to get to a functional game engine running so I can start a “dynasty” with a single team, and see what we see. I’ve found it’s a lot easier to pay attention to the details when your players live on longer than 1 play. I’m hoping that I can follow my team through multiple “games”, and be more effective in refining the engine along the way.
Who knows, maybe it will all flame out and I’ll have to do more work before a dynasty works. We’ll give it a try and see what happens.
To make it interesting, and to test out multiple parts of the AI/engine, I’m going to create a league and implement some house rules. I have some ideas right now but I want to think this through to make it both interesting, and effective.
More to come……
GoldenCrest Games
08-12-2017, 01:17 PM
Kicking off Exhibition Season #1!
Here’s the dynasty plan:
Until the league structure is in place, and the game can track full seasons on its own, we’re going to be considered in “Exhibition”. (an easy way to mark where the engine was during these test seasons)
I’m going to try and carry players over from season to season, to measure the progress of the engine. I imagine the stats are going to be all over the place for early exhibition seasons, and start to fall in line for later seasons.
Exhibition Season 1 is going to have 6 teams, designated by color.
The “Reds” and “Purples”
http://www.goldencrestgames.com/wp-content/uploads/2017/08/red-and-purple-300x266.png
The “Greens” and “Pinks”
http://www.goldencrestgames.com/wp-content/uploads/2017/08/green-and-pink-300x293.png
The “Blues” and “Yellows”
http://www.goldencrestgames.com/wp-content/uploads/2017/08/cyan-and-yellow-300x266.png
I’m going to run the Greens for the whole season. After all my games are done, I’ll run other teams to finish off their games. (to even it out). I’ll pick the teams to run based on what aspect of the game engine I want to test.
Each team is going to play every other team, and each team is going to have a different roster focus. (to test balance)
I’m going to start the league with an allocation draft. I’ll have to do it offline in Excel, but I might as well use this opportunity to start working on my draft formulas. I’ll only draft for the Greens. I’ll have my drafting formulas pick for the other teams.
The first 2 things I’m watching is game length and field size. I don’t have a specific number of plays or game length I’m shooting for. Instead, I’m going to play until it feels about right, and then make small adjustments from there. Same goes for field size. We’ll just try to make small adjustments until it feels right.
I think that’s it. Basically I’m going to draft teams, and play out a full exhibition season to see what happens. I’ll also keep track of the game engine observations as I go. Right now, I think I’ll fix/update anything that can be done in under 3 hours, prior to the next game being played. (3 hours is about 2 weekdays worth of keyboard time) Anything that will require more than that, I’ll keep on the list until after Exhibition Season 1.
Now to generate the player pool!
Radii
08-12-2017, 02:10 PM
i'm following along by the way, good stuff, and very exciting progress in the past couple days!!
GoldenCrest Games
08-15-2017, 08:12 AM
So I got the Exhibition Season 1 allocation draft pool created in Excel, and was pretty happy with how the talent was spread out, when something occurred to me....
How am I going to get these players into the game?
ugh. :(
I can't believe I didn't think of that problem earlier....
I've got 2 options. Option 1 is to manually edit every player (72 in all) to transfer the spreadsheet data to the engine. That would take FOREVER! The other option is to recreate the draft pool generation right in the game. That seems like a better idea, but the I either have to create all the draft interface stuff in the game or still find a way to to it in excel.
Long story short, I decided to just create the pool in the game and write an exporter to put the data into excel for the actual draft. I really don't want to spend the next week(s) designing a drafting interface, when the game engine needs so much work.
Anyway, I'm plugging away at it and should be ready to kick off the draft in a couple days. (maybe tomorrow if everything goes according to plan!)
GoldenCrest Games
08-15-2017, 10:01 AM
That didn’t take as long as expected! Here’s the draft file I’m going to use for the season: (attached)
Some things you’ll notice, and some things to watch for during the season
The nicknames file is a little out there. 🙂 We’ll have to clean that up eventually.
The ratings are a little weird when it comes to “realistic” players. You’ll see guys with speed that doesn’t seem to match the positional skill, or strange combinations of positional skills. I didn’t spend a ton of time making sure the generator created life-like players, because I want to see how the engine will react. I have one team (The Purples) that is going to try and pick engine-breaking players.
Speed and power are still in their raw form. I haven’t changed it over to the 1-100 point scale because I’m still figuring out the right balance and scale for those ratings. It’s just easier to do it while it’s raw.
Other than that, it’s time to get going! I’m going to really try to do a good job in the draft, so it might take some time. We’ll be using these teams for the next couple weeks (at least) so I want it to be effective.
This is so exciting!
🙂
GoldenCrest Games
08-15-2017, 02:46 PM
Here’s the final draft order, with team focus:
Yellows: 2-Way Balance
Blues: Offensive Specialists
Reds: Defensive Specialists
Greens: It’s me!
Pinks: Best Player Available
Purples: “Unique” Game Engine Breaking Players
First up in the draft are the Yellows. The Yellows narrowed the top players down to these:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Yellows1.jpg
Major Hecker seems to be the obvious choice due to him being near the top in 4 positions. However, he’ll never play OL since he’s the top QB, and he’s pretty close to the slowest player in the draft. Willard Correia is the #2 WR and S, and is also one of the fastest players in the draft. The Yellows can’t pass up that balanced potential, and select Willard Correia with the #1 overall.
Next up are the Blues.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Blues1.jpg
The Blues have the field narrowed down to these 4. Again, Major Hecker seems to be a smart choice, but Donnie Jarmon is intriguing because he’s the #1 WR by a wide margin, and he’s the fastest player in the league. Nicky Tolliver is interesting because of the slim RB skill in the pool, but he doesn’t really have a chance at the pick. Guillermo Faria is a dark-horse pick. He’s a respectable QB, but is a beast in the return game. The Blues stay true to their focus on offensive specialists and take Major Hecker to hold down the QB spot.
Next up, the Reds
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Reds1.jpg
The Reds are in a pretty good spot. They get the pick of the litter, when it comes to pure defensive talent. Want the best cover guy in the league? Take Sterling Healy. Want a ball-hawking safety? Take Arturo Aponte. Want the silky-smooth LB that can transition effortlessly to pass coverage? Simon Fishman is your man. Or do you want the beast on the d-line? Kirk Slade. How about a technician CB who can hit? Donnie Viera is the guy. You can’t go wrong with any of these guys. In the end, the flexibility of Simon Fishman is too hard to pass up for a defensive minded coach.
Now we’re on the clock (Greens)
Honestly, I really wanted Fishman. grrrr……. What I’m looking for on my team are guys who keep my attention. I want guys that I can zero in on, and be invested in every play. That means high impact players, and in this game that means speed.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Greens1.jpg
My top 6 are among the fastest players in the game. Donnie Jarmon leads the pack at the unquestioned #1 speedster at the WR position. He’d be fun to watch. I just wish he were better on kick returns. Kenneth Urquhart is a beast at the KR position, but you can’t take a KR with your #1 pick…. can you? I could go defense…..but I won’t. 🙂 It’s obviously going to be Donnie Jarmon.
Now the Pinks are up
http://www.goldencrestgames.com/wp-content/uploads/2017/08/PInks1.jpg
The Pinks are shopping for the BPA. By that, I mean the highest rated player in in any position, with speed and power factored in. There were 7 players on the interest list, but it really comes down to the top 5. I think it’s a toss-up between the coverage skills from Aponte and Healy compared to the line dominance of Kirk Slade. After debating it over and over again, I decided the overall value of playing both sides, combined with tackling, is valuable so Rodrigo Millar becomes the close choice.
Last up for round 1, the Purples
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Purples.jpg
Honestly, this one is easy. There are 2 potentially engine breaking talents on the board. The elite kick returner with few other skills, and the QB/KR with 81 scramble tendency!
Yeah, it has to be Guillermo Faria.
Round 2+, coming soon.
GoldenCrest Games
08-16-2017, 08:48 AM
Coming back around to the Purples, to kick off round 2.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/purple2.jpg
Looking for engine breaking talent again, I’m noticing some other guys I overlooked with the last pick. Kim Tudor has a little skill in a lot of positions, and has a potentially engine breaking combo of speed and power. Hong Langlois has the chance to break the OL logic with his skill and speed. Kim Tudor is too odd to pass up. The Purples can try him at multiple positions to see what happens.
The Pinks are in a good spot with their board.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/pinks2.jpg
All their guys from the last round are still available. The Pinks are a little more strict on the BPA philosophy this time, and take the dominant lineman Kirk Slade.
Greens are back on the clock.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/greens2.jpg
This is a hard one. I still really want to pick the return specialist Urquhart, but it feels too early. I don’t want to waste my first pick (Speedy WR) by not having any QB talent, but Thurber is another specialist player. I’d be using my top 2 picks on 1-dimensional players. Tolliver could fill both the RB and 2nd DE spot, but he’s not really high-end talent enough to justify the 2nd rounder…? I do really like Dick Klinger’s (hehehe) balance and speed. He’d be a nice LB, backup WR, and KR/ST player. I think he’s going to be around for another round or two, though. Hong Langlois is intriguing because he can do a little bit of everything.
I ‘m going to bet the Reds and Yellows aren’t going to take Thurber, allowing me to wait on the QB. I can’t say the same for Dick Klinger (hehehe). If I take a QB with one of my next 2 picks, that leaves Dick Klinger (hehehe) for a potential 4th round pick. He’ll never make it that far. UGH, WHAT TO DO! I think my best course of action is to take the QB Rubin Thurber now, and evaluate Dick Klinger in the next round.
Reds are up.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/reds2.jpg
With the first round, the Reds took a dynamic LB/CB speedster. Adding another top-end CB would allow for defensive personnel flexibility. They could play Fishman at LB or CB, depending on the matchup. That sounds pretty sweet. The Reds take Donnie Viera.
Blues are next.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/blues2.jpg
The Blues took superstar QB Hecker in the first. The top-end offensive talent isn’t really there in the skill positions, but the top OL is still on the board. That seems like a good fit. The Blues take Ivory Callender
Last pick in the 2nd round, the Yellows
http://www.goldencrestgames.com/wp-content/uploads/2017/08/yellows2.jpg
The Yellows have an easy pick here. The 2-way talent of German Cruse is too hard to pass up. Since they are picking back-to-back, the Yellows follow up with the guy who can play almost anywhere, Forrest Foltz.
nilodor
08-16-2017, 04:57 PM
Really fun to see how this is coming along. Great work! Keep it up
GoldenCrest Games
08-16-2017, 07:07 PM
The Yellows took the well-rounded Forrest Foltz with their 3rd rounder (as seen at the end of the Round 2 post)
The Blues are on the clock again.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/blues3.jpg
With their first 2 picks invested in the top QB and OL, it makes sense to continue to capitalize on the passing game, and take the speedy WR/RB Young Thurston
The Reds are up next.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/reds3.jpg
This is an interesting pick for the Reds. They already have a star LB/CB and a 2nd star CB. They could build a formidable secondary by taking the star S Aponte or CB Healy. They could also start developing some defensive balance by taking some high end DL talent like Wicks or Flanagan. I don’t think they could go wrong with any of these guys. In the end, I think Arturo Aponte is too elite to pass up.
Now the Greens are up!
http://www.goldencrestgames.com/wp-content/uploads/2017/08/greens3.jpg
I really want to take Dick Klinger (hehehe) with this pick, but he’s just not talented enough. This really isn’t that hard of a pick. Nicky Tolliver is by far the #1 RB in the draft. Even though I wasn’t planning on having a running offense, you can’t pass him up in the 3rd round. Besides, he could fill in as a 2nd DL/S, depending on how my roster ends up.
Now the Pinks.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/pinks3.jpg
The Pinks already have a LB/WR and DL. The top-end CB skill, combined with some ability to play on offense, makes Sterling Healy a great fit for the Pinks.
Now for the Purples back-to-back picks.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/purples3.jpg
These are going to be easy picks. The pure speed of Hong Lanlois at the OL/DL position is going to be potentially engine breaking. They are going to use their 4th rounder on the lines also, and pair him up with Thanh Wicks.
GoldenCrest Games
08-16-2017, 07:08 PM
Really fun to see how this is coming along. Great work! Keep it up
Thanks! I appreciate knowing that someone (besides me) finds it interesting. :)
GoldenCrest Games
08-17-2017, 06:28 AM
The Purples picked lineman Thanh Wicks at the beginning of the 4th round, as round 3 wrapped back around.(see round 3 post)
That puts the Pinks back on the clock.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/pinks4.jpg
BPA is getting a little harder now. I think it comes down to Galvan and Finn. Both are top talents at the OL position. Both can play a little defense and can tackle. I think the edge goes to Abraham Galvan due to his elite-level tackling.
Next up, the Greens!
http://www.goldencrestgames.com/wp-content/uploads/2017/08/greens4.jpg
I can’t screw around anymore. I need to start paying attention to my defense. Luckily, Martindale is a top defensive talent with good speed….so I obviously take my KR Kenneth Urquhart. 🙂
Reds are next.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/reds4.jpg
The reds have dominated their secondary so far, but have nothing on the line. The top 3 DL prospects all would fit nicely. Matheny is a better pure defensive lineman, but the flexibility of Earl Flanagan is hard to pass up.
Blues are next
http://www.goldencrestgames.com/wp-content/uploads/2017/08/blues4.jpg
This is pretty sweet, for the Blues. They already have the top rated OL. The 2nd rated OL is actually their QB (Hecker). Now they get to draft the 3rd rated OL Art Finn and completely dominate the position. This is going to be one heck of an offense.
Now the Yellows get to go back to back.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/yellows4.jpg
It’s getting hard to find balanced players who still have talent. The Yellows go back to back here. It looks like Dario Simon is an easy pick for round 4, and then Derick Hutcherson would be a smart pick to start stacking the line with.
GoldenCrest Games
08-18-2017, 06:25 AM
I finished up the draft this morning. Once we got past round 4, I found that I was running out of interesting per-player observations and just needed to power through the picks. I’ll post the full draft results pretty soon….
I did have some observations that I want to get down before I forget. It was an interesting exercise, going through each player and team with focus and attention. You kind of lose perspective when all you’re doing is hammering out code every day. It was fun to look at everything as a game again.
Observations:
The teams that were focused on specialists were easy to draft for in the first 4-5 rounds. It makes intuitive sense to look at top-end talent in single categories. The balance focused teams were a lot harder in those rounds. It was hard to find the right balance between high-end talent and picking players who could fill multiple roles.
After around the 5th round, it flipped. The specialist teams got harder to draft for, and the balance teams got easier. The specialist teams had a TON of holes that needed to be filled with mediocre talent, and they had fewer roster spots to fill them with. By round 5, the balanced teams usually had 10-12 depth chart needs filled with 5 players. That allowed them to use the remaining 7 picks on any position they wanted. This flexibility made for some real value picks later on.
I had no real strategy for the Greens, other than picking interesting players. I ended up falling into old patterns of looking for the best player ratings, without regard for flexibility. I ended up paying for that later in the draft when I was picking poor talent just to fill depth chart needs.
12 roster spots feels about right. For this draft, we could have gone down to 11 or 10 spots. Once injuries make it into the game, I think 12 will be the right number.
I’ll need to play with it more to be sure, but my early impressions of decision making is exactly what I want from the game. That tension between talent and flexibility, applied to limited roster spots, creates the difficult decisions I’m looking for. That was kind of fun.
I didn’t put much emphasis on kickers because I don’t really have a lot of kicker/punter skill implemented in the engine. I’m going to develop that as we go, and experiment with the different teams.
Something in the back of my mind was special teams. (not the KR, the actual special teamers) The Purples were the only team that picked guys specifically for special teams. I’m curious how big of an impact that’s going to make. Based on my previous testing, it could end up being a huge deal. It’s going to be fun to see what happens.
Right now I’m finishing up a few things, before we can kick this off.
I have most of the stat recording implemented. I just need to make sure stats are being generated correctly.
I need to create something to automatically update the computer depth charts. I don’t want to have to do that manually. I probably should figure out a way to save/load depth charts, too.
Other than that, everything is ready to go!
GoldenCrest Games
08-18-2017, 03:53 PM
Auto-depth charts done!
I use a sort of “better than replacement” style algorithm to determine depth charts, and it seems to work pretty well. There are some issues with overall positional value calculations, but it’s a good start.
Here’s how the Greens roster worked out:
Offense
http://www.goldencrestgames.com/wp-content/uploads/2017/08/GreensOffense-e1503089459499.png
It looks like I locked down the QB/RB/WR trio fairly well. Jarmon is going to be a FREAK! Outside of that, my offense looks pretty bad. I’m not sure why Urquhart was listed as OL3 instead of Willette. (I’m sure it has something to do with the speed) I can adjust the positional value formula to fix that. The rest of the offensive depth chart looks ok, though.
Here’s the defense
http://www.goldencrestgames.com/wp-content/uploads/2017/08/GreensDefense-e1503089489371.png
One thing is for sure, I’m going to have a fast defense. The skill might not be there, but they can run! It looks like speed is getting used too heavily in depth chart generation here, too. My DL3 and DL4 should probably be flipped, but it’s pretty close.
Here’s where I need to make my money, special teams.
http://www.goldencrestgames.com/wp-content/uploads/2017/08/GreensST-e1503089516272.png
Between Urquhart and Dick Klinger (hehehe) we need to do some damage in return game. I imagine the defense is going to give up a lot of TDs, so we’ll need to strike back quickly. I’m also hoping the team speed will help on coverage, even if the skill sucks. Maybe I’ll move Dick Klinger (hehehe) to ST instead of KR…..
One thing I’ve noticed while working on the depth charts is that I don’t really like how they look. It’s not easy enough to find the information quickly. Also, the colors (reds) are too distracting. I’m also noticing that I really want to see the secondary ratings. (tackling, scramble…) I’m not going to fix it right now, but that’s going on the list to be addressed soon.
I’ll post the depth charts of the enemy team as they come up on the schedule. Hopefully that will help figure out what’s working and what’s not.
I just have to finish the stat recording, and we can get rolling!
Open Items List
Update depth chart screen for ease-of-use
Add secondary ratings to the depth chart
GoldenCrest Games
08-19-2017, 10:36 AM
Obscure code error of the day:
So I've been having a LOT of problems with my kickoffs since I updated the trajectory formulas. The math always worked out, and the target indicators always were at the right spot, but the ball rarely landed where it was supposed to and the KR never ran to the right spot.
To make things worse, it didn't happen every time.
WTF??
Today, I was messing with pass stats and I accidentally called the kickoff play.
"Well, might as well see what Urquhart has for me." so I ran the play.
Sure enough, the play bombed out again. Ball landed in the wrong spot and Urquhart ran the wrong way.
:(
However, I noticed that the ball landed in the exact same spot as the last pass incompletion.
....
o..m..g.. When I updated my kick physics, I accidentally recorded the kickoff location with the passing variables. Urquhart didn't know where to go because the ball was being kicked to the last place I threw a ball. He was looking at the kick variables.
passLocation != kickLocation
ugh. Sometimes programming is maddening.
GoldenCrest Games
08-21-2017, 02:09 PM
Everything looks like it’s ready to kick off the season! All the stats are in place and I haven’t had any game-crashing bugs in over 50 plays. It’s go time!
Here’s the schedule to far:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/Schedule-e1503342512944.png
I’ll fill in weeks 6-9 after week 5, when I know which team I want to experiment with. After everyone has played each other, we’ll have a little championship game with the top 2.
I might try making videos of the games to look at later. Might be easier than trying to catch everything as I play. We’ll have to see how the workflow works out.
We should have the first game done today! (if everything works out)
GoldenCrest Games
08-22-2017, 11:49 AM
I’m really glad we finally got to the detailed playtesting phase, because I’m finding a LOT of things that need to be fixed. The first thing is that I’m not able to take video. I’m pretty sure it’s because the game engine is still too heavy, and the screen recording killed my game. I was able to do video before, so this probably has to do with the latest AI updates.
That being said, it was still a success! We played the defensive dominant Reds. Here’s their depth chart:
http://www.goldencrestgames.com/wp-content/uploads/2017/08/RedsOff.png
http://www.goldencrestgames.com/wp-content/uploads/2017/08/RedsDef.png
http://www.goldencrestgames.com/wp-content/uploads/2017/08/RedsST.png
Outside of the defense, they are pretty brutal.
I wanted the game to last about 15 minutes, so I set a timer and just played until it ran out. We ended up running 60 total plays. After trying to use the depth chart screen some more, it really needs more work (details in a later post)
First off, the Greens won 49-28!
Greens offensive plays: 14
Reds Offensive plays: 29
Special Teams plays: 17
The Reds had the ball a lot longer than we did, but that was largely due to the complete special teams domination we laid on them.
Offense:
Reds QB Earl Flanagan went an impressive 2/17 for 18 yds and 1 int. I say “impressive” because our QB Rubin Thurber went 0/10. Some of that had to do with the weird throwing glitch, but most of it was because of the insane coverage the Reds put on us. I only had an open WR 2 times, and Thurber messed up the throw both times. On the other hand, Flanagan had a lot more open WRs. His problem was that he couldn’t hit anything. His throws were almost always off.
On the ground, the Reds killed us. Reds RB Eusebio Jack killed us on 8 rushes for 197 yards and 4 TD. We just had no answer for him. Missed tackles are what doomed my defense. It seemed like every time Jack came around the corner, I was missing tackles and he just sprinted upfield. Our RB Nicky Tolliver never really got going and only ran 3 times for 2 yards. I probably should have kept trying, but I got lost in the passing game….
Defense:
Dick Klinger got the only Int of the game! woohoo!
Nicky Tolliver led the game with 4 sacks, followed by Reds Hai Matheny with 1. I would have thought the sack total to be higher on their end, but I guess my switch to max protection worked.
Special Teams:
Here’s where the game got out of hand. Urquhart was completely unstoppable. The Reds KR had 6 returns for 173 yards. That sounds pretty good until you see Urquhart’s line
5 kick returns for 380 yards and 4 TD, 4 punt returns for 265 yards and 3 TD.
Yeah, he was that good.
It’s really fun to watch Urquhart bob and weave through the middle of the defense, but come on! That’s a little too much. There are a few obvious things that need to get tightened up here. The first is defensive pursuit angles. That was really the biggest problem. If the defense would have tried harder to get in front of Urquhart, it would have made a huge difference. Also, missed tackles are a plague on the league. It’s bad enough that guys miss so many, but when they miss a tackle they get in the way of other tacklers. Urquhart’s uncanny talent for finding holes makes missed tacklers turn into extra blockers.
I kept a log of observations and things that need to get worked on. Here are the new items:
Something happened to blitzing. For some reason, blitzers are stopping at the LOS. This has never happened before, so I must have recently done something to break it. That kind of sucks, because I designed an all-out blitz play I wanted to test this game.
I really need more plays. I have 4 passing plays, 3 rushing plays, and 5 defensive plays. That’s just not enough to really push the game engine. I’ll try to knock some more out before the next game.
My kickoff and punt camera are terrible. I’m using the Unity Standard Asset “Smooth Follow” for the camera controller, and it’s terrible when it’s following the ball in the air. That needs to get fixed before I start doing video. Too embarrassing….
Missed tackles are a mess. Players miss far too many tackles. As if that’s not bad enough, after missing a tackle, they get in the way of everyone else trying to make a tackle. That usually leads to huge offensive plays.
Defensive pursuit angles need more work. They actually aren’t too bad, except for the players that are already ahead of the ball carrier. Too many times, the defender doesn’t try to cut off the runner. They just wait for the runner to pass and then give chase.
Speed pass rushers are INSANE! It might just be because of the match-up this game, but it’s something to watch. For this game, it was really hard to mount a decent offense because of the pass rush.
Every once in a while, we’d go through a stretch where passes were way off the mark. I’d see 4 or 5 passes in a row that weren’t even close to the right spot. So far off, it doesn’t seem right. I’ll have to peek in that code and make sure everything is ok.
Now for the good stuff!
Returner AI is nearly perfect. When the returners have the ball, it’s like they are playing on a different level. Silky-smooth and great field awareness. The way Urquhart picks his way through traffic is crazy. So much fun to watch. The difference between Urquhart and an average returner is also apparent, but not “weird”. It just looks natural.
I created a play with extra pass blocking help from the WR and RB. It worked far better than I’d hoped! I found myself using max protect a lot towards the end of the game to get more time to pass, and it usually worked.
Here’s the updated list.
To be attempted before the next game
Blitzing
Add new plays
Passing investigation
Defensive pursuit angle
Missed tackles
For later:
Depth chart refresh
New camera control
Keep an eye on speed rushing
GoldenCrest Games
08-24-2017, 08:43 AM
I finished up the updates I wanted to get done post-week1, and we’re ready to head into week 2.
Here is the list from Week 1:
To be attempted before the next game
Blitzing
Add new plays
Passing investigation
Defensive pursuit angle
Missed tackles
For later:
Depth chart refresh
New camera control
Keep an eye on speed rushing
Blitzing is fixed now. It was a pretty simple fix, and I’m surprised I didn’t catch this sooner. The problem goes way back to when I created the master AI controller. I never updated the blitz AI to work with the new controller.
Passing has been fixed. The problem here wasn’t the passing formulas, but how the WR velocity was being calculated. Once I made that calculation more stable, it started working again.
Missed tackles (and tackling in general) has been significantly upgraded. I changed how we calculate missed tackles, to bring in back into a more realistic range. I also put some extra features into the system that turns off collisions for players who miss tackles, so they don’t block other players. It’s a little bit of a hack, but it will do until I put the final missed tackle animation in there.
Defensive pursuit angle has been fixed. I really struggled with this one, until I changed how I was thinking about it. Originally I was thinking in terms of the wolf and the rabbit. The rabbit runs around, trying to avoid the wolf who wants to eat him. The wolf doesn’t run straight at the rabbit, he tries to anticipate the rabbit and cut him off. That’s what I wanted for the defensive pursuit angles. Unfortunately, it’s really hard to figure out the math, and the equations I was generating were complicated, and were going to slow down the engine even more. I was trying to solve too much of the problem all at once. All I needed was to solve the intercept point for a single AI cycle. I don’t necessarily need to anticipate what the rabbit might do in future cycles.
So instead of the wolf chasing the rabbit, I thought in terms of simply giving the wolf a shotgun. Now all the wolf needs to do is know how fast the rabbit is going, what direction, the distance between them, and how fast his pellets go. He just aims for the point where the rabbit and the pellets will intersect. Now if you do this calculation each AI cycle, any speed/direction/position changes for either the wolf or rabbit will automatically be adjusted for. This also takes care of that final close-range calculation to actually hit the rabbit, because the distance is so small that you’re essentially putting the barrel of the shotgun right on the rabbit. [end metaphor]
I can also eliminate all the other pursuit AIs, and just use one!
I didn’t get any new plays added yet, but enough stuff has been updated that we can move on to week 2.
GoldenCrest Games
08-25-2017, 12:40 PM
Next up, the Yellows!
http://www.goldencrestgames.com/wp-content/uploads/2017/08/yellowsOff.png
http://www.goldencrestgames.com/wp-content/uploads/2017/08/yellowsDef.png
http://www.goldencrestgames.com/wp-content/uploads/2017/08/YellowsST.png
The game overall was much better than week 1. It started to feel a little more realistic. That being said, I found a whole bunch of new stuff to fix.
First, the results…
The Greens topped the Yellows 49-21. Again, we played for roughly 15 minutes, and ran 60 plays.
Offense:
Thurber had a much better day passing with 1/3 for 58 yds and 1 TD. 🙂
We leaned a lot more on the running game this time, as Tolliver had 8 rushes for 249 yds and 4TD!
The Yellows QB Rosas kind of sucks, but he has 2 nice WRs. He was able to go 4/8 for 91 yds, 1 TD and 1 INT. Not too bad…
RB Beaulieu did not have a good day. 14 rushes for 18 yds.
Defense:
The Yellows did an ok job getting to Thurber. Rosas and Foltz both had 2 sacks.
That being said, the Greens defense totally dominated the Yellows line. Tolliver and Sturgeon both had 2 sacks, and Dick Klinger led the whole defense with 7 tackles, 1 int, and 4 sacks. He’s turning out to be a game changer.
Special Teams:
It was a good day for Urquhart again, but the recent changes tamed him a little. His final line was 2 KR for 78 yds, 4 PR for 165 yds and 2 TD. Still impressive, but not quite to the level of week 1.
Notes
I focused a lot more on the running game this time, and there are a lot of things to work on. Overall, it looks like blocking might be a bit too effective. At the start of the game, the DL isn’t getting off the ball very well and sometimes the OL blasts the guy back 5 yards. (not every time, though) However, the rest of the defense is actually attacking too quickly, and is getting sucked into the line too easily. If the RB breaks the run outside, he’s usually gone for a TD. We need a little more balance there. I’m also seeing that sometimes the runner gets ‘stuck’ behind the line if he breaks a tackle in the backfield. He pauses for a split second too long, and usually gets swarmed. I need the RB to be a lot more fluid in his running.
Kick returns are much better, but need more work. It’s weird when the KR/PR is catching the ball. It’s leading to some odd running behavior, if they don’t catch the ball cleanly. I don’t know what one has to do with another, but it needs to get cleaned up. I’m also noticing that the pursuit angles are much better, but the defenders are waiting too long to make the adjustments. I need to them to start cutting the returner off at least 10 yards earlier than they are. (I think this has to do with the scanning range of the defenders. Easy fix)
Overall, the passing game is working better. I was happy to see that the Yellows WR Simon was able to make a play, even though he’s really slow. I guess it’s not all speed after all. The passes are starting to look like they are far too slow, though. You can really see it on slant plays. The WR will be wide open on a quick-slant, but then 2 defenders will be there when the ball finally gets to the spot. I’m pretty sure this is why the passing game is suffering so much.
The other reason the passing game sucks, is pass rush. It’s clearly a problem that speed rushers are killing the OL. I don’t want to artificially slow down players, but I need to find a solution. It’s just not right that you can drop any fast guy into a pass rushing spot, and dominate the line.
Anyway, lots to work on!
Now for the good stuff:
2 games in a row without a single crash or error! WOOHOO!!!!
To be attempted before the next game
Check DL on running plays. Why do they get blown up?
Figure out why the RB stops in the backfield after a missed tackle
Adjust the defense diving into the line on running plays
Fix the kick return catching glitch
Adjust the special teams scanning range
Speed up the velocity of passes
Adjust the pocket time to allow for quicker passes and more QB scrambles
Add a couple more max protect pass plays
For later:
Depth chart refresh
New camera control
Figure out a solution to speed rushing (without artificially lowering speeds)
Figure out what to do about blocks being too effective. (guys not breaking free of blocks)
GoldenCrest Games
09-02-2017, 10:06 AM
Here's the pre-week 3 list:
To be attempted before the next game
Check DL on running plays. Why do they get blown up?
Figure out why the RB stops in the backfield after a missed tackle
Adjust the defense diving into the line on running plays
Fix the kick return catching glitch
Adjust the special teams scanning range
Speed up the velocity of passes
Adjust the pocket time to allow for quicker passes and more QB scrambles
Add a couple more max protect pass plays
For later:
Depth chart refresh
New camera control
Figure out a solution to speed rushing (without artificially lowering speeds)
Figure out what to do about blocks being too effective. (guys not breaking free of blocks)
I got cracking on the list, and then ended up spending 3 days lost down the rabbit hole. It started off innocently enough. I knocked out the special teams scanning range issue in a few minutes. As I was testing that, I got really sick of the ridiculous hang-time for punts and kickoffs. So I started messing with the kick power and aim point. Seems simple enough...
type...type...type..
No, that doesn't look right. Now the kicks are getting to the spot too quickly..... maybe if I adjust the ball physics, just a little bit...
*enters the rabbit hole*
3 days later I've completely scrapped my kicking and punting physics, and replaced them with cannon ballistics scripts. (modified to control kick height) Since I was messing around with ball physics, I also thought it would be groovy to scrap all my QB passing scripts, and replace them with more ballistics scripts that have been modified to adjust throw height/speed and take into account running receivers.
*emerges into daylight, and marvels at the sun*
I didn't plan on fixing all this now, but I did. It makes a huge impact on gameplay, too! QBs don't seem so helpless now. The ball comes out with zip, and the passes scale the height appropriately for the throw. Let's hope pass completion gets above 10%....
Now that the QBs look like they know what they are doing, I can't just have them getting sacked every other play. I also don't want to mess with speed/power at all. The solution I came up with is pancakes.
OL and DL have a chance to pancake eachother now. The idea is an answer to the situation where you'd put your fastest player at DE and just out-speed the OL. Power isn't really a good answer, since it's really just there for pushing physics. Fast guys won't get pushed by slower guys very often. Let's say I want to put Urquhart at DE, what things would stop me? .... ... I wouldn't do it if he got pushed all over, but that's not going to happen on pass plays. The pass blocking equivalent of pushing a DE around, is smacking him to the ground -> pancake. If I know there's a good chance the OL is just going to flatten Urquhart, I probably won't put him at DE. He's not doing any good if he's laying on the ground. I'd be better off putting a slower guy who at least has a chance of staying in the play.
The same idea works the other way, too. Even though there's a speed advantage for the DL, I'm finding that skilled non-speed DL are getting stopped regularly by bad OL. I think the pancake method would address this issue, too. I can't put Urquhart at OL to stop fast DE, because he might get smacked down and run over by a skilled slower DL.
Initial testing seems like it's the right way to go. I'll need to monitor and adjust the frequency of pancakes, but it seems pretty good so far.
Now that I've gotten out of the rabbit hole, I can knock out some of the smaller items on the list and move on to Week 3!
To be attempted before the next game
[DONE] Check DL on running plays. Why do they get blown up?
[DONE] Figure out why the RB stops in the backfield after a missed tackle
[DONE] Adjust the defense diving into the line on running plays
Fix the kick return catching glitch
[DONE] Adjust the special teams scanning range
[DONE] Speed up the velocity of passes
[DONE] Adjust the pocket time to allow for quicker passes and more QB scrambles
[DONE] Add a couple more max protect pass plays
For later:
Depth chart refresh
New camera control
[DONE] Figure out a solution to speed rushing (without artificially lowering speeds)
Figure out what to do about blocks being too effective. (guys not breaking free of blocks)
GoldenCrest Games
09-02-2017, 12:47 PM
Week 3: Greens vs Purples.
Here’s the Purples team:
http://www.goldencrestgames.com/wp-content/uploads/2017/09/purplesOff.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/purplesDef.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/purplesST.png
If you remember the draft, the Purples were trying to break the game engine with their selections. It was nice to see that nothing out of the ordinary happened during the game! No crashes, bugs, or weird glitches!
Now, for the game itself….
This was a tight one, which I actually thought I’d lost. I don’t get to see the score until after my 15 minute timer goes off because I don’t have an in-game interface for that stuff yet. (We won 42-35 in 76 plays) RB Tudor absolutely dominated. He started slow, but then was unstoppable as he went for 262 yds and 4 TD on 22 carries. After the first 2 possessions, I wrote a note in my log to take a look at inside running plays because they seemed like they never worked. I ran a few more inside running plays, to try and see what was going on… 16 yards, 12 yards, 8 yards, 20 yards and the Purples are at the 2. Next play up the middle ->TD.
O.M.G.
To be clear, it wasn’t all Tudor. The inside blocking was insane. The strength of the Purples OL was making massive holes, even when I ran a 3 DL front. I just couldn’t stop it.
Unfortunately for the Purples, that was it. They had no passing game and no return game at all.
We had a much better offense this time. Thurber threw 6/14 for 270 and 4 TD, 1Int. MUCH better than the previous 2 games. His speedy target Jarmon finally got to break free from coverage and make some plays. 5 rec for 198 yds and 3 TD (plus 2 drops)
Tolliver couldn’t match Tudor and only managed 52 yds on 9 carries. 🙁
The other thing you might remember about the Purples is that they were the only team that drafted for special teams coverage. It made a difference. Urquhart’s line really suffered, considering how many opportunities he got.
5 KR for 183 yds and 1 TD, 3 PR for 31 yds.
Yikes!
Urquhart had 8 chances and only housed 1???
Now for the notes:
I need to have an in-game interface for down/dis and score. It’s such a pain to have to pause to look it up.
Pancakes need to get tracked in the stats
QB scrambling still isn’t right. The Purples QB only scrambled once. He should have been running all over. I need to revamp how that works.
There are way too many dropped passes. It might be a combination of the formulas, or the player ratings being too low. Either way, there are far too many open passes dropped.
I’m also noticing that almost every scoring play comes from someone breaking free and running 20+ yards. That makes sense, given that we’re playing with 8 on a side, but maybe it means we should shorten the field. It’s starting to feel like the last 20 yards on each end of the field are just there for breakaways.
I added 2 more max protect pass plays, and they worked out nicely. Now I need to add a few more running plays to mix it up.
That’s it for Week 3! It went really well, and is starting to feel like a football game.
To be attempted before the next game
Fix the kick return catching glitch
Really look into the QB scrambling system
Dig into the dropped passes
Track pancakes
In-game interface for down/dis/score
Add more running plays
For later:
Depth chart refresh
New camera control
Figure out what to do about blocks being too effective. (guys not breaking free of blocks)
Look at shrinking the field size to reduce the breakaway running time.
GoldenCrest Games
09-02-2017, 12:50 PM
Home alone this weekend, so hopefully a lot of progress!
GoldenCrest Games
09-02-2017, 05:27 PM
Something weird is happening. The game is going too fast…?
To be more specific, there’s too much progress each frame. I’ve been investigating the incomplete pass problem, and it’s not a ratings or formula problem. The problem is the ball. It’s moving too fast.
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pass1.png
Here’s a good example. The QB just threw the ball from the upper left of the picture. In the next shot, you can see it’s been a few frames, and the ball is nearing the pass location. (the yellow spot)
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pass2.png
You wouldn’t expect to try to make the catch yet. I would imagine that’s going to be the next frame or 2.
Well……..
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pass3.png
That’s the next frame. He’s already missed his chance.
Something is going on here, and I don’t really know what. I have a feeling it wasn’t happening before, but the engine was in such sad shape that it’s impossible to know. Somehow I need to slow the ball down without giving the defense too much reaction time.
I have to slow it down, without slowing it down.
sheesh.
I have a few ideas, but no clue if they will work.
I could try to reduce the movement per frame. Keep the frame rate, but have everything travel less distance per frame. Basically slow the whole game down. That doesn’t sound like a great idea, but it’s possible.
Slow the ball down. I’d have to do something about player spacing and reaction time. This feels like a trap, though. It probably would fundamentally change the game, which is just starting to feel pretty good.
Change how passes are caught. Right now, catch attempts are done in the player AI. That’s not the fastest thing in the world. Maybe if I can take catching out of the AI and put it in a collision system, there’s some opportunity there to do…..something? I don’t even know what this would look like. Something having to do with colliders or triggers.
Use some predetermination system to decide if anyone is going to catch the ball, before it gets there. Then I’d just need to auto-assign the ball to the player when he reaches the intersection point. Feels like cheating, though.
This is going to take some thought. I really have no idea what’s the right thing to do here.
GoldenCrest Games
09-03-2017, 11:49 AM
Before I get to the game, I think I solved the pass catching issue. I basically reduced the pass velocity a little bit, and compensated by reducing the gravity. Since I only use gravity for ball flight trajectory, there’s not other impact on the game. By messing around with this for a while, I found that it’s really the gravity that was causing the issue. The ball was falling to the ground too fast near the end of its flight, causing the player AI to miss the catch opportunity, and causing a ton of incomplete passes that had nothing to do with player ratings.
Once I fixed that up, I fired up the game against the Pinks.
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pinksOff.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pinksDef.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/pinksST.png
Score: Greens win 56-7 with 79 plays.
Frankly, the Pinks are atrocious. The offense has a little success running to the right, because my DE2 is terrible. Other than that, they couldn’t do a thing on offense or special teams. Their defense was fairly stout, except for trying to contain WR1 Jarmon. He’s just on another level. 6 receptions on 6 targets for 169 and a TD. Jarmon also took an Int back for a TD.
The Pinks special teams coverage is flat out embarrassing. Urquhart had 1 KR for 90 and a TD, followed by 3 PR for 74 yds before I took him out. He almost housed all 3 PR, but the last guy caught him. I put Sturgeon in and he managed 2 PR for 169 and 2 TD, despite being rated 28 in KR.
You’d think that KR and PR are broken by the stats, but nobody else seems to be able to get solid returns on the Greens. I’ll start looking at the blocking and coverage over the next few games, to see what the difference is. It can’t just be returner speed. (maybe overall team speed?)
With the newly implemented pancakes, the current pancake leader is DE1 Acker with 12. He dominated the LT of the Pinks every play, which is why they had to run right exclusively.
Notes:
I’m starting to feel like the top end speed is a little too fast. Guys who run in the 410+ range for speed are looking a little out of place. It’s hard to describe, but it doesn’t look quite right. I’ll have to start taking note of the weird looking speed for future adjustments.
The QB reading for open WRs is off. If they have the time, the QB almost always correctly identifies a wide open WR. It’s the guys in traffic that often get thrown to when they shouldn’t.
Huge plays are starting to annoy me. Nothing looks out of place during the play, but I’m getting frustrated with every scoring play being a 20+ gain. I’m wondering if my defense AI is too aggressive. It’s like one missed tackle and the guy is gone. I should see if there’s a way to be a little more conservative.
Eventually I’m going to have to tighten up how I control the game situation. Now that I’m paying attention, I’m seeing there is too much chance of going “off script” and making the game flow weird. (like calling kickoff on 2nd and short)
The list:
To be attempted before the next game
QB reading the openness of WRs update
Address huge gain plays somehow. (more conservative defense?)
Fix the kick return catching glitch
[DONE] Really look into the QB scrambling system
[DONE] Dig into the dropped passes
[DONE] Track pancakes
In-game interface for down/dis/score
[DONE] Add more running plays
For later:
Start to narrow down what the right top-end speed limit is
Figure out why the Greens special teams rock so much and everyone else sucks
Tighten up game situation control
Depth chart refresh
New camera control
Figure out what to do about blocks being too effective. (guys not breaking free of blocks)
Look at shrinking the field size to reduce the breakaway running time.
GoldenCrest Games
09-06-2017, 07:58 AM
For the final regular season Greens game, we take on the Blues
http://www.goldencrestgames.com/wp-content/uploads/2017/09/bluesOff.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/bluesST.png
http://www.goldencrestgames.com/wp-content/uploads/2017/09/blulesDef.png
The Blues drafted for offense, and they look scary! I just made major updates to how the QB sees open WRs, so taking on Major Hecker should be interesting…
It wasn’t. 🙁
We ended up winning 63-21 in 70 plays. It was really a QB show, however. That was kind of cool to see. Our QB Thurber went 5/11 for 304 and 4 TD while Hecker went 6/15 for 179 and 2 TD. Both QB were seeing the open guy and making great decisions the whole game. The only reason the stat lines weren’t doubled, was because of dropped passes. That’s really starting to become a plague on the season. In this game, there’s no excuse for dropped passes. Hecker is starting an 81 and 79 at WR1 and WR2. Dropped passes shouldn’t happen for open WRs that good. That’s something that needs to get fixed.
Hecker also had a hard time with DE pressure. (Much harder than Thurber) Hecker has the best OL in the league, so he shouldn’t have had a problem at all. In fact, the Blues OL should have been killing me all game. I did a decent job of getting to the QB and I bottled up the running game pretty well. I should have been getting my — handed to me.
It really comes down to speed. Speed is killing everything else right now. My DE speed is too much for the OL to handle. My blitzing LB speed can’t be adjusted for either. In fact, that’s also why my special teams is so dominant. This game I made a point of not watching Urquhart (dominate again) but instead watched the special teams coverage and blocking. I also swapped out all my good ST players for speed, to test my theory. We dominated again, while the Blues struggled. Speed is the difference. My blockers get to almost every block, almost every time. If you look at the field from high, it’s often set up perfectly with a green blocker on every blue guy. All Urquhart needs to do is weave his way through the traffic. Even if my blockers are getting pushed around, they hold their blocks.
That’s another thing about speed, fast blockers stay in front of the slower defensive guys. The Blues blockers that successfully make a block, will often lose their guy eventually. The faster Greens defender can break free or run around the block to make the tackle. That’s what I see on special teams, and I think it’s what is happening on offense. Even if the OL makes a block, my DL speed can adjust. Pancakes help a little, but it’s not fundamentally fixing the problem.
Re-reading all that, I make it sound like speed ruins the game. That’s not necessarily true. Honestly, there’s nothing wrong with this game being 80% about speed. I actually like the idea that there’s a real difference between fast and slow guys. That’s one thing I hate about Madden, NCAA football, and NBA 2Kn. There’s just not a meaningful difference between speed ratings. The problem in this game is that I need to find a better way to handle that speed difference. I can’t have OLs getting killed by crappy DL, or have ineffective ST players. Skill has to also mean something.
I went into the Blues game planning to take on the defense AI for my next batch of games. Now, I’m not so sure. The Blues struggles with low-skilled high-speed players exposed a flaw that probably needs to be corrected before I spend a ton of time in the defensive AI. I’ll stick with the Blues for the next round of games, and try to address the speed/skill imbalance.
My list of items to get fixed is getting pretty nit-picky, too. I’m keeping a trello list instead of trying to log it in the blog. (it’s public if anyone is interested regen3 trello (https://trello.com/b/S4e1GPU4/regen3)) I’ve been thinking of what needs to get fixed, in terms of how I’d draft a team if I were starting a league. It might seem weird, but it help’s me see the state of the engine at any moment in time. When I look back on these posts, it might be a better way to measure progress.
Here’s how it works. If I were to draft a team today, what would I look at and how would I draft?
Draft Strategy
Round 1: Pick Urquhart. (Sort all players by speed, and pick the top skilled KR/PR)
Round 2: Sort all players by QB skill, and pick the fastest one near the top
Rounds 3-5: Sort all players by speed and start drafting the highest skill at WR or RB until I had 2 WR and 1 RB.
Rounds 6-12: Draft the highest speed available until I fill out the roster. Disregard positional skill completely.
A couple of other items that we’ve been tracking. A 15 minute (70 play) game feels a little short. I think we’re going to need at least 100 plays. I’ll start going 100 plays, and see how that feels. Also, top end speed (450) is definitely too fast and the low end speed (150) is definitely too slow. I’ll keep tracking to zero in on the right range, but as of today it looks like 200-425.
GoldenCrest Games
09-09-2017, 08:37 AM
This is another one of those “I might want to look back and see why I made these decisions” kind of posts. (I have a poor memory)
Pass blocking has been a huge pain in the butt. The Greens team is a perfect example of why it’s not only “off”, but completely broken. I simply have too much team speed, almost no defensive skill, and I’m able to dominate the line against the Blues. That just shouldn’t happen.
I spent a lot of the last 2 days’ worth of keyboard time trying out different ways of fixing the problem. Pancakes was an option I implemented last week, but it’s already annoying me. I hate seeing players get run over constantly. It doesn’t seem like football anymore. I lowered the pancakes down to a realistically rare level, but the blocking problem remains.
My first attempt was to implement decision making time into pass rushing again. The theory was that pass rushers would take bad angles and run themselves out of position, allowing the OL to maintain proper blocking position. It really didn’t work. The fast DEs would run out of position, but they are so fast that it often left them with an easy path to run past the OL. Even if it wasn’t perfect, it was often good enough to get the QB. Not only that, but it just looked weird.
The second attempt was to increase the blocking (collider) range of skilled OL. That kind of worked, but the DL were often able to adjust and slip the blocks to get around. In the end, it really didn’t change anything.
I also tried making massive power increases with both of the first options, but it made no difference. Power only seems to show up in run blocking and special teams.
So that made me rethink how I was handling pass blocking. All I really want is for blocks to matter, and for the skill of the blocker to be more important than speed. After all, most great OL are going to be slower than great CB/WR/RB.
So I came up with a block engagement system. Here’s how it would work. When an OL is blocking a DL, they are put into the block engagement system. While in that system, the normal ratings don’t apply. There’s an adjustment in this system that takes into account blocker and defender skill, and moves the effective ratings around to model the way it should work. Ex: The Blues 100 OL would engage with DL Tolliver who’s rated around 40. While those guys are battling, the Blues guy’s skill would nullify Tolliver’s speed and it would look as if Tolliver was a 200 speed guy instead of a 400 speed guy. (throw in per-play randomness to keep it interesting) If Tolliver broke away from the block, he’d automatically be back at peak ratings performance again.
It’s kind of cheating, but not really. 🙂
I ran a bunch of tests between the Greens and Blues, to try it out. The Greens have a poor OL and a fast DL. The Blues have an insane OL and some ok DL. When the Greens had the ball, nothing was dramatically different. I ran 10 long pass plays and got sacked on around half of them. That’s expected from my team. I have no OL skill at all. When the Blues had the ball, I ran 10 pass plays and had 0 sacks! Not only were there no sacks, but there wasn’t really any pressure at all. The game felt right, and the players didn’t’ look weird either. It just looked like the speedy DL were getting handled by better OL.
Nice! I think I got it! I might want to add this into the special teams blocking, too. It might fix that problem as well.
GoldenCrest Games
09-12-2017, 07:40 AM
Made a bunch of updates to the engine over the last few days:
Zone defense a little more conservative in coverage
Man defense a little more conservative in coverage
Man and Zone defenders don't react immediately to running plays. Reaction time based on skill
Defenders don't dive into the line to get at the RB. They try to move laterally until there's a path to get at the RB
Block engagement system implemented for pass blocking and run blocking
Special teams coverage improved
Dropped passes reduced to a more realistic level
Missed tackles dropped to a realistic level
Pancakes reduced to a non-annoying level
Defenders don't try to cover receivers that pass block
With all the new updates, I thought it was a good time to run a couple of the Blues games. Just sit back and play, to see what pops up.
Week 6: Blues vs Reds
Blues win 42-14
The good:
The good part of the game is that there were a lot fewer huge plays. Over the whole game, we only had 3 30+ yard plays. One KR, one pass, and one run. That's a pretty big step. The pass blocking was legit, too. The Blues OL did a great job against the Reds. They got a couple sacks, but overall I was pleased. I also started picking up on a few things I hadn't noticed before. In the running game, teams are having a lot more success against Man defense. When the defense switches to Zone, they usually have an easy time holding the RB to small gains. However, zone defense is getting beat in the passing game pretty regularly. Man defense is having much more success defending the pass. Not good or bad, just interesting.
Now for the bad:
The Reds offense was embarrassing. I get that they were a defense first team, but no team should look that bad on offense. 90% of the plays were either no gain or less than 3 yards. Come on, the Blues don't have a stellar defense. The Reds should have been able to get something going.
Also, kick returns still are still a little overpowered. Not all are going for TDs, but I can tell that Urquhart would have housed at least 4. It's looking like edge containment is the problem. If the KR can get to the outside, he's usually got a pretty clear path.
Week 7: Yellows at Blues
Blues win in overtime 28-21!
The good:
This was a fun game. It was more of a defensive struggle than I expected. For some reason, the Yellows DL was getting to Hecker regularly. I couldn't figure out why, because the Blues OL is dominant and the Reds couldn't get this kind of pressure. I'll have to look at the ratings to see if there's a clue... It made me adjust my gameplan, which is kind of fun to see. Again, there were very few huge plays. Whenever there was a catch, there was usually someone in the area to quickly make the tackle. The one area the Blues were able to exploit was the WR1/CB1 matchup. If I could get the Blues WR1 on a quick slant, he was usually able to turn it upfield for a pretty nice gain. The speed difference was a killer.
The bad:
I found a ton of problems with this game. There's something that broke the Yellows passing game. Early on, it looked fine, but when I made defensive coverage adjustments with the Blues, the Yellows QB just broke. He'd sit in the pocket forever, just cycling through WRs. He never took off running, and could never find an open WR. It makes no sense. Hecker took off running a few times, so I know scrambling works. Why the Yellows QB won't run, I have no idea. Also, the Yellows OL was getting pushed into the QB a lot. This was causing the QB to "slide" around. It looks like he's standing on ice. On one play, he actually slid backwards 20 yards before getting sacked. wtf?
There was also something weird with the KR game. The Yellows KR was extremely effective, way above his ratings. The Blues had a hard time containing him. That's weird.
Overall not too bad. I'm happy with how the engine is coming. I have to tighten up some of the QB AI and special teams, but it's looking pretty nice. I should accomplish everything I wanted to in Exhibition Season 1 before the playoff game. I'm starting to draw up the Exhibition Season 2 and 3 goals now, and it looks like that's all I'm going to need. If everything goes well, we'll then move on to real seasons!
GoldenCrest Games
09-15-2017, 07:39 AM
Just finished up the games with the Blues. Today we played the Purples and the Pinks.
Before getting into the results, I should mention that the stint with the Blues was largely a success. I took on the Blues to tighten up offense, and it's safe to say that it's light-years ahead of where we were during the Greens games. I just updated the run blocking logic and now both pass and run blocking are really effective. In fact, they might be a little too effective.
Granted, I'm using the Blues team, who have the 3 most elite OL in the league. :)
For run blocking, I changed how OL select their block targets. Before, I was using a really simple "who's closest" system based on identifying key defenders that need to be blocked. Now I use a system that figures out the angle between the point-of-attack and the key defenders, and then figures out who the best OL is to make the right block. After that block is determined, it goes down the list of defenders until everyone has a blocking assignment. (all pre-snap) Post-snap we just go into the open-field system.
Once the blocking AI was updated, I really needed to redesign my running plays to take advantage of new blocking schemes. If you don't pay attention to where you line blockers up, and where the PoA is, you'll get weird blocking responsibilities.
Now on to the games!
Week 8: Blues vs Purples
This was a fun game. The Purples have a lot of weird players that have skills I wasn't prepared for. In the end, the Purples rolled us 21-42. I had no answer for the Purples RB and special teams. The Purples special teams is so good that their KR was able to house a kick, even though he has (at best) average speed! It seemed like it took him forever to get there, but he slowly bobbed and weaved his way through the excellent ST blocking until he finally plodded into the endzone. I'd never seen a slow guy take back a kick until today. It was pretty funny.
The Purples also had some success with their running QB. Halfway through the game, I started calling plays I knew would result in the QB taking off. It was actually fairly effective.
Week 9: Blues vs Pinks
Once again, the Pinks were atrocious. We were up 56-21 after about 10 minutes when I called it. Frankly, it stopped being fun. Something in fundamentally wrong with the Pinks. They suck at every aspect of the game. I'll have to dig into it after the season and figure out what the difference is. On offense it didn't matter what play I called, it was almost guaranteed to be a first down. On defense, I just had to try and not let them break a run. The home-run ball was their only hope.
In the arms race between offense and defense, the offense is clearly winning. Now that the games with the Blues are completed, I'll take over the Reds for their 3 remaining games and try to tighten up the defense. After that, we only have 3 games left in the season!
Based on the engine updates made while running the Blues, here's the new draft strategy:
Round 1: Draft Urquhart
Round 2-3: Try to get the 2 most skilled OL to play the tackle positions. Try to get OL with DL skill
Round 4: Either get a highly skilled QB or RB.
Round 5-7: Make sure I have 3 skilled OL and 2 skilled DL. If I'm filling DL, try to get fast ones too.
Round 8-9: Get the fastest WR and CB with skill. Make sure I have a serviceable #1 for WR/CB (don't need to be the same guy)
Round 10-12: Fill out defense with skilled players, speed is secondary, ignore strength.
GoldenCrest Games
09-17-2017, 04:49 PM
I don't have a lot of mental energy on the weekends to do hardcore programming, but I was able to play around with the depth chart screen!
I really like the functionality. I can move players around while looking at the formation and play, which is really useful. (not to mention just being able to see who is lined up where, and the speed/power of who I'm lined up against)
I still need to refine the colors and the panel transparency, but it's definitely going in the right direction.
http://www.goldencrestgames.com/wp-content/uploads/2017/09/dcNew.png
GoldenCrest Games
09-20-2017, 06:27 AM
Reds vs Yellows
Just for recap, the Yellows drafted for 2-way players and the Reds were all defense. That being said, the Yellows dominated this game defensively!
Final score: Yellows 14 - Reds 0.
That's right, 0 points. The first ever shutout. Granted, if I'd put field goals in the game, the Reds would have gotten a couple of those. We moved the ball a couple drives, but just couldn't punch it in.
The Yellows just had too much talent on both sides of the ball. It didn't show up against the Greens because WRs were so bad, but now the Yellows passing attack is really hard to stop. With the upgraded defensive AI we were able to stop the homerun ball, but my poor Reds just got dinked and dunked all the way down the field. The score would have been a lot worse if it weren't' for several goal-line stands we pulled off.
Here are a few things I learned from the game:
1. Speed is the #1 rating in this game, there's no way around it. The Yellows were faster than the Reds, and it really showed on the field. Even though my defense is extremely skilled, I had to run a zone almost all game to deal with the difference in speed. On the other hand, the Yellows were able to stay in base man defense and blanket my receivers. That allowed them to send blitzers and kill any passing attack I was able to get going. For Exhibition Season 2 I'm going to have to tightly control the distribution of speed, and use it appropriately in the draft.
2. I need field goals. I really wanted to turn punts into a potential scoring play, but it's not going to work. It got really frustrating to get inside the 5 and have no options for salvaging a few points on 4th down. Punting from the 5 just seems stupid. I'm going to have field goals in before the next Ex-Season.
3. The overall skill level of the league sucks. Frankly, I didn't make enough good players for this season. I'm ok with every team having scrubs, but this is ridiculous. Every team on the field is made up of 1-2 studs, 1-2 average guys and 4-6 complete garbage players. (not to mention the 4 guys that were so bad they didn't even make it on the field) That's just not going to be fun. That's probably also why there are so many huge plays. If I spread the talent out more, the game flow will probably be better.
4. Play design is going to be important for defense. I'm already seeing that I ignore a couple defensive plays because they put my players in bad spots, and it shows up on the field. I didn't really put a lot of effort into defensive plays because it never really mattered in Madden/NCAA/2K. With 8 guys instead of 11 on the field, each player's positioning and coverage really matter. When I was designing an 11 player game, I could just throw 11 guys out there in any fashion and have a reasonable defense.
There are a couple things to tighten up before I run the next game. (mostly having to do with bad RBs pausing at the line of scrimmage and scrambling QBs)
If nothing crazy pops up, I should be able to finish off the Reds games this week. That just leaves the last 3 games of the season for special teams refinement, and then we're at the championship!
GoldenCrest Games
09-21-2017, 07:01 AM
Reds vs Purples
This game went into overtime, where the Purples finally pulled it out 2-0.
That's not a typo. 2-0. Technically, I don't have safeties in the game (I completely forgot about it) but the Purples made a run-stuffing tackle in the end zone to "end" the game. I have to give them credit for that.
Both teams moved the ball a little but, but couldn't seal the deal. This is another game where field goals would have made the difference. (definitely coming in Ex-Season 2) It was kind of nice to see a whole game without a 30+ yard breakaway. There was also a nice mix of passing and running.
One area that didn't look right was the QB scrambling. It might be a ratings issue, but they QBs look really dumb when trying to take off. They run into the line, then run away, then spin around, then try to run again.... then get tackled. Granted, the Reds DL is pretty good, but the Purples scrambling QB should have been able to do more. I'll have to dig into that before the last Purples games.
Other than that, most of the remaining items are probably going to be done in the offseason. The last few things on the list have to do with game-flow and big changes like field size, field goals, ratings balance, play design, safeties ...etc. If I can get the QB scrambling thing down, before the end of the season, we can call Exhibition Season 1 a success.
4 games left!
GoldenCrest Games
09-21-2017, 07:18 PM
Reds vs Pinks:
Reds lose another one. 7-14. The Reds have a stellar defense, but the offense just can't sustain a drive and punch it in. The Pinks are generally pretty bad, so I was really trying to figure out what's wrong with the Reds. Obviously the team speed is an issue, but we can't run the ball, either. In fact, the Pinks had more success running against the elite Reds defense than the Reds could get going against either the Pinks or Purples. (both pretty bad teams)
Thanks to the new depth chart feature, I was able to figure it out! I shuffled the OL around a few times until i started getting some success on the ground. The difference was power. I've never been looking at power before, but now I'm seeing it in the depth chart screen, and it makes a big difference. 2 of the top 3 OL for the Reds have a 1 power rating. Most of the top DL/OL are in the 7-9 range. That's a huge difference. We're getting no push at all, and my line is getting pushed back. They are also getting pushed back into the pocket on passing plays, which is killing my scrambling.
wow. As it turns out, your line needs to be strong! :)
Well, it also helps to have a QB that can get the ball in the same zip code as the WR. All of the Pinks points were on turnovers. The first TD was on a interception return for TD. The second was an Int that was returned to the 7 or 8, and then punched in a couple plays later.
One other thing that happened in this game is that I started relying on some of the other plays that I'd been ignoring. With no downfield passing game, I started running a passing play that has the RB swing out of the backfield. I almost never run this play because most of the time the RB catches the ball and gets tackled behind the line. However, with the Reds, there aren't many other options. It actually made some positive yardage. It was interesting to be forced into adjusting my play calling, and then to see it start working.
Almost like a real game!
3 games left! All between the Purples, Pinks, and Yellows.
All 3 teams have a shot at the championship. The Greens have locked up the top spot by going 5-0. The Blues have finished all their games and are 3-2. The Purples are 1-1 with the Pinks and Yellows at 1-2.
The tiebreaker is going to be point differential. The Pinks and Yellows are fairly negative right now. It looks like the Purples are going to be the favorite on the strength of the 42-21 win over the Blues in week 8.
A Purples vs Greens rematch would be fun! That was a close one last time.
GoldenCrest Games
09-22-2017, 07:12 AM
Purples vs Yellows
Purples win 21-0. This eliminates the Yellows from playoff contention. It's down to the Blues, Purples, and Pinks for the remaining slot.
The Purples have that great running QB, but I think there's a timing issue in my scramble AI that causes him to stay in the pocket too long. I abandoned that strategy pretty quickly and went to a straight-up ground game. After 3 drives, I found the weakness in the Yellows defense. Runs to the left seem to have a lot more success than any other, so I put the hammer down and kept going. The Yellows threw every defense possible at it, and had very little success in slowing it down. There is a play that blitzes off the left that sometimes worked, so they were forced to keep calling it. Eventually the Purples started varying the offensive play call and ran to the right, which nullified any hope the Yellows found.
On offense, the Yellows didn't have much. They have a couple nice WRs, but the QB is so bad that it just didn't work. 2 deep Ints broke the back of the Yellows offense. The Purples turned those takeaways into 10+ play drives and ate up the game clock.
Overall, a pretty fun game. No special teams excitement, which is kind of a bummer. We'll probably have to wait for the Greens and Urquhart to take the field to see that again.
2 games left!
JonInMiddleGA
09-22-2017, 09:48 AM
This may have been mentioned/discussed previously, if so I apologize for overlooking it.
It's also something waaaaaaaaaaay the hell down the road, so apologies for that too.
But ... just looking at your depth chart screens, the rating at every position & so forth, I couldn't help but think how that approach would make a darned good base for a high school football game.
GoldenCrest Games
09-22-2017, 04:24 PM
This may have been mentioned/discussed previously, if so I apologize for overlooking it.
It's also something waaaaaaaaaaay the hell down the road, so apologies for that too.
But ... just looking at your depth chart screens, the rating at every position & so forth, I couldn't help but think how that approach would make a darned good base for a high school football game.
I'd planned on a college version, but I hadn't thought of a high school version.
I imagine a high school version could provide for some really interesting and varied gameplay. Each level of football would require a different management/coaching focus, and could create a completely different experience around the same engine. Besides, it would be fun to see your high school stars move on through college and then maybe to the pros.
There's a lot of potential there!
JonInMiddleGA
09-22-2017, 04:51 PM
I'd planned on a college version, but I hadn't thought of a high school version.
I imagine a high school version could provide for some really interesting and varied gameplay. Each level of football would require a different management/coaching focus, and could create a completely different experience around the same engine. Besides, it would be fun to see your high school stars move on through college and then maybe to the pros.
There's a lot of potential there!
The campaign mode would get awfully complex -- the need to account for not only skill development but actual physical growth at a considerably larger scale than needed for higher levels/older players, just for one thing -- but seeing the players laid out more as athletes (that you had to determine how to utilize) instead of players with fairly well-defined positions/roles, it fit perfectly with a discussion I had a few days ago about how one of the real challenges at small/medium sized high schools (think: rosters of 30-60 players) was figuring out how to allocate talent to each side of the ball*. Then on top of that, how much/how little to use players on both sides of the ball once their primary roles are set. It's not unusual to have your best QB also be your most capable LB and no worse than your second best RB ... but at the price of fatigue, increased injury risk, and diminished practice time.
It'd be one helluva expansive model to get right, but your basic concept seems like it would lend itself to tackling the problem.
*my HS alma mater is currently averaging around 40 ppg through four games ... but giving up nearly 45 ppg, which would be the worst scoring defense in the 60 year history, by a fair margin. Basically the offense has all the experienced players and most of the talent, the defense is playing as many as nine Fr/So at a time, the tradeoffs are rather obvious.
GoldenCrest Games
09-22-2017, 06:05 PM
Pinks vs Yellows
What a difference it makes when you're not playing against the Reds defense! The Yellows dominated this one 35-7. The Pinks couldn't slow down the Yellows offense at all. It was a completely different feel than when the Yellows were up against the Reds. While the Yellows QB has a really hard time with the deep ball, he's great at the 0-10 yard range. I just ran a bunch of drags and slants for the fast WRs, and worked my way down the field.
It's a little hard to believe they are eliminated from the championship, after playing them against the Pinks. But hey, that's how Exhibition Season 1 rolls. :)
That officially eliminates the Pinks. Now it's down to the Purples and Blues. Frankly, unless the Purples get completely blown out here, they get in. The Purples are 3-1 now with the Blues at 3-2. The Blues have a +2 point differential while the Purples are currently sitting at +37.
I think it's safe to pencil them in.
GoldenCrest Games
09-22-2017, 06:36 PM
In the last game of the regular season, the Purples took on the Pinks.
This was a surprisingly ugly game. I had assumed the Purples would roll over the Pinks, but they barely pulled it out 14-7. Not much offense on either side. There was one section of the game where both teams traded '3 and outs' about 6 times before someone got a first down. Just plain ugly. Honestly, I was pretty happy when it was over.
However, the Exhibition Season 1 title game is set! Greens vs Purples.
GoldenCrest Games
09-24-2017, 12:17 PM
We made it to the championship of Exhibition Season 1! After it all shook out, the final game is between the Greens and the Purples. The Greens were 5-0 with the Purples going 4-1. The lone Purples loss was to the Greens in week 3 42-35.
The engine went through a lot of refinement over the season. I think we ended up in a good spot, which allowed me to get through the rest of the season pretty quickly, and with few engine changes.
On to the game!
Purples kick off to Urquhart, who quickly gets tackled. .... uh oh.
Greens try to move the ball on the ground, and end up with a quick 3 and out.
Purples get the ball, and rely on their running game all the way down the field for a TD! oh no, we're in trouble.
Urquhart takes the kickoff and houses it! We're back in it!
We shift to a zone defense to contain the run, and force the Purples to a 3 and out.
Urquhart gets tackled quickly on the PR. grrrrr.....
Since running didn't work, we take advantage of WR Jarmon's speed and go to a quick passing game. It pays off as we drive down the field and score! 14-7 Greens
I'm sticking with the zone blitz defense to stop the running game. The Purples are going to have to throw if they want to win. It doesn't work. The Purples QB had happy feet and tries to run the ball instead of being patient. 3 and out.
Nice return by Urquhart, but he gets tackled around midfield. He made a sick juke between two free defender that I really wish I had on video!
Purples shift to a zone to try and contain Jarmon. It works, but my dink and dunk offense slowly marches down the field until we find WR Martindale in a hole on the zone. He makes a nice catch and stretches over the goal line for a TD. 21-7
The Purples completely give up on the pass and dedicate themselves to the run. The Greens just have too much team speed to throw on. 10 plays later they reach paydirt. 21-14
Urquhart gets tackled on the KR by the first guy down. :(
Jarmon beats the zone deep over the middle on the first play for a TD! 28-14
On the Purples drive, we make a mistake on 3rd and short, and try a man-blitz. The Purples block it easily and break the run for a TD. 28-21
Urquhart gets tackled on the KR by the first guy down. again. :( :(
We hit another deep pass to Jarmon (in double coverage). I think I got a little cocky because I tried to hit the homerun on the next 3 plays, and get forced into a punt.
Purples are backed up inside their own 10. I had some pretty good run defense, and was making the Purples work for their first downs. Then the Purples RB broke my Safety's ankles with a crazy juke, and broke it for a long TD run. 28-28
Urquhart gets tackled on the KR by the second guy down. COME ON MAN!!!!! :( :( :(
I'm playing tight now. Calling a lot of safe plays as we slowly march down the field. Eventually, Jarmon breaks free on a crossing route and turns it upfield for a TD! 35-28
Purples need to score on this drive. The end of the game is coming up pretty soon. They have a 4th and 2.3 near midfield....... they have to go for it. Bread and butter play, power sweep to the left....
...
ugh. We give up 10 on that play. Drive alive.
NOO!!! We have the RB bottled up in the backfield for a big loss, when he spins and runs back across the pile in the other direction to wide open field. TD. 35-35
We went over 75 plays, so next score wins.
Urquhart gets the kick and makes the first guy miss. He weaves his way through the blocks and breaks into the open field!! YES!! YES!! YE-
NOOOOOOOOOOOOOOOOOOO!
Urquhart got caught from behind!!!! WHAT? That can't happen!
Urquhart gets stopped at the 6. ok, 6 yards. we can do that.
Power left for 2 yards. Ball on the 4.
Off tackle right for 3. Ball on the 1.5.
Dive. Loss of 0.3. 4th and goal on the 1.8
o...m....g...
I don't trust the OL in power situations, so I'm calling a quick slant to Jarmon. Besides, the Purples are selling out on the run.
He's open! The throw is away! Batted down by the CB. :(
Purples have the ball on the 1.8
Maybe we can end this on a safety. Afterall, the Purples won a game on a safety.
We're sending the house.
We get to the RB in the end zone, and then he breaks the tackle and scampers up the sideline to reach the 20. Grrrr....
8 plays later, we end up forcing a punt near midfield!
Urquhart catches it at the 11 and........ gets tackled by the first gunner. COME ON!!!!!
F this. We sub out Martindale and put Urquhart in. If we're going down, it's with Urquhart and Jarmon flying all over the field.
Urquhart is open on a deep cross, and Thurber fires it.... about 8 yards overthrown. NO!!!! It gets picked off by the Purples safety! Turnover!
7 plays of power right, toss left, and the Purples work their way down the short field for a TD. :(
Purples win the Exhibition Season 1 Championship 42-35.
I'm a little sad my Greens didn't pull it off, but it was a pretty fun game. Overall, I think the biggest problem with the engine right now is speed. Everything else looks like it might be pretty good. Shrinking the field might be a good idea, too. I'll have to look into that for Ex Season 2.
Here's the final TD. :(
http://www.goldencrestgames.com/wp-content/uploads/2017/09/finalTD.png
GoldenCrest Games
09-29-2017, 05:10 PM
The prep for Exhibition Season 2 is cruising along! I’ve cleaned up a lot of the bugs found in Ex1 and I’ve started putting some serious time into special teams. There’s a lot to be done here. Kick returns were being brought back for TD at an alarming rate, special teams defenders had almost no chance against decent blocking, and the punt return team had all the discipline of a box of kittens. It also become pretty obvious we need field goals.
I’m going to spend the next few days concentrating on special teams. Here’s the priority list of what needs to happen:
Add field goals. I’ve already got most of the field goal stuff working. The offensive and defensive plays both work, and the scoring gets updated as it should. I still have to add the ability to block FGs and fine-tune the kicker skill effect. Right now a 100 rated kicker will regularly hit 65 yard FGs, while a 1 rated kicker will have a hard time with extra points. Seems reasonable, but I need to make sure it feels right in-game.
Fix punts. There’s something off with punt return blocking and coverage. It just looks weird. I also realized I never adjusted punting for kicker skill. That has to get fixed, too. While I’m at it, I’ll add in the ability to block punts.
Fine-tune kick returns. Kick returns are pretty good, but Urquhart is way too effective. I think the problem is the coverage unit’s ability to break off blocks. If I can get them to break off blocks a little better, we should see more free defenders to attempt to catch Urquhart. If he still houses kickoffs, well that’s on the defense…
After the special teams overhaul is done, I can move on to the new play calling interface. From there, I should be able to tackle the draft screens and then it’s off to Ex2!
GoldenCrest Games
10-07-2017, 09:25 AM
Before we get into the play calling stuff, it’s been a while since I’ve logged progress so there are a few things to catch up on.
Special teams needed the most work, coming out of Exhibition Season 1. I really made an effort not to call ‘good enough’ on the special teams upgrades until I’d be happy with them being included in the final game. It took a lot longer than I thought it would, but I think I finally got there.
Fieldgoals. I finished up field goals and made sure kicker skill mattered. Kicker skill is used to determine max FG distance and accuracy. I played around with this a lot, and I like the scale where a 100 rated kicker should be able to hit a 65 yarder while a 1 rated kicker’s max range ends up being an extra point +1 yard. If there’s a missed FG, the ball is turned over at the LOS. (I never really liked the rule where it’s the spot of the kick.) Also, the blocking went through a few iterations but I like where it landed. I started with a run-blocking style system, but it didn’t really look right. Pass blocking was weird because the line spread out too much as defenders were trying to get through. In the end, I was able to manipulate the pass rushing and pass blocking systems to look for a point 1 yard in front of the kick spot, as if it was the QB. That seemed to work pretty well, and the FG units look pretty damn good.
Punts. The punt coverage and return blocking didn’t just look off, it actually was wrong. There were a couple bugs in the punt gunner AI and in the punt return blocker AI. Now the gunners will try to fight past the blocker at the line instead of just giving up and getting blocked. The deep punt return blocker will also look for a block instead of running off in a random weird direction. (that was a strange one) I also updated the punting to take kicker skill into account. It works basically the same way the FG system does. 100 rated kickers will be able to punt the ball 65+ yards while the 1 rated punters will be able to rip off amazing 10-12 yard punts. There’s also a little bit more of a departure from NFL/NCAA rules when it comes to the punting game. I made a few changes to keep the game interesting. (mostly to reduce annoying turnovers and pointless breakaway TDs)
Any punt that isn’t fielded cleanly, is downed where it hit the ground. No weird fumble rules or picking up the ball at the last second to run past the defenders. It’s just down and you go on offense to earn your points.
Any punt that lands on the ground in the endzone is a touchback. I was initially going to call it a safety and use punting as an offensive weapon, but it ended up being dumb. The game flow felt better when it was a touchback and you just went on offense.
If you field a punt in the endzone and get tackled in the endzone, it’s a safety. I kept this part of the offensive punting system because it actually happened to me, and it was pretty exciting. I can’t think of a lot of times where you’d punt into the endzone instead of kicking a FG, but it’s there. Maybe if you were just on the edge of FG range and weren’t confident in your defense, but had a couple really great special-teamers? Anyway, it adds to the fun of the game, so it’s staying in.
A blocked punt is down where it lands. (could be a safety) The defense can’t return blocked punts for a TD. I think blocking the punt is enough. I always hated seeing the defenders get a free run at the endzone after a block/recovery.
Kickoffs. Kickoffs have also had kicker skill implemented. 100 rated kickers can hit the endzone while 1 rated kickers can get the ball to go 10-15 yards. I also played with the blocking/defense and couldn’t find the sweet spot. Kick returning is my best looking play, so I didn’t want to mess with it too much. What I ended up doing is shrinking the field. I had an idea I’d eventually end up doing this, but I put it off until I was really sure. I was hoping I’d get to use the pre-made stadium and field assets in the asset store, but the NFL size field just isn’t going to work. Luckily, I have a lot of modeling classes over the last/next few months, so I should be able to do it myself. I ended up going with an 80 yard field (plus 10 for each endzone) and 45 yards wide. So far, it seems to work great! The slightly narrower field is making it harder to find open space, while not making it feel “off”. Urquhart is still able to house kicks, but they look far more impressive than before. If he takes one back, it’s because he (mostly his blocking) have really earned it.
Smaller field. I put the smaller field in place mainly for kickoffs, but it’s working great for normal play. Breakaway plays don’t feel as long or annoying as before. Also, defenders don’t have as much field to cover so they make more plays. Overall, it’s going in the right direction. Eventually getting stadiums and nice looking fields is going to be more work, but it’s going to be worth it,.
On to play calling!
I set up the new play calling system to be able to work with the upcoming coaches system. The basic idea is that you have to hire a coach for your team, and that coach comes with a playbook. The only control you have over which plays you get, is who you hire as a coach. The reason I use this system is because I want each team to have different style of play. I can control style of play by limiting what is in each team’s playbook. As an example, my Greens team is going to probably have a wide-open passing attack while the Purples might rely more on screens. I’m sure the Blues will just run the ball.
Having limited access to plays isn’t enough. The CPU teams need to know which plays work in which situations. They also need to know if a play hasn’t been very effective, and call that one less often. In order to do that, I need to link the plays themselves to the coach AI in some way. The most effective way I could think of was to have the coach AI own its individual playbook. Each coach would be able to track the effectiveness of each play. Each AI coach could also tailor their roster management to the plays in the playbook, so they are able to build effective rosters. As the player, you’ll do the same thing. I imagine the system will start to create interesting roster and coach management choices. Do you take the star RB in the draft, even though you have a pass-heavy playbook? Do you fire your coach and get a new one to take advantage of the RB? Do you skip him and take a less talented player who fits your scheme better? That sounds like fun to me!
So that’s how the system is designed. The output of all that is a playbook that’s limited to 40 offensive plays and 40 defensive plays. (not counting special teams) That’s all you get. Most coaches won’t have 40 of each, but that’s the max. I’ve started implementing the interface, and it seems to work pretty well.
http://www.goldencrestgames.com/wp-content/uploads/2017/10/placall1.png
I know I’m really button-heavy right now, but I am doing everything I can to avoid sliders. I absolutely hate sliders. They cause far more problems than they solve. However, that means I need to get creative about my button usage. Kind of the same way the depth chart is evolving, I expect this will get refined as we go. The basic design seems to work, though. The individual play buttons don’t have anything but the play name on them. I toyed with the idea of putting the personnel package on the button, but scrapped it because it took up too much space. Instead, when you click on the play button it immediately is drawn on-field. You can cycle through all the plays you want until you see one you like, then you have to click the “Call Play” button to commit to it. Before you click that button, you can browse as much as you want. You can also toggle the player names and depth chart position if you want. (the N button)
Right now you have the ability to change your depth chart at the play calling screen, but I think I’m going to remove that before Exhibition Season 3. I want to avoid the tactic of moving your 1 stud WR around on every play, just so you don’t have to develop any depth. I’ll mess around with it over the next season to be sure, though.
One thing I hadn’t anticipated when implementing play calling is the amount of work a game is now. I have to do a lot of clicks to call both the offense and defense. That’s super annoying. Before we hit Ex2, I really want to get some basic CPU play calling AI in place. There’s no way I have the patience to call plays for both teams all season.
GoldenCrest Games
10-07-2017, 09:31 AM
The campaign mode would get awfully complex -- the need to account for not only skill development but actual physical growth at a considerably larger scale than needed for higher levels/older players, just for one thing -- but seeing the players laid out more as athletes (that you had to determine how to utilize) instead of players with fairly well-defined positions/roles, it fit perfectly with a discussion I had a few days ago about how one of the real challenges at small/medium sized high schools (think: rosters of 30-60 players) was figuring out how to allocate talent to each side of the ball*. Then on top of that, how much/how little to use players on both sides of the ball once their primary roles are set. It's not unusual to have your best QB also be your most capable LB and no worse than your second best RB ... but at the price of fatigue, increased injury risk, and diminished practice time.
It'd be one helluva expansive model to get right, but your basic concept seems like it would lend itself to tackling the problem.
*my HS alma mater is currently averaging around 40 ppg through four games ... but giving up nearly 45 ppg, which would be the worst scoring defense in the 60 year history, by a fair margin. Basically the offense has all the experienced players and most of the talent, the defense is playing as many as nine Fr/So at a time, the tradeoffs are rather obvious.
Just to follow up on this. I've been planning the next projects and my development cycle lately, and I think the idea of doing a HS version has real promise! As of right now, I'm going to plan on following this project up with a HS version, instead of moving to a college version. I'll fill the gap between the regen3 project and the HS project with a college game sometime later.
I can think of so many interesting things that a HS game brings to team management, that I just can't wait to get cracking on it!
GoldenCrest Games
10-09-2017, 08:12 PM
Quick update:
The last thing I need to finish up before kicking off Exhibition Season 2 is almost done!
Coaches, playbooks, and AI playcalling has been implemented. (more on that in another post) I've also finished up a lot of the game flow stuff, so I only need to worry about my own team during games. That's really going to let me focus in on exactly what I'm calling and how it works out on the field.
I decided to hold off on the in-game draft screens until Ex Season 3 or Regular Season 1. It's not necessary for what I'm trying to accomplish this season, so it's not really worth holding up the season for it.
I'm a little stuck on draft pool generation right now. It just isn't looking right. We're not getting the right balance between star players, good players, and scrubs. I think I'm going to have to sleep on this, and tackle it again in the morning.
Hopefully we'll get to start the draft sometime this week.
#GoGreens!
GoldenCrest Games
10-10-2017, 07:08 PM
…and just like that, we’re officially ready to kick off Exhibition Season 2!
Exhibition Season 1 was focused on making the game engine work correctly. Now the engine is working pretty well, and plays a pretty entertaining (and believable) brand of football. Exhibition Season 2 is going to be focused on moving from simulating a single play, to simulating full games.
Here are the specific items I want to accomplish this season:
Have the game situations controlled so the entire game flows in a logical way.
Have basic CPU AI in place so I only need to control my team for the whole game
Start implementing animations for the different player movements
Have all the in-game interface screens and indicators implemented
Update the camera so it works for all situations
Finalize the ratings balance
Finalize the in-game player AI
Have at least 3x more plays than right now
All of this is leading to the final exhibition season where we move from full games, to the league as a whole. If I can come out of Exhibition Season 2 with the game engine pretty much locked down, it shouldn’t be too hard to get the league-wide stuff completed in a reasonable time after that.
As before, I’ll try to limit my programming time between games to 3 days. If something is going to take longer than that to implement, I’ll try to break it up or move it to the offseason.
So with that, on to Ex2!
Most of our teams are back from last season, with the exception of the Pinks. Frankly, they were embarrassing. The Pinks have been replaced with the Oranges, who will lead off the draft with the #1 overall pick. We have a completely new draft pool, except for 1 player…
That’s right, Urquhart is back. 🙂
I made sure to add a section in the player generation code to preserve my favorite player(s) from each season. Urquhart will have all his key ratings exactly preserved, but will have the opportunity to gain (or lose) points in his other skills. I don’t know exactly what he’s going to look like yet, but he’s going to be 99 rated in KR and keep his 412 speed.
Here’s the draft order (in reverse standing from Ex1)
Oranges: The Oranges come in with a focus on offensive and defensive line excellence. They are going to draft for line.
Reds: The Reds will draft for defense again. It didn’t help them much last season, but maybe the changes to the engine will make a difference.
Yellows: The Yellows have slightly shifted strategy from balance to Best-Player-Available. Usually BPA is going to be the same as the most balanced, though.
Blues: The Blues will draft offense again. They did ok last season, but it’s going to be interesting how effective it is now.
Greens: My team. I’ll just go by gut feel again.
Purples: Since it worked last season, why change a good thing? The Purples are going to try and draft unique engine-breaking players and special teams.
I should have the draft file ready by tomorrow. It’s go time!
GoldenCrest Games
10-12-2017, 10:23 AM
It’s draft day! ok, actually the draft is already over, but here’s how it went, pick-by-pick. (with the results spreadsheet)
Results Spreadsheet (http://www.goldencrestgames.com/wp-content/uploads/2017/10/draft.png)
Round 1
Oranges: With the top pick in the draft, the Oranges have a choice between 98 rated DL Cyril Provencher and 99 rated OL Bennie Murphey. The next best OL is rated 89, while there are 2 DL rated above 90 after Provencher. However, both these top guys are speed specialists and don’t have much strength. In the end, the elite pass blocking potential of Murphey wins out and the Oranges select him with the #1 overall. He won’t help in the run game, but he should be able to lock anyone up in pass protection.
Reds: It looks like DL is the most skilled position on the defensive side of the ball, and the Reds love the top 2 prospects. Provencher is an elite pass rusher, but 93 rated DL Billie Enoch is an elite run stopper. Provencher’s potential to disrupt the passing game is what tips the scales. They take him with the #2.
Yellows: The Yellows are scouring for BPA. None of the offensive skill positions have been taken yet, and there are some stars there. The top 2 QB are 95 and 92, there are 2 97 rated RBs and a 94 rated speedster, and there’s a 91 rated WR who has good speed. The problem is that none of these guys are 2-way players. There’s a sweet RB/WR/DL later in the draft, but he’s not worth the #3. The top RB Jacob Rooker might be the most talented offensive player in the league, and he can play just enough safety that he might crack the defensive lineup (46 rating). The Yellows take 97 rated RB Rooker.
Blues: They don’t mess around. The Blues quickly grab the top QB and run. 95 rated pure pocket passer Nick Melo.
Greens: I really want to grab a legit skill position, but the Purples are picking back to back and there’s no possible way Urquhart makes it to me in the 2nd round. Grrrrr……. Unfortunately, this is probably a bad pick because he didn’t gain any other skills in the offseason. In fact, he lost all his WR ability. He’s rated 44 at CB, so maybe he’ll be a CB3? The only other possible option is start him as a 33 rated QB. Ouch. We take KR Urquhart with the #5.
Purples: The Purples wouldn’t have taken Urquhart with this pick. The #2 QB is rated 84, has a 421 speed, and a 92 for scrambling. That’s a game-breaker if I’ve ever seen one. They take QB Jeremiah Ries with the last pick in the 1st round.
Round 2
Purples: Coming back around, it turns out that the Purples wouldn’t have taken Urquhart here either. L There’s a LB unicorn that is too interesting for them to pass up. The 2nd LB is rated 81 but has a 405 speed. (The max game speed is 425) That’s elite WR/CB speed in a LB. This should be interesting. The Purples take LB Kirk Hills.
Greens: I really liked that LB. I probably could have waited to grab Urquhart until my 3rd rounder. Oh well…. My best options are the last star QB (92), one of the 2 star RB (97 and 94), the only star WR (91), or someone on the line. This draft is pretty deep on line, so I think I need to grab a skill position. I don’t love the WR or QB talent after the top guys so it might be hard to build a full passing game. I’ll take the safe route and pick the speedster RB (94-408) Winston Dunaway. I can use him in a lot of different ways.
Blues: They took a QB in the 1st so it only makes sense to grab the lone WR star. Erin Dutcher (91-389)
Yellows: There are a lot of 1-dimensional players at the top of the board, so it’s hard to find the right fit here. However, Yellows ownership notice a guy a little farther down the board that’s perfect. While not elite in anything, Burt Putnam is top-5 in 5 different positions! (QB/RB/WR/DL/ST) He also has respectable speed (352). That’s a nice fit.
Reds: The Reds can’t believe that DL Billie Enoch (93) is still on the board! They take him and have the best pass rusher and the best run stopper in the draft
Oranges: That last pick really burns the Oranges. Grrr….. The last elite DL is close, but not quite Enoch’s level. Still, quite a bargain to find elite run stopping late in the 2nd. DL Brian Morley (91).
Round 3
Oranges: Both OL and DL could start to get pretty thin in a couple rounds. The next few guys up on the OL and on the DL lists are fairly close in talent. The top DL left has an edge because he can play a little OL if it comes to that. Oranges take another run stuffing DL Angel Smalls (86)
Reds: Reds are pretty good at DL for now and shift their attention to other positions. The top prospects are LB Billy Grove (81), CB Jason Hershberger (90), S Kyle Correa (90) and S Glen Silva (88). Silva and Grove are by far the fastest guys out of this group, so it comes down to them. Silva ends up being the pick.
Yellows: The Yellows are looking for high-end talent that can play multiple positions, and there’s only 1 of those left. S Kyle Correa might not be the most electric runner, (257) but he’s savvy. He also is the 2nd best KR in the league at 96. The Yellows hope his quick decision making is a difference maker.
Blues: The Blues have the top QB and WR. They make it a clean sweep by taking the top rated RB (97) Morris Noah.
Greens: I missed out on my favorite LB, but I can grab the next best thing. LB Billy Grove (81) isn’t as fast as Hills, but Grove can play a little WR. I might need that, the way the draft is shaping up.
Purples: The Purples are going to load up on special teams here. There’s not a ton of talent in the pool, and they don’t want the pesky Greens to snap any more of it up. They grab the top K (92) Francesco Stoll.
Round 4
Purples: The Purples come back around the grab the speedy ST specialist Isidro Ivory (94-419). He can also play a decent game of CB (74).
Greens: We laugh at the Purples! There’s no way we would have taken either of those guys in the next 2 picks! (well, maybe Ivory…) We need to cover our investment in RB Dunaway by getting him some blocking. We grab a pretty good balanced OL (86) with legit ST skills. (89). Hiram Hylton.
Blues: The Blues have leaded up on skill positions, but need some blocking. They grab the top OL left (89) Luigi Testa.
Yellows: The Yellows make a bit of a reach and grab another 5-way player in RB/WR/OL/DL/ST Harley Lumpkin
Reds: The Reds took a long look at CB Hershberger (90) last round, and are happy to see him still on the board. That’s the pick.
Oranges: The 3rd rated OL is still on the board, so this is an easy pick for the Oranges. OL Augustine Bigler (87).
Round 5
Oranges: The oranges probably could stand pat with the OL and DL they have right now. They have 2 star DL, 2 star OL, and one serviceable OL. It looks like they still might be vulnerable against the run with only 2 DL, so they fill that hold with another run stuffer Tommie Macmillan (79). Now they are dominant on the DL.
Reds: The Reds can’t pass up an opportunity to have to two most skilled CB in the draft (by quite a margin). They take CB Reginald Paulk (88)
Yellows: The Yellows find another gem in WR/DL/CB/K/ST Dominique Cofield. He even has legit speed.
Blues: The Blues start to make the other teams’ defensive coordinators nervous by taking another fast and skilled WR. While not the top WR left on the board, he’s by far the fastest. WR (74-354) Carmelo Alford.
Greens: Ugh! I wanted that guy to fall for a couple more rounds. He looked like a gem. I might as well load up on run blocking. Let’s commit to the running game! OL Kelly Jamerson (82).
Purples: Purples find another special teams star in ST (97) Robt Word. He also happens to have massive strength. Should help out the return game a lot.
Round 6
Purples: Speaking of the return game, the Purples have yet to select a returner! They take KR (95) Rich Mosley.
Greens: There’s really only 1 more high-end run blocker left, so I might as well get that taken care of. OT (83) Anthony Lo. Now we can move on to other things. The running game is set.
Blues: The Blues need to round out their offense with line now. They take OL (84) Foster Dressler
Yellows: They Yellows find another multi-skill player to fill line positions on both sides of the ball. They take OL/DL/K Andrea Fix
Reds: The Reds biggest hole on the defense is at LB now. They fill that hole by drafting #3 rated LB (78) Mark Henshaw
Oranges: The Oranges could have made it through the season with the OL3 (52) they have right now, but there is still OL talent out there. They fill the last line position with OL (80) Forrest Haggard
Round 7
Oranges: Now that all 6 positions of the line are full, the Oranges need to fill every other position with the remaining 6 picks. Ouch. They are going to need a few multi-skill players, or just deal with subpar talent. There’s a decent WR (78) who can play S (70). There’s also a serviceable LB (64) / QB (60). In the end, they probably make things worse by taking the #2 QB in the draft, who is amazingly still on the board. They take QB (92) Doug Keith, who now has something to prove against every other team in the league.
Reds: The Reds have filled out most of the defensive starters. They could use a S2, LB2, and a DL3, but should probably look to fill some other positions. If they can find an offensive player with a 50ish rating on defense, that should be good enough. They already have 2 guys who can fill in at WR and one OL, so that’s a good start. WR (78) Alonzo Stringfellow is a nice WR who also would make an excellent 2nd safety (70). They grab him and fill 2 spots.
Yellows: The Yellows need OL, LB, CB help. Saul Mohler looks like a good fit. He can play OL (62) and LB (53) and is as strong as a dump truck.
Blues: The Blues need to look at the defense now. Luckily, there is some talent left. They grab S (85) Moshe Mercado
Greens: We sold out on the running game, so now we’re kind of in a hole with the rest of our roster. I think we’re in “most talented player” mode right now. There’s an athletic multi-position player that looks like a good fit. We take the speedy CB(71)/S(65) Lou Kersey, and we’ll see where he fits later.
Purples: The Purples really need line help. They take the best lineman with the highest ST rating. OL (64) Nathan Bartz with ST (82)
Round 8
Purples: They follow that pick up with DL (62) Danial Gall with ST (73)
Greens: Oh boy, I almost took a kicker here. J We find another talented specialist in the defensive secondary. We’re going to pay for this with incredibly weak depth, but we take CB (78) Sherman Toner.
Blues: The Blues grab a starter at LB (73) Normand Nutter
Yellows: They grab the top CB left on the board. (72) Mikel Spires
Reds: They grab the most talented offensive player left. RB (74) Wally Pennell
Oranges: Oranges grab WR (81) Courtney Soper to help out their new angry QB. Soper is pretty dang slow, but he should be reliable.
Round 9
Oranges: Oranges also grab WR(71) Fritz Grayson. He’s a lot faster than Soper and should help the Oranges capitalize on the lucky QB pick.
Reds: The Reds are mad right now. The Oranges WR Soper was also the top QB on the board. Now the Reds have to take QB (60) Rick Mccowan before someone snaps him up to play LB (61).
Yellows: Yellows grab another solid OL (62) Dalton Camp
Blues: Blues grab DL (68) Antone Kiger
Greens: Guess who the last team to look for a QB is… L The top QB left is rated 46, so there’s really no point now. I didn’t think Mccowan would go. The Soper pick kind of messed everything up. Ugh…. I take K(68) Andreas Dickenson and hop my running game + kicking gets me through.
Purples: Not a lot of pure talent on the board, so the Purples stay true to form and draft for ST. They take ST (83) Kraig Hazlett
Round 10
Purples: They follow that up with ST (78) / WR (68) Grant Beals
Greens: 3 picks left. As it turns out, my 4th rounder OL Hylton can play a little QB. I don’t love that, but it give me options. I still need: QB1.5, WR1, WR2, OL2.5, DL1, DL2, S1. O.M.G. There’s an ok run blocking OL on the board I could take and play Hylton at QB. There’s an ok run stopping DL. Safety looks like garbage, so that’s out. I’m going to grab OL (58) Clint Venable and see if I can get some QB flexibility with the next pick.
Blues: DL (66) Deangelo Montero
Yellows: LB(64) / CB (68) Moshe Acuna
Reds: OL (51) Shaun Garza
Oranges: LB(51) Jamal Cornejo
Round 11
Oranges: ST (76) Kelley Steed
Reds: K (50) Jerry Zuber
Yellows: S (62) Lionel Fontaine
Blues: 4-pos player Johnathon Jacob
Greens: We reach WAAAAAAY deep and take QB (12) Earl Christopherson. He has no skills, but he has a speed of 395 and a scramble rating of 76. If my OL-at-QB experiment doesn’t work, I can always go to the option!
Purples: ST (70) Doyle Bloomer
Round 12
Purples : Randall Messick
Greens: Bret Troyer . Nothing special, just the fastest guy left.
Blues: Dewey Houser
Yellows: Chet Peel
Reds: Elliot Schaffer
Oranges: Colby Kimball
GoldenCrest Games
10-13-2017, 11:30 AM
As we head into the second exhibition season, it’s probably a good idea for me to get down all the things I’ve noticed about the game and process. I’ve found myself looking over old posts a lot lately, to see what I was thinking. I’m sure I’ll come back to this one before too long.
Ex2 Draft: This is the last time I do an offline draft. It’s a huge pain in the butt! It’s hard to put yourself in the mind of each team’s GM and pick players like they would, while still being totally invested in your own team. (not to mention the logistics of getting it all into the game) By the later rounds my attention was starting to wane, and I made some bad picks for the Greens. I’m going to make sure the in-engine draft is set up before the next exhibition season.
The Greens Roster and Play Creation: My team sucks. I should have a legit running game (and Urquhart), but my passing game is going to be embarrassing and I have almost no defense. That being said, it gives me a real incentive to create new plays. Almost all my plays so far have been made for the Ex1 Greens so they are based around a spread offense. Now that I have the opposite, I have a reason to start developing the power running game and the screen game playbooks. It’s already making a difference with the game engine. I uncovered a bunch of bugs with the way OL pull out for screen passes, and how the QB AI breaks down on designed roll-out plays. I never would have been as focused on those details if my entire offense wasn’t going to be based around the run and screen passes. I’m going to bet that I’ll get a lot closer look at punting, too. 🙁
College Draft: That needs to happen soon. It’s funny, but I can’t help but look at my team and think “I’m going to take a QB #1 in next year’s draft….. oh crap. There’s no daft.” It’s weird to be looking forward to something I haven’t started planning yet. I think that just means it needs to happen soon.
Keeping it Simple: I’m having a hard time with scope-creep in the engine. I have to continually remind myself that this is a 1st generation game, and I shouldn’t try to cram every AAA-quality feature into it that I can. I need to focus on getting the core game experience right, and then I can add the frills. Keep repeating that………
The Depth Chart Interface: I love it. 🙂 The usability is awesome. I bring it up a lot during testing to swap players around, and it’s really easy. However, it’s not going to be intuitive for a new player. I’ll have to figure out how to deal with that. It makes perfect sense to me that you click on a player, and then click on the position you want to swap him into. I can see how that might be hard to understand the first few times you play, though.
The Playcalling Interface: ……..eh. I like the idea, but the execution isn’t working for me. Not sure exactly what’s wrong, but it’s kind of “stressful”. I have to find a way to capture some of the depth chart feel.
Defense: I fear there are still holes in the defensive AI, specifically when it comes to defending the screen pass and outside runs. ugh! That’s frustrating.
Player ‘Platforms’: I almost decided to take them away (again) because it seems to “gamey”. Frankly, it’s kind of dumb to have guys running all over the field, but then also have them stuck to plastic game piece platforms. That being said, I don’t know that I want the game to be realistic. Maybe I need to commit to the concept and start pushing the realism closer towards the ridiculous? Just abandon the whole idea that these might be real players. Don’t even pretend there’s the possibility, and just embrace that these are game pieces. On the other hand, that kind of messes up the whole point of a football league. Maybe the best idea is somewhere in the middle. Keep the players as real players, but use the platforms as an implied “augmented reality” view of the game. I kind of like that idea, but I’m still not sure how it works. Presentation is coming later in the development plan, but I might as well start thinking about it now.
GoldenCrest Games
10-16-2017, 12:44 PM
So we played the first game of the Ex2 season, and.....well...... I'm not so sure it went real well. :(
Overall, it was nice not to have to call the CPU plays. The game itself flowed a lot better. It was also nice to see how the engine runs with completely different players. That being said... Urquhart broke the game.
3 KR for 108 yds and 1 TD, 9 PR for 404 yds and 6 TD.
yikes.
Frankly, that's why I kept him in the league. I need to make sure freaks of nature don't completely break the engine.....and he broke it.
I'n not 100% sure what to do about this. It could be a matter of the Oranges ST being so crappy. I've been testing my updates against the Purples team, and I don't see anything close to this. It was just sad to watch the Oranges try to catch Urquhart. I wanted to cry for their dignity.
There was also the problem of the Oranges offense. We ended up winning the game 65-7. They have a top-2 QB and the best OL, but couldn't manage even the slightest bit of offense. The WRs couldn't get open, and that was pretty much the end of it. That's really not acceptable.
I'm going to see what I can do with the punt coverage and offense before the next game. If I can't get Urquhart under control, and get more reliable offense from WR-poor teams, we might have to call a false-start on Ex2 and make some more engine adjustments before trying again.
JonInMiddleGA
10-16-2017, 01:16 PM
3 KR for 108 yds and 1 TD
Either that yardage is a typo OR those were some normal kick returns with one medium/long one for a TD.
GoldenCrest Games
10-16-2017, 02:04 PM
The kick returns were ok, it was the punt returns that were alarming. The Oranges had no chance on punt coverage.
GoldenCrest Games
10-17-2017, 06:31 AM
Ever have one of those "OMG I'm dumb!" moments?
I've been dissecting the punt coverage code and can't find anything I want to change. I really like how it's set up. Then I took a look at the players to try a few things....
The Oranges have an embarrassingly bad special teams roster.
So I started down the road of trying to figure out how to make ridiculously bad ST be able to cover punts against a team who invested a lot into ST, when it occurred to me. Why the hell would I do that? If you don't invest in special teams, you should pay for it. That being said, we can't have teams giving up 6 punt return TDs a game. Then it dawned on me. There's actually such a simple option, that I feel dumb for not thinking of it sooner.
Why not just punt the ball out of bounds?
Ugh. If I'm the Oranges coach, I'm obviously not going to kick the ball to Urquhart every time. I'm also not going to go for it on 4th every time. I'll be kicking that damn ball as far out of bounds as I possibly can, and just take the poor punt distance.
I should have this implemented within the hour, so we're back on track!
GoldenCrest Games
10-18-2017, 06:38 AM
I should have known that the success in Exhibition Season 1 was too good to be true. :(
I made a bunch of adjustments to address the punt return issue and the "slow WR" issue, and replayed the game against the Oranges. Still a blowout, but a little more realistic. My log of items to fix got pretty long during the game, though.
Before diving into the fix-log, I played the Reds. I just wanted to be sure what I was seeing was real, and not just because of the Oranges. The list got even longer.
UGH!
I think the new player pool is exposing a lot of things I didn't see in Ex1. Some of the heavy-hitters are:
Slow WRs are completely useless. Seems to make sense that you don't want a slow WR, but the way the engine works right now he can't ever get open. That's not what I wanted.
QBs rated lower than 70 are all basically garbage. There's no real difference between my scrambling QB (20) and my OL/QB (64). They both can't even complete a screen pass reliably.
OL is still at a disadvantage. It seems like the best an O-line can hope for is a stalemate. They never have the advantage.
Almost all plays are either no-gain or a breakaway TD. You don't have any sustained drives.
I'm not going to waste any more time trying to get Ex2 to work. I'll just use the player pool to try and balance the engine again, and then see where we end up. I'm going to give myself a week to fix everything. After that I'll generate another player pool and see if the engine holds up. If it does, we'll have to see if Ex2 still makes sense, or if we start preparing for Ex3 instead.
GoldenCrest Games
10-19-2017, 12:03 PM
There's a small chance I was being overly dramatic in my last update. :)
I put quite a few bonus keyboard hours in since then, and I think I have everything sorted out. Here are the heavy-hitters:
Slow WRs being useless: Even in Ex1, slow WRs were kind of useless. I thought I'd made enough changes to the engine so that it's possible to have a highly skilled slow WR be effective. It didn't work at all. The Oranges have a skilled slow WR crew and they couldn't do a thing. What I ended up doing was rethinking how I handle WR skill. I've tried a bunch of things to model WR skill, but they haven't been working very well. Now I'm using something I call "coverage radius" to model the difference between WR skill.
I'm assuming that any WR, no matter the skill, can run routes. What separates the good WRs from the bad ones is the ability to catch. Specifically, the great ones can catch in traffic.
http://www.goldencrestgames.com/wp-content/uploads/2017/10/WRcoverageradius.png
This is a good visual. The WR on the left is rated 81, and the one on the right is about 60. The circle around them represents the distance they are considered 'uncovered' for catching calculations. The better WRs will have a much smaller coverage radius than worse ones. This means that a great WR could be covered fairly tightly and still have a high probability of making the catch. A really bad WR will have a lower chance of making the catch if any defenders are around. The net output of this is the ability to catch balls in traffic. Slow WRs with great skill can now catch balls when defenders are around. Bad WRs need to be wide open. The catching calculations also take skill into account, but in a pretty uncomplicated way.
I also implemented decision making time for the defense breaking on the pass. For lower skilled CB/S, they don't break on the ball immediately, and skilled WRs will sometimes get that little extra room.
Breakaway Plays: Still had waaaaaaay too many breakaway plays. I think the player pool for Ex2 made it worse. This one took a lot of experimenting, but the final solution ended up being relatively simple. It has to do with intercept points and decision making.
http://www.goldencrestgames.com/wp-content/uploads/2017/10/intercept.png
Here's the Greens RB breaking a run outside and turning upfield. That little yellow sphere is what the Orange player at the top calculated as the intercept point to hit the RB. It's actually correct. There's nothing wrong with that calculation. However, if the Greens player deviates at all from that path, the decision making time of the Orange player could cause him to continue to aim at that yellow sphere for too long. What usually happens then, is that the Orange player ends up aiming at a point behind the Green player and gets into chase mode. That almost always means a breakaway TD. I adjusted the intercept calculation so now the Orange player is aiming at the white sphere 3-5 yards upfield of the actual intercept point. That small change made a huge difference. The Orange player will take a conservative intercept angle until he's within a smaller distance to the Green player, at which point he'll change to the actual intercept point (tackle attempt).
And just like that, breakaway plays are not nearly the problem they were before!
QB Skills: This was easy. I tweaked the accuracy formula and got a better range of accuracy. While I was at it, I monkeyed with the progression reads and made it so highly skilled QBs can read progressions faster, and can cycle through them easily. Bad QBs will struggle to get through the progressions once. (But every QB can read the first progression)
Blocking: Made a lot of updates to the blocking system, and it's looking good now. Power offensive lines can move the DL at a good rate. Speed offensive lines can pass block like crazy. However, both need high OL skill to be effective or the DL will eat them alive.
Special Teams: (the Urquhart problem) The intercept angle update helped this a lot, but I also made changes to special teams coverage/blocking. Coverage players can break off blocks a lot easier now. Also, when the runner passes by, the defender can break free and pursue. This helps on those plays where Urquhart makes a ridiculous weave back through the blocks to get across the field. It always looked cool, but completely unrealistic that nobody hit him.
There were a lot of other small items I had to fix. I ended up taking care of them when I got stuck on these big items. In the end, it looks like Ex2 is still a go!
GoldenCrest Games
10-23-2017, 09:33 AM
Lots of interesting progress since last time!
Exhibition Season 2: I’m definitely ready to kick off Ex2, but I’ve made a lot of progress on some cool features so the plan is being adjusted. (More on that coming)
Coaches: Here’s where a lot of the recent work went. Frankly, it was a huge pain to call plays for both teams. My laziness cause me to move up the AI coach system from Ex3 to now. At first, I just hacked together a system that would randomly call an offensive or defensive play, just so I didn’t have to do it. It quickly became apparent that I still had to call special teams plays for the CPU, or the game would crash. Ok, I’ll just have them call those too…..
In order to do that, I had to put situational awareness into the coach AI. Cool, that’s not hard. I’ll just add some basic situational awareness in…….
Now it works, but I have to double-check that the CPU isn’t calling my really bad plays. (I have some really poorly designed plays). I’ll just remove those from the playbook…….
Now I don’t have enough plays. 🙁 No problem, I’ll just start creating plays…….
Of course, all the plays are created for the Greens roster. I really don’t need to see pocket passers running the QB dive. Now I have to double-check the CPU playcall, which is just as bad as calling it myself. I can fix that, I’ll just have the coach AI keep track of which plays worked and which didn’t! Then they can focus on the plays that work……..
Ok, in order to do that, I need to create a system to track how each play worked during the game….. and I might as well track over the whole season. Wait, if I want to track over the whole season, I need to be able to save and load that information…. ugh!
*down the rabbit hole we go*
When I came back out of the rabbit hole, the entire AI playcalling system was done!
Which then brings us to the bonus activity and the Ex2 plan. As I was setting up the Ex2 schedule and getting ready to replay the Oranges, a thought occurred to me. I don’t really want to play the games for the non-Greens teams. I don’t really care who wins between the Yellows and the Reds.
*DING!*
OMG, I already have everything in place for CPU vs CPU games! I just need to make a few changes so the game keeps running when I’m not clicking the buttons.
http://www.goldencrestgames.com/wp-content/uploads/2017/10/cpuGames.png
And there is it. I put all 4 teams on CPU mode and let both games run for 100 plays each. (simultaneously)
I even walked away and got a cup of coffee while it ran! No crashes, no stoppages, and no errors! The first actual CPU-CPU game(s) in regen3 history!!
The purpose of Ex2 was to make sure whole games could be played. I’d anticipated that it would take all season to get it working, but we’re already there. Ex3 was planned to start rolling this into a league-wide structure, but I’m not quite ready for that yet.
So here’s the new plan:
Ex2 is going to be more like Ex2.5. I’m going to add a couple more teams and regenerate the player pool. I’ll also create a way to do the allocation draft from within the game.
Once that’s done, I’ll kick off Ex2.5. During the season, I’ll finish up all the animation stuff I wanted to do in Ex2, and build the league stuff I wanted to have done in Ex3. Once we get to the end of Ex2.5, we’ll see if there’s a need for another exhibition season, or if enough was completed that we can just roll into the first regular* season.
Exciting times!
*The difference between the exhibition seasons and the regular season is history. Once regular seasons start, players and history carry over from one season to the next.
GoldenCrest Games
10-27-2017, 05:58 PM
Instead of a long-winded explanation of the progress since last time, I thought a screenshot would do. :)
https://scontent-ort2-1.xx.fbcdn.net/v/t1.0-9/22780646_1706876769353854_5253144638993529390_n.png?oh=2cba4c7e20c6334ed6be4def400c43db&oe=5A632400
I've run through the draft a few times from beginning to end with no errors or unexpected happenings, so that's pretty cool. I still have to put draft AI for the different coaches in before the Ex2.5 draft is a go. I'm definitely not drafting for every team again.
I have the system set up so that each coach will have its own style, and won't draft the same way as everyone else. (more on the details when it's completed) I really hope to have it functional by the end of the weekend. It feels like there's about 3 hours of work there. The tough part is finding those 3 hours.
GoldenCrest Games
10-30-2017, 07:31 AM
Well, I found those hours after all!
Draft AI is done
Coach draft style system in place
Updated player generation to get a better pool of players. (greatly reduce players that don't make sense. ex: 99 rated CB with 10 speed, 90 scramble on QBs with 10 speed, 90+ WR that's also a 90+ OL, etc)
Added more teams to the league. (now we're at 10)
Figured out how the player uniform texture works, so I can make more!
I want to fine-tune the player value calculation a little before kicking off Ex2.5. I don't imagine this is going to take too long, so we'll probably be ready to draft this week!
GoldenCrest Games
10-31-2017, 04:58 PM
Coaches have been installed, teams have been created, players have been generated, and we’re ready to go!
Season 2.5 is officially ready for draft day!
As before, here’s how it fits in the grand strategy, and what we’re looking for in Ex2.5:
What’s already implemented that needs to be tested:
Coaching AI: I need to see if the coaches can really track the relative success of their plays and adjust accordingly. I’m purposely having every coach use the same playbook, with plays that won’t fit their style, to see if they start calling those plays less often.
Draft AI: I think I have a decent system created. Let’s see how it works out
CPU-vs-CPU games: I’m only going to coach the Greens. Let’s see how the CPU teams do against each other.
Overall engine stability: I need to make sure the engine plays a good game of football, even with the new players. (this one makes me a little nervous)
Player Ratings Limits: I think I have a good feel for the top and bottom limits for speed/strength. I just need to be sure it’s finalized before moving out of the Exhibition Season.
What I’d like to finish/implement during Ex2.5:
Basic animations (catching, throwing, tackles, etc.)
League structure (in-game schedules and results, standings, stat sheet, etc)
Full-week sims (without me managing it)
Work on optimizing the engine for performance (I can only sim 2 games at the same time before it bogs down. I’d like to get to 4.)
Save/load optimization (it takes forever to save and load everything)
I’ve also added a few new teams. Now we’re up to 10 teams! We’re going to play/sim by week this time, instead of just doing all the Greens games in a row, before moving on to the next team. Here are your Ex2.5 teams:
http://www.goldencrestgames.com/wp-content/uploads/2017/10/ex25Teams-1.png
With a random draft order, the Greens have the #3 overall pick in the draft. Our nemesis, The Purples, grabbed the top pick. 🙁
Since the AI is picking for all the other teams, I’ll only be able to recap my picks. Prior to each week I’ll make some notes of what the team I’m playing looks like.
This is a 9 week season, with the top 4 teams making the postseason. I’ll limit any engine updates to 3 days of programming time, to keep things moving.
Hopefully, at the end of this season we’ll be ready to move into the Regular Season!
GoldenCrest Games
11-01-2017, 07:43 PM
Funny thing happened during a test draft.
After the first round I started noticing that the AI was taking players that weren't even on the top 20 overall rating list. I got a little nervous about my player value formulas, but I just stated snapping up all the skill left on the board. I just wanted to see how badly I could pwn the AI.
Then, around round 7, it hit me. The AI was snapping up all the speed.
Ugh.
By the end of the draft, my fastest player was rated 70 (now speed is out of 100) I guess I was the one who got pwned!
GoldenCrest Games
11-03-2017, 07:13 AM
Draft time!
This looks like a pass-heavy draft. Good top-end talent at WR and QB, but not much at CB or DL. The special teams looks pretty deep, too.
Urquhart comes in as the 10th ranked player overall. Other than kick returning, he has a 67 LB and 58 WR skillset. Not bad! I'm not worried about the Purples taking him #1 overall, but it makes me a little nervous that he won't make it past the 14 picks between me and my 2nd rounder. There are other KR in the pool with better positional skills that I should consider with the 1st rounder. There's also a 100 WR 99 CB with 98 speed (Carl Cornett) that's the 2nd overall player. I'm really hoping he falls to me at #3!
Anyway, here we go!
....aaaaaand Cornett goes to the Oranges at #2. 🙁
My pick. It's way too early for Urquhart, but he's probably not going to make it back to me in the 2nd. I can't take him here. I'll take WR(90) LB(87) S(88) K(93) Lonny Mincey. I've learned my lesson about taking 1-dimensional players.
Round 2: And Urquhart goes to the Blues 2 picks before my 2nd rounder. 🙁 All the elite speed is getting snapped up! I wanted to get a QB here, but I can't afford to go into the season without speed, so I grab WR (98) Scottie Bachman. With only 80 speed, he's one of the fastest guys left on the board.
Round 3: ok, I promise this is my last 1-dimensional player! I need a QB or my first 2 picks were worthless. Luckily, the QB position has been neglected while everyone is grabbing fast players. I get QB (95) Darin Phelan.
Round 4: I'd rather play my 1st rounder Mincey at LB than S. Seems like he can make more of an impact there. There's a little talent left at S, and none at LB so it makes sense. Sean Walling RB(75) S(84).
Round 5: I might have missed the boat on most of the other defensive players. There's skill, but they are all slow as hell. 🙁 I'll just sell out on offense then! OL (95) Micah Irvin
Round 6: KR(89) CB(74) Bradley Lucier. If I've learned anything about this game, it's that you need a serviceable KR or you're in trouble. 72 speed won't set the world on fire, but he'll do well enough.
Round 7: OL (82) Carlo Asbury. My passing game is going to be everything for this team. I can't afford to have weak protection.
Round 8: Now I'm just filling holes. I took too many 1-dimensional players again. 🙁 WR(71) CB(72) Arnoldo Paschall
Round 9: OL(78) Donnell Escamilla
Round 10: DL(73) Jonah Riddell
Round 11: DL(65) Carmelo Chalmers
Round 12: ST(44) Barrett Sipe (yuck)
GoldenCrest Games
11-03-2017, 07:16 AM
Here's how the Greens shaped up:
I wasn't ready for the run on speed. My top 2 WRs have speed of 80 and 79, and my RB runs a 77. This is really going to put the 'skilled WR' updates to the game engine to the test. If I can't put together a passing attack, I have nothing. Which brings us to the next point...
I wasn't ready for the AI to value special teams. My top special teams coverage guy is 56...and it drops off quickly after that. This is so unlike Greens teams of the past. I can usually count on my special teams to dominate. I might have the worst in the league now. I do, however, have an elite kicker!
My defense might actually end up being serviceable! My DL is pretty bad (73 and 65) but my LB is elite and my S is pretty nice. My CBs are slow but that just means I'll play a lot of zone. I think I have the LB and S talent to do it regularly without giving up huge pass plays.
Overall, this is not a normal team for me. It's going to be interesting to see how the season shapes up, and if I can find a way to make it work.
GoldenCrest Games
11-05-2017, 12:20 PM
Just killed the most epic bug EVER!!!!
I was holding off on playing Ex2.5 games to finally squash a bug that's been in the engine since day 1. It comes and goes, but it's always bothered me. Basically, once or twice a game, a pass would all of a sudden warp in mid-air and end up being an incompletion for no reason. Even if your guy was wide open, the ball would suddenly warp to a position (usually backwards) but keep its trajectory and miss the WR.
It only happened a few times a game at most, but sometimes you'd go 2 or 3 games without seeing it. It was infuriating.
I spent more than 10 hours tracking this single bug over the last 2 days, and I finally got it. :eek:
The problem was this:
I have the QB as the parent of the ball object until a receiver/defender catches it. It's the same way I manage the ball on kicks/punts, too. (Problem has never shown up there)
When another player catches the ball, it switches its parent to the player.
The bug happens only when the ball is in flight, before the parent is switching. It's triggered when a defender's collider overlaps with the QB's collider, while the ball is in the air. (Note: Colliders aren't supposed to overlap at all. They are supposed to bounce off eachother. Sometimes they briefly overlap if the physics system doesn't keep up with the movement, though)
It won't happen any other time, but it happens 100% of the time in this very specific situation.
My best guess is that the collider conflict causes a problem with the ball's positioning, because the ball is still parented to the QB when it happens. (and is being controlled by physics at the moment) If I parent the ball to the game at the moment the QB throws the ball, the overlap problem disappears!
That's pretty satisfying. :)
GoldenCrest Games
11-05-2017, 05:09 PM
Planning on running the first week tomorrow, so I'm using the time today to make a few more engine adjustments:
QB Scrambling decision-making timer is now based off the scramble tendency, instead of the QB skill. This makes scramblers really good at running, but not necessarily good at throwing. Just a differentiation in skill sets.
Major update to open field running. Runners should avoid free defenders a little better now and look a lot smoother in their running.
Made CB pass knockdowns a little more meaningful. Now it's not just coverage skills that matter. (help out slow elite-skill defenders)
Add a "Pass Confidence" system to the QB. Now great QB/WR combos will attempt to connect in smaller pass windows than normal ones. The basic idea is the QB 'trusts' the WR more and takes chances. Plus he'll throw into coverage if they have high confidence.
I think I fixed/updated the engine enough to have a really meaningful start to the season. I want to keep stats this season, so I'm really pushing to have the engine tightened up as much as possible.
GoldenCrest Games
11-06-2017, 06:15 AM
Week 1!
http://www.goldencrestgames.com/wp-content/uploads/2017/11/Ex25week1.png
The Purples are special teams focused. They completely locked down my returns and broke a couple of their own, but it wasn't enough. Our passing game dominated the Purples.
Having a superstar QB (Darin Phelan) really makes a difference. He gets the ball in all kinds of tight windows, which is great because my WRs aren't very fast. I might have had 1 play for 20ish yards. Everything else was in the 5-10 yard range. It was a lot of catching the ball in traffic, and then getting tackled immediately. I tried running the ball, but that usually ended in a tackle for loss.
On defense, the Purples should have tried to run the ball more. I stopped the passing game by going to a strict zone policy. Any time I ran a man defense, my CBs got beat for a big gain. Once I committed to the zone, I bottled them up. It will be interesting to see if the Purples coach shifts strategy as the season goes on.
Overall I was happy with the game. No additional bugs made it on to the list, and I can't see any engine adjustments I need for next game. I'll use the time to update some interface stuff.
Now, the league leaders!
Passing: Greens Phelan is leading with 385 yds and 6 TD. The Yellows QB Vanburskirk is 2nd with 223 and 4td.
Rushing: The Reds Duine Artis is dominating with 150 yds and 2 TD. The next closest RB only has 30 yds!
Receiving: Yellows WR Amerson is leading with 216yds on 13 receptions. It's pretty clear the Yellows are a 1-WR offense. I'll have to watch out for that. My QB Phelan used all 3 of his WRs, so my top guy is #3 with 147yds. All 3 of my WRs are in the top 7, though. :)
Sacks: Oranges Lavern Holloman leads the league with 6 sacks! Yikes! Funny note, Urquhart is #2 with 4 sacks!
Returning: Urquhart leads the league in returning with 1 kick return TD and 1 punt return TD.
FG: Yellows WR/K Amerson leads the league with 3 FG. He's 3/7, so that's concerning. The Silvers are also 1/5 on FG. If accuracy doesn't get a little better, it might be worth looking into. This wasn't a great kicking draft, though.
GoldenCrest Games
11-07-2017, 07:35 AM
Engine updates from week 1:
Changed the playcalling screen to get rid of page 2. It was annoying to have to look through 2 pages to call plays. To compensate, I upped the number of plays on page 1 from 20 to 25. So far it seems to be an ok number.
Added missed tackle, got tackled, and throwing animations. Man, they look terrible. :) The got tackled animation looks like the player got shot. It's a start, though.
I was going to take another day of development before Week 2, but I'm going to tackle a pretty big feature so I need a little more time to plan it all out. Might as well do week 2 then!
http://www.goldencrestgames.com/wp-content/uploads/2017/11/Ex25week2.png
We took on the mighty Yellows, and barely escaped with a 3 point victory. We might have lost if there was more time on the clock, because the Yellows just got the ball back. I got a good look at the Yellows Amerson, who is actually their RB instead of WR. He racks up all those receiving yards because the Yellows call a LOT of swing passes and screens. He's so fast that most of them turn into huge gains. I had to go to a max zone (essentially prevent defense) to try and slow him down. You can tell by the score that I wasn't able to.
My passing attack is still unstoppable. I'm now exclusively running a 3WR set, and exploiting the WR3 mismatch. He's usually lined up with a LB or the S. My QB is so accurate that I just need a little space and it's going to be a completion.
Now the leaders!:
Passing: Greens Phelan and Yellows Vanbuskirk are still in the lead with 792 and 621 yards. The next closest guy has 418, so I don't see anyone overtaking them.
Rushing: The Reds Artis leads with 169 yds with the Pinks Catron behind with 108. Oddly enough, my RB Walling is 3rd! We can't run to save our lives, so that's a surprise.
Receiving: Yellows RB Amerson is dominating with 534 yds and 10 TD. The Blues Bahr is 2nd with 393 and 8 TD with the Greens Bachman in 3rd with 355 and 6 TD.
Sacks: Oranges Holloman is still leading with 7. Urquhart got another one and is at 5 now.
Returning: There are 3 guys with 4 KR/PR TDs. Urquhart, the Purples Samuels, and the Oranges Cornett. Urquhart is still the only player in the league with a punt return for TD
GoldenCrest Games
11-09-2017, 08:06 AM
Week 3:
http://www.goldencrestgames.com/wp-content/uploads/2017/11/Ex25week3.png
Ugh, we got smoked. Urquhart even took one to the house on us. :(
This game exposed a couple things about the game engine, so I guess there's a silver lining. The Blues have dialed in on the plays that work for them, and they called those plays a LOT. The Blues probably called some form of a RB swing pass at least 80% of the time. Of those, at least 80% of them went for more than 10 yards. It was unstoppable.
As the game wore on, and I threw every defense I could think of at them, I started noticing that there's a problem with zone defense. It's small, but it's causing the swing pass to be nearly unbeatable. The defenders are not passing off players that run through their zone quickly enough. Most of the time, that leads to a CB/OLB who gets sucked inside a little too much and the swing pass has nothing but open field to look at. If you have a decent RB, you're going to turn that into 73 points. :(
That's something that can be fixed, though.
On to the leaders!
Passing: The Yellows Vanbuskirk falls to 4th! Our QB Phelan still leads with 1099 yds and 19 TD with the Blues Goldberg in 2nd with 979 yds and 17TD.
Rushing: League leader is the Reds Artis with 174 yds. Ok, that's not what we want. It looks like I'm going to have to spend some time working on the running game to make it a realistic option.
Receiving: Blues RB Bahr leads with 736 yds and 15 TD. The next closest receiver has 582 yds, so he could be running away with it.
Sacks: Urquhart is now leading the league with 9 sacks. Yeah, he got me last game.
Returns: Urquhart is tied with the Oranges Cornett with 5 return TDs.
GoldenCrest Games
11-09-2017, 02:38 PM
I had a great idea for running plays and I got too excited and took the afternoon off from work to implement it!
I do that a lot more than you'd think. :)
I found 2 things that are hurting the running game:
1. I don't have a handoff animation yet so the RB is starting with the ball at snap. That's not letting the blocking develop enough, and the defense is getting to the RB too easily.
2. Defenders are getting around blocks too easily. (DL speed is still a problem)
I fixed #2 easily because I found a bug in the blocking system. There were a lot of situations where the blocking system was actually making DL faster. :eek:
For #1, I implemented a "route delay" system. Now, for any play that requires a route. (pass route, run route, block route, blitz) you can specify a part of the route where the player pauses. You can also define how long the pause it. The big benefit of this is that I can have the RB wait a quarter-second before running, and let the blocking develop. I'm also going to use it on pass plays to have late-progression WRs leak into the pattern after other WRs clear out.
So far, these 2 seem to be working really well. Instead of getting blown out by the Blues because of the swing pass, they blew me out with the running game. :(
I'll let it play out for a couple weeks before tinkering with it again.
I'm working on zone defense right now, and I think this problem is coming down to crappy play design. I have my zones set larger than they need to be, which might be causing the problem. I'll have to do some refinement of the plays and see where we're at.
Other than those things, I just tightened up some of the decision making timers to make player seem less dumb. So far it feels like I'm getting a better game. We'll see if it holds up through the season.
Next big feature: Either the stats/leaders screen or the standings/schedule screen. It really depends on which one I get inspiration for first.
GoldenCrest Games
11-14-2017, 06:10 AM
We're comin'!
http://www.goldencrestgames.com/wp-content/uploads/2017/11/greenscyans.pnghttp://www.goldencrestgames.com/wp-content/uploads/2017/11/Ex25week4.png
We had a good one against the Cyans this week. They have incredible speed at WR, so it was a little bit of a shootout. Luckily for me, their QB isn't as good as mine, so there were a few overthrows in critical situations. Once, it led to an interception that we brought back for TD!
I was pretty happy with the updates to the engine overall, but it looks like the defense AI still needs an upgrade. It looks like the defense is working as I intended, but it's always a step behind. I added the decision making timer into defensive coverage because the passing game was nonexistent early on in development. The slight delay in reaction time for the defense helped get us out of that funk. However, now that the passing game has developed to this point, I'm not sure the timer is needed anymore. I'll have to play around with it and see what makes sense. It's not horrible the way it is right now, but it could be better.
I also noticed an issue with gravity that needed immediate attention. (long-form post on that coming) I got that sorted out, but it exposed a critical design issues that I need to wrestle with before release.
Now the leaders!
Passing: Greens Phelan is leading with 1222 yds, with the Blues Goldberg right behind with 1098. The Yellows Vanbuskirk has fallen to 6th, so he's probably out. Funny enough, the Purples Vanderpool is last among starters with 154 yds?
Rushing: My RB Walling leads with 199 yds with the Reds Artis 2nd with 186. This is still not right. The Reds have only rushed 39 times this season, so that looks like the problem. (4.7 yds avg) ...... oh crap, I just realized that a 4.7 yard run is not considered a "successful run" and would tell the coach not to run the play as often, which leads to less overall running. duh...
Receiving: Blues Bahr is dominating with 794 yds and 16 TD. Avocados make an appearance on the charts with Kibler taking 2nd with 642 yds! My top WR is 5th.
Sacks: Urquhart is dominating now with 18 sacks from the LB position. yikes! I bet they are blitzing every play now. That play was killing me.
Returns: Oranges Cornett (that superstar WR/CB I wanted) leads everyone with 10 KR/PR TDs. Urquhart has 8.
Kicking: Yellows are killing it with 12/19 on FGs. Fixing the gravity problem is really helping FG accuracy.
GoldenCrest Games
11-15-2017, 06:43 PM
A funny thing happened during my game against the Cyans. I lined up for a punt, and kicked the ball. The ball sailed up as normal, but then all of a sudden it darted back to the ground as if it got yanked by an invisible chain!
???
As I started digging into it, I noticed that it only happened when I was playing my game at the same time as I was running multiple games in the background. I thought it was weird because there’s nothing special about running 1 game in the background, or 10 games in the background. It’s all the same as the game I’m currently playing. In fact, they even use the exact same calculations engine and physic-…….oh crap.
Every game is changing gravity each time the ball is in the air.
Remember way back when I was having a hard time with getting the ball flight to look right? I fixed it by specifying the height and speed of the ball, but I allowed the gravity to be changed to get the ball to land at the right spot. The end result is a really nice looking ball path. The downside is that gravity is changed every time there’s a ball in the air, and that means every other game with a ball in the air is affected.
Ugh!!!
I can solve that 2 ways:
I can fix gravity, and not let it change. It’s not hard to do, but the ball flight looks like crap. Believe me, it gets really annoying.
I can make sure only 1 play is being run at a time. This is really going to extend sim time.
So I started doing the quick math to see how long we’re talking for option #2. I’m planning on shipping with 20 teams in the league. During my Ex2.5 sims I’m averaging just under 4 seconds per play. So if you do the math, I should expect a 20 team league to play a week in just under an hour.
Yikes! That’s way too long!
So that won’t work. However, if I met my goal and was somehow able to sim 4 games at a time, we’re still talking about a 15 minute sim time. That’s still not going to cut it. There’s no way I’m sitting at my computer for 15 minutes every sim.
So now what? What’s that mean for the regen3 universe?
It means I need to develop a fast-sim option.
I’ll probably leave the slow-sim as an option, if you want it. (I know I’d use it for my high-profile leagues) Adding the ability to fast-sim the league is now a necessity. You have to be able to run a week’s worth of CPU-vs-CPU games in under 5 minutes for this to be a viable game. The problem with that (besides development time) is you have to somehow make the fast-sim relatively consistent with the slow-sim and the played games. That’s the thing I hate about most games’ fast-sim, they almost never jive with what you see on the field. I remember back when I was a big EA Sports: NCAA Football fan. I got so tired of the fast-sim being wildly different than the played games that I started stocking my roster with “sim only” players and “play only” players. I’d put the sim-only players in when I simmed games, and take them out when I played.
I really don’t want to have a situation like that.
Well, that’s solved…. 🙂 That’s pretty far down the list of things to do, though. There’s a good chance we don’t see the fast-sim option until right before release.
GoldenCrest Games
11-17-2017, 08:11 AM
I did a lot more engine work this week than I'd anticipated. I think the game quality is improving a lot, though!
Engine updates:
Updated the man defense assignment procedure. I finally abandoned the "CB1 covers WR1, CB2->WR2..." style coverage. I could see on the greens games that it's really easy to exploit and get mismatches all over the place. I took the control out of the human's hands and put it in the coach's hands. Now, no matter what you do on offense with depth charts and game plans, the defensive coach will line up coverage from best to worst. His top man defender will cover the top receiving threat. (even if it's a RB) Then the coach goes down the list and assigns the rest according to his rank of coverage skill and receiving threat. If there's not enough man defenders, it always ends up being the worst receiver that is uncovered.
Tightened up man defense coverage positioning. Overall, made man defense a lot better.
Greatly reduced the QB scrambling. It became pretty clear that scrambling is more of a problem than it's worth. If you have a high scramble QB you can't do anything in the passing game, even if you have a highly skilled QB. That's not right. Now every QB will hang in the pocket for a reasonable amount of time. High scramble QBs will still break the pocket earlier than others, but not nearly as soon.
Replaced scrambling with QB running. Even though I got rid of scrambling, I still want running QBs. Scrambling has been replaced with overall QB running, on designed running plays. The scramble rating is going to be more of a measure of how well the QB is at running. It's the RB rating for QBs.
Refining Open Field Running. Still dialing this in, but runners are getting a lot better at finding holes, avoiding tacklers, and following blocks. The hardest part left is balancing the tendency to run upfield with the tendency to run sideways to find a hole.
Non-Engine Updates:
Changed how coaches evaluate their roster and potential draft picks. Previously I had coaches preference based on position. They liked WR, they didn't like DL...etc. It worked, but the system broke down when we got to lower depth chart players. (WR3, OL3...) Instead of getting too cute about it, I changed the system so the coach has a preference for every depth chart slot. Coaches differentiate the value between WR2 and WR3 based on their roster style, which wasn't possible before.
Coaches have different "starters", depending on style. Now that each coach can build a personal roster style, they also each have different starters. Some coaches will use 2 RB and 2 WR, while the greens will probably use 1 RB and 3 WR. The starters package will also be tied to the coach's individual playbook..... at some point. :)
Started the "League Central" interface. It's not 100% functional yet, but when we get to the next season we'll get standings, game results, league leaders, and team rankings all on one page. It's pretty cool.
I just have to make sure I didn't introduce any bugs to the game engine, and we're off to the next week of Ex2.5!
GoldenCrest Games
11-18-2017, 06:48 AM
It's week 5, and we take on the Silvers. They are an all passing offense team, with no defense to speak of.
Week 5 Scores (https://www.facebook.com/GoldenCrestGames/photos/a.1099711413403729.1073741827.1086561218052082/1732813226760208/?type=3)
It's hard to say if the defensive Ai adjustments made a huge difference, because the Silvers have an atrocious defense. Their #2 CB is rated in the 50s with a speed of 67..... and that was the 2nd best player not on the D-line. :eek:
The offense is stacked, though. Top to bottom stacked. I think the worst guy on the starting offense was rated 85ish and was the center.
One thing I noticed with the passing game update is that the RB is no longer a guaranteed long reception. In fact, my RB drops more passes than he catches. I changed receiving for RBs to use the WR ratings, and it's killing my RB. I had a lot of drives where I had to think really hard about calling a pass to the RB because there was a +50% chance he's going to drop the pass. That really changed how I use him in-game, which is the kind of decision making I'm looking for.
Now the leaders!
Passing: Phelan still leads with 1503 yds. The Blues Goldberg is next with 1251.
Rushing: The Greens Walling leads with 203, but he's also got 50% more carries than the next guy on the list. I'm pretty sure this isn't going to work itself out until next season. The Coaches have really figured out what works for them, and it might be too late to change that this season. (without wiping the play records)
Receiving: The Blues Bahr has 947 and 19 TD now. The Greens Bachman moves up to 2nd with 695 with both the Avocados Kibler and Yellows Amerson at 690.
Sacks: Urquhart is up to 23 now. He's making a mockery out of the sack leaderboard.
Returns: Oranges Cornett is pulling away with 12 return TDs. Urquhart is 2nd with 9.
Kicking: The Yellows are leading by a LOT with 14 FG. We're next with 6, and 3 of those came last game! :eek:
GoldenCrest Games
11-18-2017, 06:17 PM
Ha! I finally figured out why running isn't working!
It's not blocking, that's turning out to be pretty great. It's not the RB (usually) because they are pretty good at finding running lanes and following blocks.
It's because I drew up most of my running plays with the 11 man NFL-style game in mind, instead of the 8 man game. You can't power run the same way with 8 players on your side, no matter how many blockers you pull in to help. There's just too much free space for defenders to get around the blocks.
What I'm finding is that any time I go power, and bring the WRs tight to block, the defense has too much of an advantage. The defense only needs one guy to get through and blow up the play, and WRs generally don't make great blockers. However, if I spread the field and then run, the offense has a much easier time. Spread 2 WRs out and take the CBs with them, and now you have a chance with the inside running game. In fact, a 2 RB set with 3 OL and 2 WR split wide can do some real damage. Have the stronger RB lead block up the middle to pick off the LB and you can get some sweet runs!
That's a relief.
Back to zone defense now!
GoldenCrest Games
11-19-2017, 11:42 AM
Week 6: Cornett continues his return dominance.
The Oranges are 0-5, we better win this one.
GoldenCrest Games
11-20-2017, 06:14 AM
We have a pretty easy time with the Oranges, despite the continued kick return dominance of Cornett.
Cornett also did a pretty good job locking up my top WR Bachman, and my RB can't catch the ball to save his life, so I leaned on the running game a bit more this game. Running out of the spread might be my new favorite play.
Also, you might notice only 4 games this week. I had to start giving 2 teams a bye each week because I didn't have a balanced schedule when I started. Something for me to remember going into next season.
Now the leaders!
Passing: Phelan up to 1684 yds. The Blues Goldberg is 2nd with 1258.
Rushing: It looks like the rushing numbers are starting to creep up now. The Reds Artis now leads with 322 yds with our Walling in 2nd at 301. The Pinks Catron is starting to climb up the charts with 190 yds now.
Receiving: The receiving change must REALLY be hurting the Blues Bahr. He is still at 947 yds. Unfortunately Bachman couldn't gain much ground and is at 738. The Reds Artis must be the new flavor of the week because he's also jumped up on the receiving chart to 3rd with 704.
Defense: Urquhart adds to the sack total with 29 now. Seriously? 6 more sacks?
Returning: Oranges Cornett keeps rolling with 14 returns for TD. Yeah, he got 2 on me. :( The Purples Samuels has jumped up to meet Urquhart at 10.
Kicking: Yellows add 4 more and lead with 18 FGs. The 2nd place team (Greens) only has 8.
Misc: Weird stat. My LB Mincey is leading the league in special teams tackles with 38. Twice what the next guys has.
GoldenCrest Games
11-21-2017, 06:46 AM
Me running out the clock on a disastrous week 7 against the Reds. (but my favorite play :) )
As bad as the score looks, it wasn't even that close. It was a butt kicking from start to finish. I'll have to lick my wounds before I can take a look at the league leaders.
On the positive side, I found a couple more things to tighten up in the engine before next week. Most of it has to do with tightening up defensive pursuit. It's still just a little off on low-skilled defenders.
GoldenCrest Games
11-22-2017, 06:05 AM
So we got our butts kicked by the Reds. When they were on offense, we couldn't stop the pass to the RB. He was ridiculously fast and could catch. I also couldn't do anything to stop the kick returner after I managed to score. (probably the same guy)
We started off pretty even, trading offensive TD early. Then the Reds started running a double blitz and got a couple sacks. After that, they blitzed nearly every play and there wasn't much I could do about it. My RB doesn't catch nearly well enough to counter consistent LB pressure. Once they found that out, it was pretty much the end of any chance I had.
With 3 game-weeks left, here's how the playoff chase is going:
Reds: 6-1
Greens: 5-2
Blues: 4-2
Cyans: 4-2
Yellows: 4-3
Pinks: 3-3
Avocados: 3-3
Silvers: 3-4
Purples: 2-5
Oranges: 0-7
Top 4 teams make the playoffs. Looks like Silvers, Purples, and Oranges are out. Everyone else still has a chance!
Now the leaders:
Passing: Phelan still dominates this one with 1958 yds. The Silvers Kohler moves up to 2nd with 1436
Rushing: Walling still leads with 381, but the Reds Artis has now moved to within 50 yds. The Silvers Cardenas is the last ranked starting RB with only 38 yds! (and the only RB with less than 1 yd/carry)
Receiving: Blues Bahr leads with 947 with the Reds Artis right behind with 924. Our top WR Bachman is 3rd with 757. The Silvers Devoe is the most targetted WR in the league with 6 more than Artis and 15 more than Bahr, but he's down at 704 yds.
Sacks: Urquhart stayed at 29 due to the bye.
Returns: Oranges Cornett still leads with 16 TDs. The Purples Samuels is 2nd with 11. The Reds Artis moves up to 3rd with 10, largely based on their game against us. :(
Kicking: Yellows still lead with 20/27. Greens are closing the game at 12/13. There are only 3 teams better than 50% on FGs. Yellows, Greens, and Cyans. The Blues have only attempted 4 FG this season!
GoldenCrest Games
11-23-2017, 03:07 PM
Pretty nondescript game for week 8. The Pinks didn't have much in the way of top-end talent anywhere that I could notice. I took the easy week as an opportunity to try out some of the running plays I'd been avoiding.
There are only 2 weeks left in the regular season, and I didn't pick up any more engine updates to be done. I think I'll power through the last games this weekend and present the final league leaders after that.
GoldenCrest Games
11-24-2017, 08:35 AM
Week 9 in the books!
The Greens barely escape the Avocados. Halfway through the game we had to commit to the spread offense and bench our RB for a 4th WR. The drops were killing us. Of course, the Avocados started shifting to an all-out blitz defense since we were in 100% pass mode. We were able to manage that with the added receiving out of the backfield.
One more week until the playoffs, but the top 4 are already set. Reds, Blues, Greens, and Cyans all clinch this week. Week 10 is all about seeding.
Nobody wants to play the Reds in the first round. :eek:
GoldenCrest Games
11-24-2017, 08:36 AM
As it turned out, the Greens-Avocados game got a little confusing. :)
So much green!
GoldenCrest Games
11-25-2017, 09:14 AM
Week 10 in the books!
Finals standings are:
#1 Reds 8-1
#2 Blues 7-2 (won the tiebreaker against the Greens)
#3 Greens 7-2
#4 Cyans 6-3
Yellows 5-4
Pinks 5-4
Avocados 3-6
Silvers 3-6
Purples 2-7
Oranges 0-9
Oranges make the clean sweep and lose every game!
Playoffs are set. The Cyans have the honor of getting destroyed by the Reds in the first round. Blues and Greens will play to see who gets to be desert.
GoldenCrest Games
11-25-2017, 09:46 AM
End of the season awards!
Passing: Greens Phelan. 2435 yds and 40 TD.
2nd place: Blues Goldberg with 1616 yds and 27 TD
Rushing: Greens Walling. 437 yds and 9 TD
2nd place: Reds Artis with 344 yds and 4 TD
Receiving: Reds Artis. 70 rec for 1345 yds and 27 TD
2nd place: Blues Bahr with 56 rec for 1290 yds and 24 TD
Tackles: Pinks Hendry 65 tackles
2nd place: Silvers Kruse with 61 tackles
Sacks: Blues Urquhart 32 sacks
2nd place: Pinks Hendry with 26 sacks
Returns: Oranges Cornett 18 Kick Return TD, 1 Punt Return TD
2nd place: Reds Artis with 11 Kick Return TD, 4 Punt Return TD
Kicking: Yellows Amerson. 25/33 FG
2nd place: Greens Mincey 17/20 FG
MVP: Calculated from standard fantasy football scoring, and a modified version based on this engine.
Reds RB/CB/KR Artis!!! (533 MVP Points)
2nd place: Blues RB/CB/ST Bahr (398 MVP Points)
3rd place: Yellows RB/S/K Amerson (343 MVP Points)
My top guy was #4 WR/LB/K Mincey with 327 pts.
GoldenCrest Games
11-26-2017, 05:32 AM
First round of the playoffs done. As expected, the Reds move on pretty easily.
We had a pretty tough time with the Blues. It went down to play 77, where we hit the WR4-turned-RB for a game winning TD! For the championship, I'm going to let the Greens coach cal the plays. I think I've built up enough play record now that the coach should call the game pretty well on his own.
Here are the (newly implemented) scoring logs for both games:
(23): Reds - QB Yost passes to RB1 Artis for a 46 yard TD!
(36): Reds - QB Yost passes to RB1 Artis for a 9 yard TD!
(39): Cyans - QB Mclellan passes to WR1 Matthew for a 15 yard TD!
(46): Reds - K Yost hits a 26 yard field goal.
(58): Reds - QB Yost passes to RB1 Artis for a 1 yard TD!
(9): Greens - K Mincey hits a 34 yard field goal.
(12): Blues - QB Goldberg passes to RB1 Bahr for a 32 yard TD!
(17): Greens - K Mincey hits a 56 yard field goal.
(30): Greens - QB Phelan passes to WR3 Paschall for a 22 yard TD!
(39): Greens - K Mincey hits a 35 yard field goal.
(48): Blues - PR Urquhart returns the punt for a 83 yard TD!
(55): Greens - K Mincey hits a 43 yard field goal.
(59): Blues - QB Goldberg passes to WR1 Towle for a 52 yard TD!
(72): Greens - QB Phelan passes to RB1 Chalmers for a 47 yard TD!
(74): Blues - QB Goldberg passes to WR2 Urquhart for a 61 yard TD!
(77): Greens - QB Phelan passes to RB1 Chalmers for a 41 yard TD!
GoldenCrest Games
11-27-2017, 04:10 PM
In a shocker, the Greens coach calls a much better game than I do and destroys the Reds to win the Exhibition season 2.5 championship!
Scoring Log:
(5): Greens - K Mincey hits a 61 yard field goal.
(11): Greens - QB Phelan passes to WR3 Paschall for a 56 yard TD!
(15): Reds - QB Yost passes to WR2 Ozuna for a 58 yard TD!
(18): Greens - QB Phelan passes to RB1 Chalmers for a 52 yard TD!
(25): Greens - QB Phelan passes to RB1 Chalmers for a 45 yard TD!
(36): Greens - K Mincey hits a 49 yard field goal.
(41): Greens - CB2 Paschall intercepts the pass and returns it for a TD!
(50): Greens - QB Phelan passes to RB1 Chalmers for a 59 yard TD!
(56): Greens - QB Phelan passes to RB1 Chalmers for a 67 yard TD!
(61): Reds - K Yost hits a 35 yard field goal.
(64): Greens - QB Phelan passes to WR2 Mincey for a 50 yard TD!
The WR-at-RB experiment really paid off. I gave up all my running attack to get the extra passing attack. Seems like a good trade to me. :)
Now that the exhibition season is over, I can take stock of where the game is at and what needs to get done before we kick off the first regular season. I'd like to get the game into a nearly playable state before the next season. It would be great to start playing a compiled and deployed version of it from now on. (Then I can play it on my gaming PC, and record videos!) It would also be cool to start playing around with multiplayer options.
Before we got to all that, I need to figure out the plan for the next phase of development.
GoldenCrest Games
11-28-2017, 05:47 AM
We ended up in a pretty good place, engine-wise. The last 4 games didn’t show any outrageous issues, so I think the engine is pretty stable now. There are some thing I thought I wanted to improve, but it’s hard to tell if it’s an engine issue or a player ratings issue. I decided to hold off until I get some different players tested.
So now we’re back into hardcore development again. Here’s the plan:
Get to the final league size and configuration (20 teams, 2 division, 260-300ish players)
Completely finish the functionality of player generation and the allocation draft. Everything should work as it will in the final game. The style and graphics will change, but it needs to be 100% functionally correct.
Complete all of the league structure stuff. Standings, schedule, playoffs, league leaders, etc.. should all work and be in final functional form
Finish off the coach personality, playbook style, and roster style systems. Should all be in final form
Implement contracts and free agency
Create and implement the college draft
Implement player potential/progression system
Create all the plays and style-specific playbooks
Everything should run on a compiled and deployed version of the game, on another computer. It really needs to be stand-alone after this development cycle.
I need to be able to take videos of game play. This is really a must if I’m going to hit my goal of releasing in the spring. I need to start building momentum towards the release date, and game play videos will really help. If the next hardcore cycle isn’t going to happen until February, I can’t afford to wait.
Basically, everything should work as intended by the time we get to the next season. Regular Season 1 should be about play balance, interface graphics, and prepping to send alpha versions out for play testing (or multiplayer).
As I look at the list, it seems like a lot. I’m going to shoot for completing it by Jan 5th. That would give me the weekend of the 6th/7th to hold the Regular Season 1 draft.
I’m starting with the allocation draft, and I’m not moving off of it until it’s complete. I think I’m far enough along now that I don’t need to leave features partially completed in order to get something else working. Now it’s time to finish things off.
jct32
11-29-2017, 07:53 PM
I'm loving this. 8 man football is really big in my area with smaller schools. If I could somehow modify this and play it as a 8 man high school sim. I would buy it.
GoldenCrest Games
11-30-2017, 05:44 AM
I'm loving this. 8 man football is really big in my area with smaller schools. If I could somehow modify this and play it as a 8 man high school sim. I would buy it.
I've heard that a few times as word starts to get out about the game. I have some cool ideas for a HS version of the game, so there's a pretty good chance that comes next. As I go through and refine each section of the game and engine, I'm trying to make sure it's flexible enough to allow for different league types in the future.
If I could somehow find more than 2 hours a day to work on this stuff, we'd probably have both versions out in 2018!
GoldenCrest Games
11-30-2017, 07:48 AM
I'm pretty sure we've got the final league size, player generation, and draft nailed down. (I've been secretly been working on this for a week :) )
Player generation was the hardest. The trick is to have enough elite talent at each position, with a little overlap between positions, while still creating specialists. In the end, I think I have a pretty good system. We'll see when I get to playtesting....
The allocation draft is 100% functional now. Coaches draft according to their roster preference, their specific starters package, and their current depth chart. The depth chart is also evaluated after each pick, and each potential draftee is measured against the current roster to try and maximize value.
If you're a human, you still get to use the benefit of the CPU player value AI through your coach's suggestion. The top 3 players (according to your coach) are proposed to you. Click on any of them, and you're brought to them in the draft list so you can see how they stack up against the pool. I've found that I end up going with one of the suggestions about half the time. It's not too bad.
Initial contracts are generates based on the overall player value score, and it's sort of based on fantasy football auction drafting. The contracts start at $1 for the bottom players, and rise quickly near the top of the draft to a max of $80. I've never seen a perfect player yet, so the functional max is somewhere around $70. Teams are usually drafting around $170-$200 worth of contracts. Right now I have each initial contract at 1 or 2 years. The thought is that you won't want to be locked in to a long contract right away, and could extend players as you see fit.
I've also got a few other small features built in, I just don't know how I want to use them yet. The entire draft is logged pick by pick and can be exported. I might use this for league news or something. The draft is also set up to be used for the college drafts, so I won't have to redo any of the work later.
The player value scoring AI needs a little work, but I can't dial in exact value until I'm done with the final refinement of the in-game engine. It's pretty close right now, but it could use some improvement.
GoldenCrest Games
12-01-2017, 06:42 AM
Quick note:
Remember this line item from the to-do list at the beginning of Ex2.5:
"Save/load optimization (it takes forever to save and load everything)"
I thought this was worth a specific followup, in case anyone else out there is using Unity and the EasySave asset. (it's pretty popular)
At that point, my saving time was about 120 seconds and the loading time was 60 seconds. I switched from the default save/load to the data-writer that leaves the file open and writes/reads continuously until you close it. That got the save time down to less than a second!
Unfortunately it made the load time 93 seconds. (and I still don't have career stats saving/loading yet)
I finally changed everything to sequential save/load instead of using tags. It's a little harder to keep track of everything, but I got the load time down to about 1 second with the save time still around 0.5 seconds. It was a frustrating problem that I thought it best to share the solution, in case anyone else is struggling with it.
GoldenCrest Games
12-01-2017, 07:44 AM
I have a request for anyone following this topic:
I need to fill out coaches and teams for this round of work. If you're interested in following a team through development, drop a post here with the following information:
Team Name (remember, these are going to show up on my blog/social media, so be reasonable :) )
Team City or 'location'
General style of play (wide open passing, running, defense, special teams...etc.)
Formation package
Offense: Every play has a QB and 3 OL. You can choose between these packages for the remaining players
4WR
3WR 1RB
3WR 1OL
2WR 2RB
2WR 1RB 1OL
1WR 2RB 1OL
Defense: Every play has 2DL, 1LB, 2CB, 1S You can choose the between these packages for the remaining players
1LB 1CB
1LB 1S
1CB 1S
1DL 1LB
1DL 1CB
1DL 1S
Special Teams package is the same for everyone
Also, let me know if there are any positions you want your coach to specifically focus on. I'll tweak the coach to make sure he gives specific value to those.
SirBlurton
12-01-2017, 05:21 PM
Very cool!
Team Name: Swarm
Team City: Saskatoon
General style of play: Defense (emphasis on speed)
Formation package
Offense:
1WR 2RB 1OL
Defense: Every play has 2DL, 1LB, 2CB, 1S
You can choose the between these packages for the remaining players:
1CB 1S
GoldenCrest Games
12-02-2017, 08:15 AM
Very cool!
Team Name: Swarm
Team City: Saskatoon
General style of play: Defense (emphasis on speed)
Formation package
Offense:
1WR 2RB 1OL
Defense: Every play has 2DL, 1LB, 2CB, 1S
You can choose the between these packages for the remaining players:
1CB 1S
Added!
GoldenCrest Games
12-03-2017, 02:04 PM
I've been putting it off, and putting it off some more, and convincing myself I don't need to work on it yet, and then putting it off again.....but I finally got down and finished the schedule generation and schedule saving/loading stuff. Talk about mind-numbing work. ugh!!
That said, it's finally done!
I've also implemented the league schedule into the league central screen. You can see upcoming games as well as this week's games. Eventually you'll be able to click on a game from the league central and jump to it in progress. (assuming you didn't fast sim it)
Back to fun things now! :D
jct32
12-04-2017, 08:44 PM
Team Name: Twisters
Team City: Oklahoma City
General style of play: Wide Open Offense (Hurry up if possible)
Formation package
Offense:
4 WR
Defense: Every play has 2DL, 1LB, 2CB, 1S
You can choose the between these packages for the remaining players:
1LB 1 S
GoldenCrest Games
12-05-2017, 05:54 AM
Team Name: Twisters
Team City: Oklahoma City
General style of play: Wide Open Offense (Hurry up if possible)
Formation package
Offense:
4 WR
Defense: Every play has 2DL, 1LB, 2CB, 1S
You can choose the between these packages for the remaining players:
1LB 1 S
Added!
GoldenCrest Games
12-06-2017, 06:57 AM
I have about 2 weeks to go before I hit the yearly office shutdown at my day job. That will give me a whole week of all day, hard-core, uninterrupted, lock the windows and doors, development time. Last year I found out that I didn't have enough stuff in my detailed to-do list and ended up wasting a couple of those days. I'm kind of stuck in a creative rut right now, so it's probably a good use of time to get that list together.
First, here was the original list of what I wanted to get done:
DONE Get to the final league size and configuration (20 teams, 2 division, 260-300ish players)
DONE Completely finish the functionality of player generation and the allocation draft. Everything should work as it will in the final game. The style and graphics will change, but it needs to be 100% functionally correct.
90% DONE Complete all of the league structure stuff. Standings, schedule, playoffs, league leaders, etc.. should all work and be in final functional form
50% DONE Finish off the coach personality, playbook style, and roster style systems. Should all be in final form
Implement contracts and free agency
Create and implement the college draft
Implement player potential/progression system
Create all the plays and style-specific playbooks
Here's what I can get done before the lockdown:
Create all the offensive and defensive player packages
Create a bunch of plays for each package
Create all the package specific playbooks
Create different coach profiles and style
Start the player progression system
Here's the lockdown list: (to be updated as we get closer)
Design and implement player trading and the trade block
Create the draft pick tracking system, so you can trade picks
Create a team management screen
Create screens and AI to support player contract renegotiation
Design and implement free agency
Implement the college draft
Tighten up all the screens and make sure everything works
If I can get all that done, I think we'll be in a good place to start Regular Season 1. I've found that I really need to be in real games in order to improve the game engine. When it's not live, it's hard to really focus on the details of what's happening on the field. I'll focus on the off-field stuff now and leave all the game engine updates to in-season.
GoldenCrest Games
12-12-2017, 07:21 AM
Still preparing for the programming lockdown. With about 8 days left before the beginning of the "week-of-code", I'm making good progress towards being ready.
The hardest part is grinding through all the play creation. I underestimated how much discipline it takes to write the hundreds of plays I need just to have the basic playbooks in place. I've powered my way through half of the offensive packages so far. I'm pretty sure I'll get it done before the code week starts, but it's really a grind.
I've also started dabbling in screen design (to break up the monotony of play design). I though it would be nice to have all the screens laid out before next week so I can spend the whole week on functionality. As you can see from the player profile screen, I'm starting to inch my way towards a nicer looking style. Not there yet, but it's getting closer.
I'm also trying to limit the overall number of screens by adding functionality into other screens whenever possible. In the player profile screen you'll get the contract negotiation panel if it's appropriate, instead of opening up a new screen for it. Always trying to limit screens and keep it as simple as possible.
List Update:
Here's what I can get done before the lockdown:
DONE Create all the offensive and defensive player packages
Create a bunch of plays (40+) for each package 3/6 Offense Done. 0/6 Defense Done
Create all the package specific playbooks
Create different coach profiles and style
Start the player progression system
Here's the lockdown list: (to be updated as we get closer)
Design and implement player trading and the trade block Screen Design Done
DONE Create the draft pick tracking system, so you can trade picks
Create a team management screen Basic Screen Laid Out
Create screens and AI to support player contract renegotiation Screen Started
Design and implement free agency
Implement the college draft
Tighten up all the screens and make sure everything works
GoldenCrest Games
12-13-2017, 07:25 AM
I like how the player profile screen turned out, so I'm going with something similar for the coach profile.
They key things you're going to look for when evaluating a coach are:
Player packages: This is going to determine who is on the field most of the time, and designate the official "starters". (which could come into play during player negotiations)
Playbook: As I'm developing the playbooks, I'm realizing how big of a deal the coach's playbook is going to be. There's not going to be a ton of overlap between playbooks. If a coach picks a QB run heavy playbook, he's pretty much committed. If he has a pass-heavy playbook, he's not going to be able to have a meaningful running attack. There aren't enough plays in the playbook to do everything.
Roster Makeup: A large part of what makes coaches different from each other is how they value players. The depth chart value section shows you how the coach values each position, and how he'll build/maintain the roster. Remember, each player is rated in all 3 phases so your coach is rating each player across all 3. If a player rates highly in all the critical categories, he's going to be a superstar in the eyes of the coach. If that same player doesn't fit another coach's Critical slots, he won't be valued as highly by that coach. For this coach, a WR/CB/KR would be an ideal player and would be picked ahead of slightly better players that don't fit all 3. (assuming he didn't already have a starter in those positions)
Screen isn't functional yet, but it should be set up for a quick implementation over the next weeks.
SirBlurton
12-13-2017, 03:39 PM
Nice - really like how much is crammed into those screens!
Looking forward to seeing what will happen with having more time to work on this!
GoldenCrest Games
12-13-2017, 04:56 PM
Thanks!
Resisting the temptation to add a screen for every little thing is a lot harder than I ever would have thought. I'm not in love with the player screen yet, but I came up with a few ideas to try before the programming lockdown week. The stats area is a little too busy right now. I need to get a few of the words/numbers off the screen.
GoldenCrest Games
12-18-2017, 06:01 AM
Programming lockdown starts at the end of the week! Wow, so much to do.
Let's take a quick look at the list:
Here's what I can get done before the lockdown:
DONE Create all the offensive and defensive player packages
Create a bunch of plays (40+) for each package 4.5/6 Offense Done. 0/6 Defense Done
Create all the package specific playbooks
DONE Create different coach profiles and style
Start the player progression system
Here's the lockdown list: (to be updated as we get closer)
Design and implement player trading and the trade block Screen Design Done
DONE Create the draft pick tracking system, so you can trade picks
Create a team management screen Design Done
Create screens and AI to support player contract renegotiation Screen Started
Design and implement free agency Design Done
Implement the college draft Design Done
Tighten up all the screens and make sure everything works
I'm not quite as far as I want, when it comes to plays and playbooks. I think I can get caught up today, though. Might mean another lunch over at Broadway Pizza (also known as the GoldenCrest offices) so I can get some work done. :) The good thing is that I don't necessarily need them to be done for the lockdown. I really only need 2 packages and playbooks to make sure everything works. I need them to be complete before the Regular Season 1 kicks off, though.
I don't anticipate any real roadblocks for the week. As I draw up the screens, I have a pretty good idea of how the code is going to function. The hardest thing is going to be controlling how/when the screens get used without having too many weird bugs/cheats. Most of the ones I've found so far have to do with variables not getting set correctly as you move through screens. Not rocket science, but keeping track of variables is getting harder and harder.
Today's goal: Finish off all the offensive plays and packages.
Tomorrow's goal: Finish off all the defensive plays and packages.
Wednesday: Complete all the playbooks and start the programming lockdown (half-day)
Thursday through the end of the year: Dominate
GoldenCrest Games
12-19-2017, 06:34 AM
Finish off all the offensive plays and packages. DONE!
GoldenCrest Games
12-21-2017, 06:35 AM
DONE Create all the offensive and defensive player packages
DONE Create a bunch of plays (40+) for each package
DONE Create all the package specific playbooks
DONE Create different coach profiles and style
It's go time.
:)
GoldenCrest Games
12-23-2017, 08:32 AM
Man, the development PC is really groaning under the weight of the new stuff I've implemented. (in design, not even run-time!)
Might be time to invest in a new toy! :)
Good news is that the 400+ plays that are loaded didn't kill the engine. I was a little worried what would happen when all the plays were loaded into memory. Poor design decision, but we're way past the ability to redesign the play system. That's probably high on the list for the next version. (or a future major update)
We're about a day into programming hammertime, and it's looking pretty good. I feel like I'm still on track to be able to play full-featured seasons and offseasons by Jan 5. All the systems are drawn up with the screens laid out. It's just code-monkey time to get them all to work together.
So far so good!
GoldenCrest Games
12-24-2017, 12:02 PM
Here's a newsflash: tracking trade offers is HARD!
This is another of those things I wish I'd thought through (and planned) a long time ago. It's easy for me to forget that I've been learning game development as I go, but I still wish this had been planned a lot better. Design decisions about how I track future draft picks are coming back to haunt me when it comes to submitting trade offers. If I'd planned these systems together, they'd be a lot easier.
I think I have a system now, but there's probably too much brute-force. I do a lot of 'checking' when it comes to offering future picks in a trade, just to make sure the pick is what's intended. It should really be a lot easier.
I guess this is what they mean when they say that developing games is the best way to learn how to develop games.
GoldenCrest Games
12-26-2017, 09:21 AM
It's funny how a simple looking thing can be such a victory.
Just got this section working for the trade proposal screen. It looks pretty simple, but getting future draft picks tracked by original owner, current owner, round, and year got really complicated. All those things have to be referenced and moved around by a lot of systems, so they can't just be hard-coded anywhere.
It's quite a relief when I hit the 'show' button and everything pops up correctly.
small victories. :)
GoldenCrest Games
12-27-2017, 02:28 PM
Quick update while my brain cools off.
I've been hammering through the hardest parts first this week. I hope I don't fall short of the goal, but if I do it will be easy stuff leftover. (that I can accomplish in the code-hour each morning)
Here's what'd been done so far:
Picks are now completely tracked, tradeable, and can be shopped on the block
Trading screen fully functional.
Trades can be created and submitted to the league for team review.
Trades incorporated into the save/load scripts
Trading block functional
Trading block items can be added/removed and submitted to the league in real-time for other team "shopping".
Trading block incorporated into save/load
Roster screen fully functional, with the addition of team finances and dead cap space.
You can now view trade offers from the roster screen for approval/rejection. Including offers you've submitted.
Player Profile fully functional and career stats added to the game.
Career stats added to save/load
So far I've limited trade proposals to a max of 2 players and 2 picks. It's possible it gets opened up more, but it's not easy to tell how much trading is a bad idea until we start playing. Right now it feels like trading 2 players and picks, with a roster size of 12, is a good limit. I grabbed a quick shot of the team management screen, with a few test trade offers thrown in. Seems like it's all working!
GoldenCrest Games
12-28-2017, 10:36 AM
It looks like today is a big debugging day. :(
I almost dove into FA, but the transitions between screens were a huge pain, so I worked on that for the first hour. It was then that I noticed that trades weren't getting submitted or saved exactly right.
Cool, I can fix that.
Then trades weren't getting accepted correctly.
No problem, start displaying the trade validity results to screen....WTF??
repeat about a thousand times today.
It's good that I caught it now, but it's eating up a lot of time. I implemented so many things at the same time that there are a lot of little bugs that add up to the system not working. I think I'm close to having the new stuff playing together nicely. I just have to run a few more league drafts/trades/save/load scenarios. We're down to little things like refreshing screens correctly without me hitting the "load" button.
ONWARD!
GoldenCrest Games
12-28-2017, 10:48 AM
Quick lesson learned..
I had a developer friend who used to always tell me not to start writing game logic until I figured out how I was going to save and load the data from file. I used to laugh at him and call him old.
Well..... as it turns out, he might have been on to something. Fancy data storage classes look cool in the logic part of the code, but they are a huge pain when it comes to saving/loading. I really wish I'd used something a lot simpler for moving data around.
ugh! I hate it when he's right. :)
GoldenCrest Games
12-28-2017, 12:52 PM
I've been working on this for so long that my Pandora ran out of music and started playing Avril Lavigne.
:)
However, NO MORE BUGS!
Back to features!
GoldenCrest Games
01-02-2018, 07:02 AM
Still hammering through new features, but it looks like I'm going to miss the goal of being fully functional by the end of the week. I'll probably have everything working, but won't have the AI in place yet. Still, not bad!
I spent the last couple days working on a FA system. I'd really like to have the option of starting the league with an 'Allocation Free Agency' instead of the draft. The draft is cool and all, but I like having a little more control over who I build a team with. Besides, if the FA system works for allocation, it should be just fine for offseason FA.
Here's a quick shot of the progress. I don't have the "interest" AI working yet, (or the contract demand AI) but that's next on the list. I set contracts to a max of 8 years, just because I like the idea of 7-year extensions. It might be a little long, especially in the world of guaranteed contracts, but it's a good start and should give you a lever to pull for those superstar free agents.
GoldenCrest Games
01-09-2018, 07:38 AM
Ugh, going back to 1 hour of programming a day is a real bummer. I should really think about investing in the lottery so I can stay home all day.
:)
The free agency AI is taking shape! Player AI is all done, and seems to work pretty well. Player interest in your team take the following things into account:
1. What they feel their skills are worth, compared to your available cap space
2. Would they be a starter
3. Would they start on both offense and defense
4. Do they already have an offer that exceeds your cap space
That's the interest feedback you get from the main player window. If you've already made an offer to a player, he shows up in the offer window and the interest feedback is slightly different. That is the player's interest in the contract you have on the table. It's basically the same as the other interest, but the player also weighs your offer against other offers he already has.
If the interest goes down during free agency it's because:
1. He got a better offer than yours
2. You ran out of cap space
3. You ran out of roster spots
4. You signed other players and now this player isn't going to be a starter
Right now you can adjust your offer to increase the interest again. Soon you'll be able to cut players as well, to manage the roster during FA.
So far it seems to work pretty well. I'm going to start hammering through the team AI now, so I'm bidding against more than just myself, Twisters, Swarm, and T-Pain.
GoldenCrest Games
01-18-2018, 04:21 PM
Free agency was much more difficult than I thought it would be, but I think I got it now!
This was the last thing I needed to have working before I could start Development (Regular) Season #1. It's pretty close to working now.
I just have to tighten up how I move from one screen to the next, run a few tests to make sure I didn't break anything else, and do a few save/loads to see that all the data is being written/read correctly and we're ready to go! After spending so much time in free agency, I changed my mind and am going back to the expansion draft to kick the league off. I just can't take FA anymore. :)
Wouldn't it be great if I could draft this weekend?? :eek:
*crosses fingers*
GoldenCrest Games
01-19-2018, 04:11 PM
Finally! It’s time to kick off the first Development Season #1! (formerly known as regular season #1)
All the screens and phases of a game season are in place, and are tenuously tied together. It all works well enough that I can start playing real seasons with players that carry over from one to the next. It’s going to be really helpful to start playing the game like it’s going to be played by everyone else. I think the improvement is going to take huge leaps forward now that I can see how it all works together. It’s always hard working on individual components, because you never really know how the experience is going to work when you finally get to play it.
Besides, actual games are a lot more fun than messing with screen and engine functionality. 🙂
The Development League is set up with 20 teams this time. The 10 teams from last season are all back:
Reds
Blues
My Team: Greens (Now the Treefrogs)
Cyans
Yellows
Pinks
Avocados
Silvers
Purples
Oranges
We’ve added 3 new “sponsored” teams to the mix:
Twisters
Swarm
T-Pain
and we round out the league with 7 new ones:
Rainbows
Grays
Browns
Eggshells
Slates
Olives
Maroons
So, you might have noticed that I’m struggling to find color names for the teams now. So true. Even though we’re reaching the bottom of the barrel, I stuck with the colors on purpose. As a reward, the two teams who reach the championship each season will get real team names and custom team logos! For the teams that already have names, they still get the logos. That should be pretty cool, right?
Everything looks good so far for the season kickoff this weekend. We’ll start with an allocation draft. Since this is going to be for the long-haul, I need to do some real scouting on the draft pool. I’ll generate a pool and post it in the blog. Hopefully I can also post the results in excel format for anyone to see how their favorite team did.
As a development goal, I’m going to try and fix 3-5 things between each game. Outside of that, we’ll just see where the league takes us.
vBulletin v3.6.0, Copyright ©2000-2026, Jelsoft Enterprises Ltd.