2014年12月17日星期三

Get24: Final Deliverable

As up to the due date, the development of our Get24 pygame is finally finished. Unfortunately the GUI version of the game is not fully functioning right now. We’re still have things left to do on deleting and recreating number buttons as well as the winning scene. The last couple meetings with the team was quite stressful because of the amount of works everyone has in the end of the semester. We’re definitely down for finishing up the game afterward.

Things I would do differently if we’re coming back to improve the game:
  • Improve/fix the frustrating event handlings that we got from Fractionauts (maybe rebuild them from ground up)
  • Improve the game playability by adding sets of numbers and store them for different difficulties so we can all levels of toughness to the game.
  • Increate interactivity between the game and the user by adding animations, hovers and sound effects to the buttons.
  • Add the undo button, reset button, and possibly hints button.
  • Add leaderboards with network capabilities


2014年12月16日星期二

.gitignore.oi


So the reason I bring this up is that recently as we're developing our Get24 pygame, random .pyc files are been generated when we execute the game. I believe it is some kind of windows cache files that generates whenever the main .py file gets executed. This is really annoying because we will then keep uploading these .pyc files to our github when we commit.

.gitignore.io is a web application that creates a .gitignore file so you can use it on a github repository. The .gitignore file will contain the kind of language and file format that you want the github to ignore when you're doing a push. The .pyc files in this way will not gets puloaded to the repository which therefore makes the repo cleaner. You may use the web app for basicall any type of language and file format.

The appliation also supports a command line version. To run gitignore.io from your command line you need an active internet connection an environment function. You need to add a function to your environment that lets you access the gitignore.io API.

This application is opensourced on Github and has a copyright license. For a more completed explination and tutorial, click me.

2014年12月15日星期一

Get24: Changing scene & passing event

We're continuing working on the terrible event handlers that we got from Fractionauts since it's already in the middle of the way and we will have to reduce so much stuff to switch back. The event passing is functioning well. However, if I have time I would definitely dive back in and simplify the passing methods.

The graphics that handles the events are however great. It's nice, simple and clean to interact with. If we have more time to playtest with 4th graders I would consider adding more colors to the backgrounds and buttons so that it looks more childish. But sofar I'm satisfied with the interface we have.

Another issue that we ran into is the scene changing. This is also a division of the event handler issue that the state of the scene will not properly pass to the next scene. Additionally, when we switch out the pygame window and switch back, the handlers magically work again. Therefore we switched the type of the button so that detects the location of the click instead of handle the event that it passes.

We're definitely approaching the end of the development since we already have the model of the game done. We will soon create the numbers and operations button and implement the model to the scene.

2014年12月14日星期日

Working with team on Github


Since this semister is the first time I'm working with Github, I'm still kind of new to it. I've been having all kinds of trouble with Github on both my class repository and my team project repository. Until recent I finally found out how to successfully check my conflict files and send a pull request without creating tons of mess.

One thing I found out that having a programming project on Github could somehow be not helpful. It is definitely a benefit for a team to have a project "dropbox" that anyone can access it at anytime. Additionally, when people are unavailalbe to meet they will not having trouble access and edit the newest version of code.

However, when we're having an actual meeting and trying to work the project together, we will still have to work on one single screen together. Due to the size of the project, we're essentially editing the same file and it will obviously cause tourbhe if we're all working on the same file and stepping on each others' toe.

I'm sure there is a way on Github to work around this. However due to my level of knowledge on Github it is pretty painful to constantly resolve merging conflicts. I'm still having a positive aspect toward Github because it is essentially a great platform for project development and management. I will definitely use Github as one of my major tool for developing in the future.

2014年12月13日星期六

XO Develop: A quick look into Fractionauts


As we're developing our Get24 XO game, we're starting to look at the programming structure of the Fractionauts game. Fractionauts is an educational game for the XOPC that teaches fraction operations with rockets. Since the game is involved with many assets and animation, the structure of the game behidn the scene is actually pretty complicated.

The game is basically constructed with a main class, several scene classes, asset classes and helper classes. The main class will init and keep track of the game state. Additionally, main class will initialize a huge (HUGE) amount of listers and helper methods that are used to pass different game states and click events to rest of the scene classes. Each scene class will pass these events to their own handlers that keeps track of their own click button events and state event. They will also triger their own event that calls each helper functions to draw graphics and import assets.

