Tuesday, November 17, 2015

I'm a Master of the Mind

My platforming game was a failure. Soon after I got started, I remembered how annoying it is to work with pixi.js, and I decided against making the platformer. Instead, I decided to make 1 or 2 smaller games. My first game that I'm making is Mastermind. I initially was going to use Hexaflip, but then I realized that Hexaflip was really poorly documented and was very buggy. I've made Mastermind using Vanilla JS instead. It's live at http://eli.gukovsky.com/mastermind.html right now

Update - Lake Yin

Good news! My first version of my website is up! You can find it at http://ahsguide.comoj.com/. The whole thing was created with only HTML and CSS. However, that isn't the end of the program. I am currently in the middle of learning Javascript so that I can enhance the website further. For HTML and CSS, I have learned it from Free Code Camp, which was very effective at teaching these, however, their Javascript lessons aren't that very good at teaching, which is why I am currently learning from Codecademy. After I finish learning Javascript, I will implant Javascript into my website, and then I shall move on to more languages like PHP. I will continue expanding my website this way for a long time.

Thursday, October 22, 2015

Re-thinking and Re-imagining

Will Owen

Over the past week or two I have restructured my expectations on what can be possible to do in the time I have in this class. As I think I mentioned in my last post Unity engine will take far too ling to educate myself on. I believe I also mentioned that I wanted to rework or do a different MUGEN. Yes I did do the same thing last year, but as I look back on my previous project I noticed, yes it came out good and I was happy with it but there is so much more that I can do with this software. With a newly thought out fighting engine that I intend to build from scratch, I hope to make something completely different (mechanic wise) than what I previously created.

I have plenty of ideas and I hope I will be able to include all of them in this new project. Along with a redesign that is from scratch I want to change some of the processes I went through with the first project. I will review and address what needs to be smoothed and apply that to this new project. I have already started creating some the engine and when I get a bit bored of that, I work on some of the particle effects that will be shown in the game. The process is slow but necessary to make it all come together in the end.

There is still a lot I need to look over if I want this to be an improvement, but as of now it looks like everything is going well.

Monday, October 5, 2015

Platforming with Pixi

I decided to create a 2d platformer, and I'll probably use pixi.js in order to create it. My main mechanic will be a rope that you can use to swing across platforms like in the old SNES game Pac-In-Time. This mechanic is also in the popular new game Speedrunners. I think this mechanic is pretty cool, and if I can design levels that work with this mechanic I'll include it. I was thinking about using the physics engine p2.js, but I decided against it because I don't really understand how to use it. I may not include the mechanic and make the game similar to a difficult, classic platformer like Super Meat Boy.

Will Owen

I came to this class with the idea of doing a project using the oculus rift hardware. After doing some research I found out that the laptop I bring in each day for the class would not be powerful enough to run the virtual reality headset. After this realization, I tried to find a new project to work on while in the innovation lab. I decided to stick to the engine that I was going to use for the  oculus project known as Unity but instead learn that and develop something inside of the program. After learning the basics of the program I realized how much I would need to do just to get started making simple program. After once again doing some research I realized just ho much time I would have to spend just learning everything I would need to. The time required exceeds far beyond the amount of time I have in the class and so I am once again left looking for a new project idea.

I have some ideas in mind. Do to the success I had last year in the MUGEN software I have been thinking about taking what I know and improving upon that to make an even better game. If I do go down that route then I would probably create a new game engine from scratch to develop a different kind of fighter.

I had quite a lot of success and fun developing the game last year so it might be worth taking another look into it and making some big changes or more likely a completely new game.

A picture from last years development of my game:

Project Update: Lake Yin

So, for my project, I was doing a website. This website was going to provide advice and tips to students of Andover High School. I'm building it using HTML/CSS and maybe some JavaScript, if I can figure it out. I'm going to try to program in Sublime Text 2 as my primary editor. So far, I have a main CSS file set up, an entry page, and a home page. I have started work on my individual tip pages. After I finish the pages, I'll have to tidy up all of the pages to make it look professional. I'll also have to find web hosting for the actual website.

Taha Vasowalla - Project Update

