Skip navigation

Ok, time for another update! Yes, this mission is taking forever but slowly this project continues forward! These past weeks I have been getting some good work done. I took the web development stuff in my own hands now and created my first asp.net site! I think it looks much better then the one we had before and now I have full control of when I want and need to post new content – and I know how it works. The domain is up but I don’t want to share it yet because I want to wait until it’s totally finished. I don’t want people creating accounts and trying to buy the product before it’s even done.  Learning how to make a website in visual studio using C# and asp was a whole new accomplishment of it’s own… I learned about master pages, css (cascading style sheets), user login controls, writing and connecting to databases ,the whole works! The way I see this project is it’s like a huge piece of portfolio work to stick in my portfolio. Web design, game design, 3d model design, video production, programming and scripting! I want to create this add-on so I can say to any future employers – hey, look at this game here at this website, yea, I mostly created it all! That would be really nice to have in my pocket.

 

These past two days I have been working on the security features of the application, so it’s hard for pirates to steal. I want to sell the mission somewhere in between 15- 20$ which I think will be a steel of a deal compared to other add-ons I see out there. Since my application is somewhat server based I decided to go this route. I created a startup screen that asks for your username and password, it then validates that against the free sky production database and logs you in! Down side is you need an internet connection to play, but if you’re going to be uploading scores and what not I think it’s a valid route to take. It really isn’t that much of a hassle to push login when the app starts!

 

Anyways, I’ll keep you posted as my progress slowly but surely moves along!

Advertisements

Friday August 14th :

This is when summer school ends and is my deadline for when the mission must be totally complete! Begin first time user tests of the alpha version. I have a couple friends lined up who want to play it.

 

Friday August 21:

Make any necessary changes and then record final dialog with the chosen actors.

 

Friday August 28:

Find a couple beta testers online willing to test the mission and make changes accordingly. The new ASP website should totally finished, purchacing system should be working and files should be ready to be accessed and downloaded.

 

September 4th:

The final date when the product is released and ready for download! My guess is we are probably going to sell the mission around $25.

 

And here, I just have to add this photo of the misson while in the mission editor – Show’s how crazy this mission is getting. It’s get’s fairly complicated when you have a ton of triggers and what not. But I developed good system to keep it all orginized.

 

First of all let me mention this mission is turning out to be more then just a basic FSX mission, it’s basically its own separate game inside of flight sim now, haha!

 

While putting more and more work into the F-18 Blue Angels training mission, the scoring technique was starting to get messy – and the last thing I want to do is to confuse the user. So today I stepped to organize all this to the best I could before I go any further!

 

The reason why it got so messy is because I’m keeping track of so many things, each with different significance and formats of computing, and when you add them all together you get a huge score that means something…But what? So I took a step back, looked at the big picture and asked, what does earning 1 point even mean? I couldn’t answer it… 1 point really had no significance! The reason is because I was adding points for all sorts of things. Such as doing something correctly – for example each time you complete a checklist item you get 2 points, each time you pass through a hoop you get 2 points, and if you pass through all hoops you get 10 more points, ext… If you do something wrong such at forgetting to flaps down you loose 5 points. Then there are the maneuvers, depending on how well you did on the maneuver I added more points. While more and more points piled on, the scoring was really hard to follow; you really have no idea how well you were doing. And the weight of the scores was not balanced compared to the varied tasks!

(BTW, all the scoring is being done by the external FSP.exe application (Free sky productions)  – not counter trigs in the mission system. Simconnect really adds the ability to do anything).

 

So here is what I decided to do. I decided to split the mission into tasks; each task has a maximum earning of 100 points. As you complete a task it sends a message to FSX showing the user how well they did (for example 80/100 for the chandelle manuever). So as you play you now know if your doing good or bad for each task you do. Here are the tasks which I plan to incorporate in the mission: Checklist Score, TakeOff/ Climbout Score, Chandelle Maneuver Score, Loop Maneuver Score, Chicken Maneuver Score, Low Contour Flying Score, Formation Score, Landing Score, and Bonus Point Score.

 

Each of the tasks is going to have its own individual tab in the FSP.exe external application. So after you complete the mission, or even as you play the mission, you can look at how things are being graded for each task. 

 