I got really confused between all these event handlers because there events within events that passes events to a event handler which triggers another event in some other classes... I would definitely say that Fractionauts is a well-organized program. However I would also argue that the structure is a little redundant.

Overall I learned a lot from the codes in Fractionauts both in picking up python and integrating pygame. Hopefully I can apply some of these algorithms to the Get24 game we're developing.

Get24: "Your mom's in another computer"




We're currently in progress of debugging the game loop that runs every "frame" and ready to detect the next click event. The major issue we ran into is that whenever the mouse event is triggered, the exception will trigger and the loop will be restarted - which causes a infinite loop, memory issue and etc. Therefore we placed a print statement "your MOM" inside the loop so we could test out when the loop is running. However, after we finish testing with the loop and take out the print statement, "your MOM" is still there when running the loop. We checked every script we had looking for "your MOM" but we couldn't find her (I mean it). It was hilarious that we're constantly suggesting to each other on where "your MOM" could be found.

Solution:
  • We found out that it's the VM that we're running is causing the issue magically. Somehow the print statement is cached somwhere in the system after we removed it. After restarting the VM the print statement was gone.
  • The looping issue still exists... Just without "your MOM".

Get24 - XO Game Dev Progress

 

The development is currently in progress as we're using pygame as our framework. Plans now will be to have mainly two scenes such as initial scene and game scene.

  • The initial scene will contain the start button, help button, quit button and a game logo.
  • The game scene will be the main interface that contains the score, number buttons and operation buttons followed by minor functionality buttons such as skip, undo, restart and help.
Other minor works are also finishing up:
  • Interface and user interaction plan are now finalized
  • Game assets are finished and ready for implementation
  • Game model is now finalized and waiting for implementation once the interface is implemented
  • Created a wiki page for the game on Sugar Labs Wiki
  • Licensing has been resolved
Current Issue:
  • ok what if I did it wrong. Undo algorithm needs to be done
  • you lost my package? Scenes lost the event that needs to be passed to buttons somewhere in the middle during transfer

2014年12月12日星期五

Get24 - XO Game Dev: Using pygame


We're currently in state of implementing the 24 game using a template called sugar-quickstart. It is a template that we use to build a game that can also compile into an activity(.xo) file that runs on XO machines. The issue we're running into is that we're having trouble compiling the activity followed by the error: failed loading sugar3.activity - module not found.

After a certain numbers of examination we decided to leave XO out of the game development for now and implement the game using pygame. Pygame is a set of python modules designed for writing games by adding functionality on top of the SDL library. This allows us to create fully featured games and multimedia programs in the python language. This way we will not have to deal with compiling .xo file issues until the very end.

2014年12月11日星期四

XO Game Interface Design

I'm currently in process of creating a XO game with my team. The game is called 24. It is a math game where users will use four numbers provided and four operations (+,-,*,/) to get to 24.

Since the game is simple enough, the interface should also be simple for elementary students to figure out. We're finally having progress on the UI side of our project.

We had our first interface draft as a list of numbers, operations and follow by a spot for equations: Click me too see our first UI draft. The first issue that we ran into is that we're trying to figure out how to add parenthesis to the equation without adding complexity to the interface.

  • If we "type" in the paranthesis in a queue order, we will have to delete all of the previous inputs since there're no cursor in the game.
  • We can also add a button under each operation signs in the equation so when it's clicked, the paranthesis will be added to the current operation. This really adds complexity to the game and will not be as interesting.

Therefore we decided to remove the equation part and make the calculaton process on the number panel. This interface is much simpler and more like a game by removing the equation region and having the users calculate directly on the number panels. Please see Danny Nyugen's blog post to read about the current UI that we're developing.

2014年12月10日星期三

Locak Hack Day @RIT

This is a post about the Local Hack Day I attended in December 6 (my birthday!) held by codeRIT. It is great event  to learn and celebrate the hacker comment in RIT by creating and building projects over 12 hours. In the even we took time to develop our iOS project which is a space-themed music app. We were trying to solve a recording issue of the project where the recorder is having trouble creating and loading a url where the sound data will be stored.

The event ran a Local Hack Day stream at the end of the event with many other schools who also held the same hackathon. We also took a look at the projects that they created within the past 12 hours. There're many interesting while also inspirational projects including a MLA Formatting application that formats the text into a MLA format and a image shrinking application that removes minor pixels when shrinking a image.