The project I am working on is a delayed challenge/answer website. A user can post a challenge with an answer that appears after a specified delay. Resources such as images and links can be attached to the challenge. I am planning on making this using Meteor, a full-stack Javascript framework, that handles server side code as well as client code.

The web app will be deployed to the web and will be responsive to be available on all device sizes. I will likely use Foundation for the UI mainly because I haven't used it before and I would like to learn it for future reference.

Thursday, October 1, 2015

Project Update

Originally I was going to work on developing a Microsoft SharePoint Site for my dad's company, but I recently started working with Python and I enjoyed coding with it. It was a pretty simple language to start with, but I'm guessing it gets more complex just as any language does with time. I have quite a bit of background knowledge with Java and since Python is partly Java based it was easier to understand and I was able to learn the basics a bit quicker. Python is a widely used language that is used to create a plethora of applications and I think that it would be something great to learn for this class and for the future in general.

There are quite a few things that I would be able to accomplish in this class with Python. To start I want to master the basics and really just get comfortable with the language as a whole. I will be using Codecademy to learn the basics and then  I will get a book or two to learn some more of the advanced features that Python has to offer. There are a number of programs I can create using Python, but until I get a better understanding of the language as a whole, I won't be able to decide on a specific application to create.

Monday, June 8, 2015

June 9th. Really. Wow 0_o. I remember when it was snowy, at the end of January, the week after finals and I was extremely excited for this class, where I knew that I would have an amazing
opportunity to learn more about programming, and to work on projects which I would normally complete entirely outside of school.

After 4 1/2 months of this class, I am happy to say that this class totally met all of my expectations. I really appreciated the chance to get done many things I normally didn't have time for,
and even better, for SCHOOL CREDIT. This literally blew my mind. Two years ago I didn't think that this class even existed.

While I didn't necessarily get done everything that I had planned to get done, I learned amazing skills. From learning F#, a real world programming language which was marked as the 6th most
loved programming language on the 2015 Stack Overflow Developer Survey, to Haxe, a powerful language for writing applications which can compile to multiple target platforms. Along the way
I learned a lot of things which literally changed the way that I think about programming. For example, up until March I not only thought that circular dependencies were acceptable style for programming,
I thought that it was considered good style :3. Another thing I learned when following a tutorial for HaxeFlixel was that CSV files, which is a plain text file containing elements separated by commas, can be read by Excel, allowing for an astonishingly easy way of generating a Excel file. This was EXTREMELY useful for a project I am working on in my Computer Science class, where I needed to generate a log which was easily readable. I thought that a file in Excel was more readable than a plain-text file (although I still really like plain-text files), and as a result, I used it, and the log looks MUCH more professional than it would have had I used a plain-text file.

In my final presentation I will mention all of this and more, I will try to focus on how my style of programming, and project development strategies have changed as a result of taking this class.
Overall, most of the things I wrote above are barely scratching the surface of the stuff that I did, and the things I learned. I would totally recommend this class to anyone interested in using in-school time
to work on independent projects.

Here is some pretty pictures I will talk about in my final presentation.
World Map

Dynamic Pathfinding

Moving Rectangle


Friday, May 15, 2015

Google "Keep" A Friendly New Way To Manage Your Life Of Lists, Notes, Photos, To-Do's

Google Keep is an amazing little web based note taker!

 I can understand now at this point that inviting a new app into your live to keep lists and reminders is a crowded space. But I really want to open your minds to this one. Google Keep has some tremendous benefits for the super busy person who wants labeling in one place.

  • Syncs across Google Accounts, Allows Sharing and Exporting to Google Docs
  • Provides Notifications and Reminders
  • Allows for labeling, labeling
  • Creating checkboxes and crossing items off of your list without losing the item.
  • Allows for archiving, changing of list color and email sharing.
  • Has nice smooth web and desktop interface linked with your Google Account.
  • It can also be added as a shortcut to your Google Apps(The same place you find Drive and Docs).

I was slow to start using Google Keep as it was very similar to Evernote in its features but as a dedicated Google Docs user the creation of Docs from my lists was the biggest selling point. Additionally, the ability to have a cross platform application that syncs with my Google Desktop as an option makes efficiency when moving from location to location amazingly simple.