To give you example let’s take a look at one of the maneuver and how I grade it. Let’s look at the chandelle maneuver. If you don’t know what a chandelle maneuver is it’s basically a climbing turn. The things I keep track of are Bank angle and speed. The entire time you should maintain a bank angle of 40 degrees with a constant speed of 400 knots. The maximum you can get for this maneuver is 100 points. You lose points by the amount you deviate from the assigned speed and bank angle. You must also pass through all the hoops! Take a look at a screen shot of the grading system for the chandelle maneuver:

 

This is how I plan to grade the rest of the maneuvers – in a similar fashion. As you can see, the mission has grown from a basic mission to more of a sophisticated external application. I am really starting to learn to program now which I never thought I be doing Wink

 

 

A website dedicated to reenacting the Blue Angles for FSX! Im glad to see there is an enitre group of people dedicated to the Blue Angles, I will be sure to join their forum section so I can ask questions and gather ideas from the people who know the Blue Angels the best and perhaps cordinate with the mebers of that site to help with my quest of creating the best Blue Angles mission ever! 
 

This week Mike and I took a good look into developing a data driven website using ASP.net. If we wanted to upload scores to our website we needed someway to develop an interactive website where you can register and manage your accounts and what not.

 

After playing around with it and watching some tutorial videos over at Asp.net I must say ASP is some powerful stuff! You program in c# and it automatically creates the HTML and data driven related stuff. The way the databases are handled is fairly simple. You create a SQL database; create a table, then using a dataset object create the methods that manage your data. It looks like some fun stuff that im even tempted to play around with but Mike will be the one mostly responsible for the website related material.

 

I haven’t looked in on how to do this yet but hopefully there is a way to connect directly to our databases on the server then write scores directly over the internet. Something I have to look into this week…  

 

I also have been working on programming in C# for our external application that will be used for the score calculating. Reading events was easy to get working but getting simVar data from the sim into our application was a little trickier to set up. But I got it working and it will come in very helpful for our final product! For instance say we want to grade how well you keep a steady 15 degree turn during one of the maneuvers. Now we are able to capture your bank angle – let’s say every second, store that to a variable then once complete average it out to see how close you were to staying at 15 degrees.

A look at the AI going to be used in the F-18 Training Mission. Enjoy!

   

Ok, so I promised a post every Monday, so here I go. This week’s subject is artificial intelligents!

One of the hardest challenges we’ve faced with making a Blue Angels Mission is AI aircraft. We asked ourselves over and over again, how the heck are we going to get this AI to work? How in the world are we going to get 6 Blue Angels flying in formation at the same time? Is it even possible? I looked at a variety of solutions with the mission system, using AI waypoints and so forth, but after experiencing copious amount of problems and bugs I knew this solution was far from possible. But where this a will there is a way! And I came up with a solution. It involves recording your flight and playing all 5 of them back at the same exact time. It works like a charm! The only problem is it takes forever to record each AI! You have to fly each aircraft in formation and if you make one mistake – START ALL OVER. I will post a video of the working AI tomorrow! I have to say, it’s pretty amazing seeing all 5 of the Blue angels (plus you) working together! And I think I am the only one who successfully implemented this in a working Mission, I’m surprised no other Blue Angel Missions exist yet!

I mentioned earlier about how I am working on a F-18 Blue Angel Training mission for FSX. You might have though I quit but OHHHH NOOOO – we are still on and have big plans for this project! My partner Mike and I are starting up a company entitled Free Sky Productions LLC, aimed at making high quality complex missions for FSX. A very rough draft of the website is going up and will be under construction for quite some time (while we get closer to release date). I guess you can take a look now if you want… http://freeskyproductions.com/ and watch it develop as time goes on. The goal is to get a well done quality mission out the door and up on our site by Early August 2009 and will be working very hard this summer to get it done.  Since becoming very familiar with the mission system over at ACES and starting to learn programming, I wish to build a mission that’s quite unique and much more sophisticated than any other mission developed. Perhaps the most sophisticated mission built for fsx!

 