This is the first local hack day event I ever attended in RIT. It was fun to see all of the inspirational ideas that people have and projects that other schools have.

RocPy meet up 11/18

This is a blogpost about the RocPy meet up I attended on November 18th with my HFOSS class. The meet up started by Richard with a brief description of the RocPy and a recap of what we left from last time.

threebean provided a very interesting "module of the month" where he went over a module from the Python standard library each month. This time he gave a talk on itertools which is a module that implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML. He showed the module with a couple examples of how to use itertools in a project.

Awesome lighting talks provided by Alex Kyle(akyle), Matt Soucy(msoucy), Ross Delinger(rossdylan) and Ralph Bean(three bean). Very interesting and useful presentation!

The main talk for this RocPy was about embedding Python in a C application. The level of the talk was way beyond me and somewhat dry. imo it could be summed in a much better way and save more time.

Overall I'm starting to like RocPy more and more. I hope as I get more and more involved with these topics I could start to understand them better.

2014年12月4日星期四

quiz2: Pedagogy

 Please post both the answers AND questions for this quiz in a post on your
development blog, and send a pull-request to your .yaml file with the key
'quiz2' to the course repository by the end of class. Remember, your quizzes
will be evaluated based on BOTH content AND HTML markup. Good Luck.

0)  Expand the following acronyms:
        a) FOSS:             Free and Open-Source Software
        b) OLPC:             One Laptop Per Child
        c) tl;dr:                Too Long; Didn't Read
        g) LGTM:             Looks Good To Me
        h) RTFM:             Read The F*cking Manual (excuse me)
        i) PEBKAC:         Problem exists between keyboard and chair
        f) LOL:                 Laugh out Loud

1)  Define the following instructional theories:
        a) Didactic: An instruction method that the teacher is considered to be the possessor of knowledge, which he/she then imparts to students through lecture and instruction.
        b) Dialectic: An instruction method that the instructor engages students in a common search for meaning and understanding.
        c) Constructivist: People who generate knowledge and meaning from an interaction between their experiences and their ideas.
        d) Multiple Intelligences: A set of knowledge that are quite independent of each other; that each intelligence has its own strengths and constraints.

2)  Describe the role of the instructor in each theory.
  • Instructors in didactic classroom: are the “giver of knowledge” that follows a consistent scientific approach or educational style to engage the student’s mind.
  • Instructors in dialectic classroom: are more of a knowledge person who leads students through questioning and response towards understanding or a specific learning outcome.

3)  What are the three key aspects of a lesson plan?
  1. Objectives
  2. Methods
  3. Evaluation
4)  How does Sugar integrate and implement constructivist learning theory?
  • Sugar allows the students to learn by having them discover the features and functionalities which at the same time is also fun, easy to use and provides social experience that promotes sharing and learning.

Bonus: Where can new Sugar users and contributors go to find out more
information, ask questions, and get involved?

2014年12月2日星期二

Lit Reveiw 2: Hacking Politics

Edited by:


David Segal: An American politician, activist, and writer who was a Democratic member of the Rhode Island House of Representatives.


What: Hacking Politics: TLDR. The portion in the book lasts 37 pages long.

Where: http://hfoss-fossrit.rhcloud.com/static/books/hackingpolitics_txtwithcvfb.pdf

When: Published in May of 2013.

The Gist: The TLDR of the book is a series collection of quotes from various hackers and politicans who are also associated with againsting SOPA, PIPA and COICA.

The Good:

  • Simple and straight forward with a huge list of quotes.
  • The topic in the book is actually closer to each one of us than we thought - found it extremely realistic.
  • The collection of quotes are from all kinds of people from games, hackers all the way to politicians and billionaries.

The Bad:

  • Extremely informative but somewhat boring on the other hand with the set of quotes.
  • I nearly see any citations - maybe quotes don't need citations.
  • A bit overwhelmed with the tremendous amount of voices.
  • Somewhat one sided: with the amount of people quoted, the side that these people take is however generally the same.
Questions:

  • What is now the outcome for SOPA/PIPA and COICA?

Review: Overall the article was good. Good thing that I figured that TLDR stands for "Too Long, Didn't Read"... Even though I'm not loving the TLDR format with a list of quotes, but it is enough to pull me into researching SOPA/PIPA. 7/10 things.