Desktop View Of Google Keep

I have used this app to share lists which are constantly evolving and changing in real time. I have also used this list maker to more easily enable blogging on the run and turning into a Google Doc in a click of a button.

So go ahead download the "Keep" app from Google Play or find the 3rd party "Go Keep" app from the App Store and test out the sharing of lists,notes,photos and whatever your heart desires across email accounts.

Also be sure to view your synced desktop version when logged into your Google Account.


I think may find yourself returning to it before you know it as your go to list maker/ creative space.

Monday, May 4, 2015

A change in plan

In the past couple of weeks of innovation lab, we did a variety of things.

Immediately after my last blog, some of us were looking at the haXe programming language. As I learned, it is a nice framework for writing cross-platform applications. I was planning on looking at Web Development at some point, and I think that haXe looks like a good place to start. Maybe by June I will try to make a small project in haXe just to figure out how it works. The one problem I had was trying to find an IDE which works well. I tried flashDevelop and IntelliJ, but I had some problems with both of them :3. Hopefully I can get one of them to work in the next few weeks.

Regarding my project - For the time being (maybe next few weeks or so) I want to switch gears. The problem I was finding was that I chose a project which involved a lot of skills I didn't have (F# experience, experience with .NET and Monogame, AND a lot of complicated algorithms for collision detection and physics related things). In Heinz sight, that was probably not a great idea, I should have focused on one or two skills that I didn't have, and learn a lot in the areas chosen. For the time being I want to cut out a lot of the complicated physics and collision detection related things, and just focus on making a game with F# and Monogame.

The *new* tangent idea I had was that instead of a racing game described in previous blogs, I would work on a smaller more manageable game without the added complexity of some of the physics and collision detection. My idea is more along the lines of a racing game where the cart is controlled with the mouse, and the cart must race against something (either time, or AI controlled characters - depending upon which I have time to make). Its a little hard to explain, and so, I created a short video, which hopefully can explain it.

This is the video of what I have worked on making in the last few days, hopefully I will be able to work more on it, and make it into a polished game. If I have time, I may try to work on my original idea, by then I will be familiar enough with what I am doing that I can start using more complex algorithms, but until then I don't want to push it (I really want to have a working game by the final)

Wednesday, April 29, 2015

In Regards to My Project

I have mainly researched Java and programming in general for my project. By programming I mean certain syntaxes of Java and the process in which code is thought of, written, compiled, and executed. My blogs have centered around technology in general and how my project is working. The kinds of technology I write about and use is encompassed by both hardware and software, such as my Macbook Pro for all my tasks, Netbeans 8.0.1 paired with Java 8 to write and run code, along with a powerpoint presentation that is going to accompany my code in the final presentation. This presentation will consist of how my code works, what my program does, how I made the program, an interactive demonstration.

I started developing late last year (around December when the project itself was assigned for the class), and decided it because I wanted to make a game for my final in Intro to Java. After much thinking about how I could practically implement a game into java without plagiarizing, I thought of hangman. So I started developing it by making the basics (how blank spaces would be shown, how letters would be entered, how letters would replace the spaces, etc.). I have continued to develop it throughout this course and have made improvements gradually.
Screen Shot 2015-04-27 at 9.45.05 AM.png
A snippet of code of how a pregenerated word is chosen for the program

Screen Shot 2015-04-27 at 9.48.53 AM.png

How the program looks in the IDE output window

Design Thinking for Education

The process I will be using for this project is the Design Thinking for Education. This process applies discovery, interpretation, ideation, experimentation, and evolution. This is the best process for my project because I am working with fashion trends. Discovery is my first step because I have to first experience the fashion trends, and then must gather my thoughts and opinions on them. And once I’ve completed those two steps, I can make a list of what I want to include in my website and on my blog. By taking those trends and my opinions, I can make a video and this will be extremely helpful; giving me feedback with the amount of views I get, and if the videos are relatable enough for the viewers. And once I gather the feedback, I can change or keep parts of my project.This will make my project strong, interesting, and captivate my views.
I also feel that the Design Thinking for Education is perfect for high school classrooms because it gives the students an opportunity to give feedback to their teachers. It gives them a little more power to how they learn and if the way of learning is helpful.
Experimentation and Evolution are the most essential components of this process. These processes give the most helpful feedback and gives the teacher or creator of project the space to make their own changes and add on’s.
This process can be apart of my future work environments because it allows everyone in the work environment to have a voice and apply their opinions and their views.