What makes this mission any different from the rest? The answer is it’s much different!  You may have played the default missions for FSX but this mission is nothing like those. The original plan was to create a tutorial like mission with built in visuals to help you learn the F-18, which can be quite intimidating to any first time user. For instance instead of having to read a long manual on how to operate the aircraft you would just start up the mission and it will step you through the start up procedures, how to properly take-off, complete some maneuvers and land.  Well, when starting off we got the first half of the mission complete, with some cool features including a helper cam that will show you where in the cockpit the various controls are in real time while playing the mission. But something was missing. It wasn’t very fun to play, especially when flying over and over again. It needed a challenge and a reason to re-play the mission.

 

So this is when we started thinking about a point system. One which keeps track of your score depending on how well you fly the mission. The mission system really doesn’t have anything developed for keeping score, except perhaps via counter trigs – which can become quite tedious and time consuming and doesn’t really give us the results we want. So I had to find a way… And there is a way! The answer is in Simconnect! Just recently I hooked up my first simconnect program and have it running. Simconnect basically opens the door to unlimited possibilities and wished I explored it earlier – you can connect to any simVar or simEvent and use that in your external application. There is one action in the fsx mission system that has one million times more power then any other action or trigger in the OPT. They should have called it the “SUPER MEGA ACTION” but instead it’s called the “custom action”! Basically it lets you send your own payload string to simconnect and if your simconnect app is able to do something with it, it can process it and do whatever you want. Whether it adds a point to your score, fire another mission action, send a message to flight sim, set a simVar, create a waypoint for AI object, or anything you can think of for that matter! Basically it’s awesome! So right now I am working on the FSX Blue Angel Training Mission External Application that connects to FSX and will keep track of your progress and score and perhaps a little more. We are thinking after completing the mission you will upload your score to our website where you can compare a judge yourself amongst the other Mission players. This is an unknown feature at this time but one we wish to include it. We will probably need to find a web programmer that will help us develop the online experience. If you know any web programmers/ developers that are willing to take chance and help a start up company, let me know!

 

Also, it needs to be exciting and enticing to play. Not cut and dry. This is why we want to spend a good time getting our story down, with a good plot and well done voice over’s. We also wish to include music, some custom scenery objects and custom aerial imagery.

 

Anyways, there is a ton of work to do and now that school is over it is time to get down to work! I know words are easier said then done but we are commited toward this project! Mike is getting a forum set up, so any discussions or questions should be discussed over there. Discussion and ideas are very much welcomed! There is no link to the forum on our site at this time but ill give it to you anyway – http://freeskyproductions.com/forums/

 

-I wish to post updates every Monday on the progress of our mission. So stayed tuned!  

Man, I’ve had to deal with writing so brutal java programs this quarter for my 143 class. The LinkList program which requires you to write your own node class, and LinkLint class, plus three other classes that create a mini word editor was probably the hardest. You had to be able to insert or delete a letter at your cursor using LinkLists. If you don’t know what I’m talking about, a LinkList works by using only one class and the only way to get to a node in the list is to call the same class. LinkLists don’t bother me when you just have to use a class that is already written, but when you have to write your own class to make it work that’s a whole nother story… who ever came up with the concept I bow to, lol.

 

Anyways, I spent all night on another ridiculous program. Basically I had to find all possible words that can be created within a certain phrase/word. Like, how many words can you make out of the word "sink". The solution took me forever to find. After asking my teacher for help I finally came up with one. It’s a recursive solution that explodes extremely fast in memory due to the amount of possible solutions. For brushhair there are 362,880 solutions just for using all the letters (also know as a anagram – if i printed them out the list would be huge), and then when counting smaller words it grows to an even more extremely large number. If you enter a word over 10 letters it takes about 5 minutes to finish gathering all the possible solutions. Out of the millions of possible solutions there are only a couple words that match in the dictionary file that was given to us!  Anyways, here is the solution I came up with the code:

 

/* Joey Sipos
 * Assignmetn 07 Anagram solver
 * May 19, 2009
 */
import java.io.*;
import java.util.*;
public class AnagramSolver {
  //ArrayList of all anagram-phrases
  private List<String> finalAnagramList = new ArrayList<String>();
  List<String> gumbleAnagramList = new ArrayList<String>();
  private String phrase = "";
  Set<String> dictionary = new TreeSet<String>();
 
  public AnagramSolver(String phrase1, String dictName) throws FileNotFoundException {
    //add the dictionary words to the set
    String dictWords = "";
    Scanner input = new Scanner(new File(dictName));
    while (input.hasNext()) {
      dictWords = input.next();
      dictionary.add(dictWords);
    }
   
    //remove white spaces from phrase, cosolidate into one word
    Scanner tokenScanner = new Scanner(phrase1);
    String temp = "";
    while (tokenScanner.hasNext()) {
      temp = temp + tokenScanner.next();
    }
    phrase = temp;
  }
 
  //takes a word and produces all possible anagrams
  //all anagrams that are the orginal length of the phrase are stored in a list
  //The list is procesed for smaller words is the solver method
  public void produceAllAnagrams(char insertChar, String word) {
   
    //store the letters into a char array
    char[] arrayWord = word.toCharArray();
    //turn the char array into a linked list
    LinkedList listWord = new LinkedList();
    for (int i = 0; i < arrayWord.length; i++) {
      listWord.add(arrayWord[i]);
    }
   
    for (int i = 0; i <= listWord.size(); i++) {
      //add the insert char to create the new word
      listWord.add(i,insertChar);
      int j = 0;
      //turns the new Word into a string
      String newWord = "";
      while (j < listWord.size()) {
        newWord += listWord.get(j);
        j++;
      }
     
      //recurse
      if (newWord.length() <  phrase.length()) {
        produceAllAnagrams(phrase.charAt(newWord.length()), newWord);
      }
      //store if it the length of the orginal phrase
      if (newWord.length() == phrase.length()) {
        gumbleAnagramList.add(newWord);
        //System.out.println("test");
      }
      //remove our insertchar 
      listWord.remove(i);
    }
  }
 
  public void printAnagrams() {
    String firstLetter = "" + phrase.charAt(0);
    produceAllAnagrams(phrase.charAt(1), firstLetter);
   
    for(int j=0; j < gumbleAnagramList.size(); j++) {
      String anagram = gumbleAnagramList.get(j);
      for(int k=1; k <= phrase.length(); k++) {
        //if the dictionary has the word and is not already in the final list
        if ((dictionary.contains(anagram.substring(0, k))) &&
             (finalAnagramList.contains(anagram.substring(0, k)) == false)) {
          finalAnagramList.add(anagram.substring(0,k));
        }
      }
    }
    System.out.println();
    for (int i=0; i < finalAnagramList.size(); i++) {
      System.out.println(finalAnagramList.get(i));
    }
  }
}
 
 
 
 
 
 

While working on the F-18 mission as well as my 3D stuff, I’ve learned a thing or two about the process of storytelling. The first thing I’ve learned is it’s not easy! It’s hard to make a good story, and make it appealing to watch – or play. With my 3D stuff we have to create a 3D animatic of a real life story we came up. We had to tell the story like 5 times in front of a group of people and each time try and make it more detailed and appealing to the listener. Then we had to take our story and turn it into a script with detailed descriptions of how we plan to do our shots. Now I’m working of creating the shots. The shots are supposed to be extremely simple (blocked out) with simple geometry. But of coarse I got sidetracked into making visually appealing which is a bad habit of mine. I always get caught up in the details instead of letting it go and keep blocking my scene out. My teacher and I had a discussion about this. He stated how important it is to throw your ideas together really fast then go back and work on the details. Which is a simple concept, but nothing I took very seriously. Now I’m sitting here at midnight rendering and trying to finish my scenes for tomorrow because I spent too much time trying to make stuff more visually appealing. And of course with more detail it takes a lot more time to render! So now I’ve decided to take out the visual stuff for now and just get it blocked out. Hehe. Dam– he was right!

So lessoned learned, the preliminary work that goes into preproduction is actually a very important step. Get your ideas all sorted out, right the script, create a quick rough draft of your project then go back and add your changes and details. When you spend too much time on the details, and you get to the end and realize your story sucks then you have to scrap everything and start over again. Block it out first! 

Update: here is the stroy I threw together that night. Now I am going back and adding the more detailed models and textures.