Tuesday, April 14, 2015

Technology In My Life

I take after my father when it comes to technology…I love it. I think it is a big part of the lives of many today and and in this day and age, it has brought about incredible advances and innovations throughout humanity. My love of technology lies in computers, gaming, and other devices like phones, entertainment systems and so on. I spend a lot of time working with computers, learning about how they work, parts and what there model numbers mean, programming, and gaming. I learn a lot from my dad who knows computers better than anyone I have ever met. Since a good portion of my time is spent with computers and other devices, it has a big role in my life. I love working with them and I hope to make a career out of hardware, software, or both in the future.
For years, I have dreamed of owning my own business and producing software and hardware (more so software as companies like Apple, Samsung, and Intel have taken over the hardware industry). My father owns a software business and I hope to one day possibly assume the CEO position at the company when he retires, or build a company of my own. I plan on going to school and getting a degree in both business and computer science. It has been my passion and desire for a long time to make a career working with computers and other devices, and I continue to learn more and more every day.

  I have a very broad range of skills when it comes to technology. I am not an expert at anything (as I haven't even lived long enough to gain the skills to be considered an expert), but I am good at a lot of different things. I have always been able to solve problems with computers and phones, whether it was in the field of programming, or other problems such as problems with hard drives or files on computers and many other miscellaneous things. Aside from my dad, I am always fixing things for people in my family and teaching them how to use different devices. I have enough knowledge that I can usually solve and fix problems most problems with computers when they arise and I hope that one day I will be able to consider myself an expert in the field of computer science. 

paintComponent() is NOT the MVP of a game of Catch.

The paint() method is hard. Actually, that's wrong--paint() is dead, it is now paintComponent() that tortures me. My sad story began several weeks ago, when I was feeling good because I had figured out how to make a slider that could change the size of the shapes displayed by my program.
The next step was the last, I told myself. I thought I was on the verge of reaching the pinnacle... but I was wrong. I thought all I had to do was pass the Graphics() object back and forth a bit, as if I was playing a game of catch, but paintComponent() disagreed.

Much like an overweight child refusing to go outside when his father asked him if he wanted to toss a ball for a bit, paintComponent rebuked my every attempt to throw around the Graphics() object, and it stymied my progress with its devilish lack of error messages. If it had returned errors, at least I would have been able to see where and what went wrong. But no... instead, I was left in the shade, grasping for a solution before the curtains completely closed and shut out all light. If you learn nothing else from me, at least learn this: He who paints graphics should look to it himself that he does not become painted; and when you gaze long at a method the method also gazes at you.

About me Arthur Yee

Hi! I am Arthur Yee. I’m a junior, and I am not very well-versed with technology. I barely know how to make a website, and Intro to Java hasn’t really begun to ramp up yet, so I am rather behind some of my peers for example Noah, Ian, Dan, Ari, Eli, Taha, and the like. I don’t play video games, pretty hard to believe right? I like the outdoors, science, and just about anything related to the military. Today’s generation is super advanced technology-wise, but I think this luxury of instant virtual gratification is taking us too far from the basics. What happens when the power goes out? Will people still know how to get things done without power, like they did way back when?

So about my project. I will be conducting research, using my own (rather limited) expertise, and factoring in any preexisting biases I have in order to outfit the entirety of the armed forces of a currently undecided country. Now if this country were rich then my project would be too easy. Thus I will be choosing a third-world country with a somewhat low average GDP, little military expenditure, and few domestic resources. I will have to take into account cost, capability, availability, and simplicity of the equipment; terrain and climate to distribute this equipment for maximum effectiveness; and ability to support, maintain, and resupply units using this hardware. In short, I will be getting the most bang for the buck.

Individual equipment will consist of: uniforms, small arms, communications equipment, load bearing equipment, rucks, body armor, and protective wear.
Wheeled vehicles will consist of: light and medium utility vehicles, cargo trucks, up-armored vehicles, and light armored vehicles.
Tracked vehicles will consist of: armored personnel carriers, infantry fighting vehicles, light tanks, main battle tanks, and self-propelled guns.
Fixed position equipment will consist of: crew-served weapons, artillery pieces, radar,

No, I am not a crazed warmonger or an expert in the field of logistics by any means; I do not advocate for death at all, and I should not be consulted as an authority on how to go about doing so. This is just a thought experiment regarding the improvement and upkeep of a certain part of a country’s infrastructure that I am deeply interested in. Other than that I hope my project isn’t too simple, and if it turns out to be then I will add some stipulations along the way to create more challenges to overcome. Pretty much everyone else in this class is doing something with coding or programming, and I have been trying to figure that out myself, taking Web Design and Intro to Java. However at the moment I am still a novice and would not ever consider undertaking a project of that nature without the help of Mr. Messina or Mrs. DiBenedetto.

Well that’s all for now. I think I’ll get started now, and post more later on down the road.

Wednesday, April 8, 2015

About Me, 4 Questions - Noah Mezher

  1. Where do my interests lie with technology?
Mainly in programming, hardware, and networking. I took a Java class last semester so that helped with reinforcing my knowledge of the language. I also got recommended for AP Java from the teacher of that class so I will definitely take the course so I can go into college knowing about the code before I take any more classes about programming in college. For hardware, when I was at the robotics club I helped build the robots along with getting the technology working with them. I also built a computer out of a bunch of parts I ordered a few years ago. With networking I don’t know much about it but I hope I can take a few courses on it in college or through the web development class in this high school. It is definitely a field I am interested in learning about.Screen Shot 2015-04-01 at 9.42.00 AM.png

Snippet of code from my final Java project

2.   What is it’s role in my life?

I spend most of my time either playing video games or on my computer. I’d say it plays a big part in my life since I am influenced by it all the time. Connecting with people through technology has given me the incentive to learn about how computers work, and has intrigued me ever since. I started playing video games at a very young age, along with working on computers, and have always been very eager to learn about them. My life basically revolves around technology.

3.   How much of a role will it play in my career choice?

I am looking to go for a Computer Science degree so it will almost encompass my whole college life. It is already impacting me in the classes I take in high school. As I said before, I have taken Computer Science and will take AP Computer Science, along with the follow up to the web design course next year, and I couldn't be more excited.

4.   What are my skills when it relates to technology?

Google. Seriously, people underutilize this search engine. I  know everything about computers and coding from almost exclusively looking it up on the internet. Whenever people have a question about technology or need my help I first go to Google to see if there is a guide to fix the problem they are having. Especially if an error code is given, then the troubleshooting gets really easy. I can do almost anything as long as there is a guide to it on the internet.

Google, the search engine that I use to solve all my problemsScreen Shot 2015-04-01 at 9.45.39 AM.png

Tuesday, April 7, 2015

Moving Rectangles

At my last blog, I knew in a general sense how to make programs in F#, however, I definitely didn't know enough to make a large application (written in a functional style) with it. However, after doing A LOT of research, I believe I am at the point where I can sit down and write my application.

Outside of school I made a small game prototype, overall the goal was to get familiar with using Monogame, and learn more about F# syntax. I believe it was a success, while making the game I learned a lot, both from what went well, and from what I will need to invest more time in to research for my final project. One of the big things I learned I need to do more work with is Fonts.

Anyway, now to show you what the current state of my application is
My game is currently just a tech demo. Its a rectangle you can rotate, and translate around on the screen using arrow keys and WASD keys. This past week at the help desk I focused on figuring out how to render a rotated image onto the screen. This took longer than I expected because I didn't think that the monogame documentation is helpful in understanding how drawing works. I ended up looking at the Xna* documentation for the class I am looking for and that helped to clear up my confusion. I didn't look at the Xna documentation for the longest time because I thought that the Xna and Monogame interfaces may be different, however, in retrospect since Monogame is designed to be closely related to Xna I don't think that there is many significant differences in the interface with which an application communicates with the Monogame framework vs. the Xna framework.

Things which I will do in the next few weeks:
1. Physics -- I really need to start figuring out how collision detection will work in the game. This is a really large part of my project so I need to get started ASAP. I have high hopes for it right now though, I have been thinking about how I should go about getting it to work and I now have an idea about how to implement it.
2. Fonts -- In order to render text onto the screen you need a font, I have been looking around about how to make fonts in the last few days but I still need to do a lot of research in order to know how to fully implement it.
3. Particles -- I have never really made particles, but they are a quintessential part of any game with great graphics.

*Monogame is an open-source implementation of Microsoft's Xna framework

Monday, April 6, 2015

Lauren's Project

I am currently creating and organizing my website. I watched this tutorial video on how to make basic edits on my website because I am not familiar with google sites nor website making. I also viewed a fashion website that provided 5 helpful tips to creating your own fashion website. It said what to do, how to make it unique to your style, and how to organize it and captivate your viewers.
After watching the videos and viewing websites, I am working on the layout of the website. I am working on making the website as neat and easy to use as possible. My theme for the website is white and plain, and with that I am adding pictures to make them pop. This will draw the attention of the viewer to bright and popping sections, pictures, and videos. 
After I finalize my website, I will embed my blog URL and will post my first post explaining what this website is and how it may help my viewers. I will also upload my first video. I might upload the video to the website, but I will be using the blogger as a my journal for fashion trends I see and like. I’m going to make my first video on what to wear for this warm, but still cold weather. I think this idea is perfect for the first video because its easy for the viewers to connect with and I think it will give off my sense of style and what I am like.

https://www.sweettoothrewards.com/blog/5-tips-creating-great-fashion-ecommerce-site/ ←- 5 important and helpful tips when creating a fashion websites, whats in and what is too mainstream (website I viewed)

Monday, March 30, 2015

Flubaroo and Google Forms

Since last blog we did a few things at the help desk.

Primarily, over the last few weeks we have been creating videos on the Help Desk channel, designed to be a crash course for teachers on the latest and greatest technology from the educational software industry.
We split up our class into two groups for this task, one group focusing on Google Classroom, and my group, which focused on Google Forms and the Flubaroo add-on, which assists in grading quiz/tests which were created in Google Forms. You will be able to see our video on the Andover Innovation channel soon.
I learned a little bit about editing while helping Arthur edit the video. This was definitely a good thing for me to learn because knowing how to create videos which look sharp and well edited is a good skill to have. Also it was a lot of fun creating the video.
As well I learned how to make google forms, compile them into a spreadsheet, and even how to grade them using Flubaroo

Overall, throughout the video creation process it was a lot of fun to work with other students in the class, and I think I will be able to take some of the elements of video creation which I learned from this and apply it to my final project (maybe I can make a video of my final project)

Monday, March 2, 2015

Semester Goals

          A few months ago I began learning the C# programming language and up until this point, I have learned quite a bit about the basics and I continue to learn more every day. It has been an interesting, exciting, fun, and at times a difficult process, and I am excited to continue learning and excited that I am on my way to the world of programming. When I first began programming in the C# language (using Microsoft Visual Studio), I learned to display text in the console window and the first program I created was the “Hello World” program which is a very well-known program among all programmers. After learning to display text to the display window, I learned about variables and values as well as “if else” statements. This is basically the summed up version of everything I have learned (but I have learned all of this in great detail and depth), and I will continue to learn more in the weeks, months, and years to come.
          Currently since I am still a beginner in the C# programming language, I am short on ideas for projects I can create using this language. As I continue to learn more about what C# is used for and just more about the language and how to use it in general, I hope and plan to get ideas about possible projects for the future of this class. I currently don’t have enough knowledge to even get a small idea yet, but that should change in the next couple weeks. I have noticed that C# is a very large and expansive language and can be used for any number of programs, applications, and games. It can be used for desktop applications, web design, mobile phone applications, and much more. Hopefully as I continue learning something will come up in one of the many areas that I can base a project on in the future.

Semester Goals

Innovation Lab Blog 1 - Noah Mezher
Last semester, I started the Intro to Java course here at AHS. Before that, I tried teaching it to myself, but couldn’t keep a tight enough schedule, so I figured the course would be good. I had prior experience with other programming languages like C, C++, JavaScript, and HMTL5, so I had the general idea of coding down, but never knew much about each language. I learned the basics of Java, and I want to learn more this semester in this class. I don’t have enough experience with the language to write a typical executable program, but hopefully at the end I will have an idea that fits my ability and I will be able to write it.

Like I said, I can’t write an executable program, but I will be learning the language so when I have an idea, hopefully it will be in my ability to do. I want to make a game with Java, so I will need to learn about importing images, GUI, and buttons, along with implementing those objects in the right place. I already programmed a hangman game in the course for my final project, so I could improve on the GUI in that game, because it is all text based at the moment. I could also make a totally new game. I do not know what exactly I will be doing, but I will definitely figure it out by the end of the semester and have a project done.

Sunday, March 1, 2015

The Amazing Racing Game Design Goals

For my project I will be creating a game using the monogame framework and F#.

The idea that I have is to make a racing game. The vehicle will be relatively light, and able to perform tricks such as wheelies, and 360 degree flips. It will be interesting to have the tricks act as powerups, performing complex tricks will speed up the vehicle, thus rewarding players who are able to do these.

Challenges with the project chosen:
-        Graphics - For rendering I will *attempt* to use OpenGL, I need to be able to render 2D rotated images to the screen, and I know *somewhat* how to do that in OpenGL (I did a tiny bit of exploration with how to use OpenGL last year when I was messing around with LWJGL).

-        Programming Paradigm - I will try to program in a functional first style, using an imperative style only where necessary (e.g. when interfacing with the underlying monogame framework, which was originally made for to support the imperative style of programming). I am relatively new to functional programming (I started last year), but hopefully I will be able to make something out of it. Worst case is that I will revert to F# imperative, which I would find more familiar due to my experience with java in the past.

-        Physics – There are a few hurdles with some of the physics involved. First I will have to implement the SAT (Separating Axis Test) when testing for 2D rectangular collision which is not axis-aligned. I have looked at it before, but I have never done anything with it, and it definitely looks daunting. As well, the design relies on a lot of torque and rotational motion. I have done work with rotational motion in the physics class I am currently taking, but I do not know how hard it will be to implement what I learned in class to this relatively massive project. Also, the terrain would (ideally, but not necessarily guaranteed to happen) not be rectangular, it would look relatively curvy.

-        Audio – I have no experience creating sound assets, and so I don’t know how difficult it will be. Potentially it could be relatively easy, or it could be extremely hard. I just don’t know.

Goals for the Project:
-        Investigate the relationship between functional programming and development time. Based off what I have read online, it seems that functional programming is a succinct way of creating programs, and can save development time. I want to test this by doing a relatively big project in F#.
-        Make a fun game – It will definitely be fun just to make a game and tweak it until it is exactly what I wanted.

Tools I will be using for my project (some may be added later)
-Monogame framework
-Inkscape (Planned to use for creating assets)
-Paint.NET (Could be used in conjunction with Inkscape for visual asset creation)
-Git (Version Control)
-Visual Studio Community Edition
-Audacity (sound effects + music)

I will do my best to get all of this done by the due date in June, but I will cut unnecessary portions of the project out if necessary.

A few conceptual drawings are shown below (because my idea is hard to illustrate in a still image, and I just drew a few random things related to what my ideas are to give you a sense of what it might look like).

Friday, February 13, 2015

Super Sliders: It's a level beyond mere Sliders

This semester, I am back in the e-saddle in the Innovation Lab/Unpaid Tech Intern Zone. Last semester I didn't manage to figure out how to implement all the features I wanted to in my program (Sliders), and this time I'm back with a vengeance and the drive to complete.
Sliders 1.0

Or not, we'll see. The paint() method is deceptively difficult. It's a challenge worthy of my ambitions!
Pure, Unadulterated Evil

By the end of the year, I'll ideally have updated Sliders 1.0 with fancy new buttons to alter the shape of what's colored by the sliders, as well as some buttons to change the size of the altered shape. If I manage to achieve my current goals, I will do my best to come up with more features, or maybe I'll start on another application. My program will have evolved beyond the mere Sliders it was before; it will have become a Super Sliders 2.0!