Jacob Leiken journal

About

jacob_leiken@brown.edu, 714-398-0537

Experience with UI/UX including non-traditional interfaces (i.e. Amazon Alexa), taken CS32 and CS33, experience with game design, worked at IT Service Center for a year

Interested in social VR experiences

Code I've written this semester

These links hold most of the code I've done this semester. Feel free to check them out and use them for your own projects!

https://github.com/jleiken/MinVR-Labyrinth

https://github.com/jleiken/Unity-Labyrinth

https://glitch.com/edit/#!/aframe-labyrinth

Activity Log

  • 1/25, 3 - 4 PM: Investigated HMDs and created journal page

  • 1/26, 12 - 1 PM: Attended Google tech talk on WebXR

  • 1/27, 12 - 2 PM: Read three.ar.js documentation and examples, researching for project for Hack@Brown

  • 1/31, 12 - 1 PM: Attended YURT programming lesson

  • 1/31, 3 - 4 PM, 9 - 11 PM: Installed Unity, found guides, populating the Resources page for Unity. Worked through Unity "Getting Started" materials

  • 2/4, 5 - 8 PM: Installed Unreal (quite easily), found and started tutorials

  • 2/5, 12 - 1 PM, 3 - 5 PM, 7 - 8 PM: Followed Unreal getting started guide, added third-person player with animations

  • 2/7, 12 - 1 PM: Attended second YURT lesson

  • 2/7 7 - 9 PM, 2/8 3 - 6 PM, 2/9 3 - 5 PM: Finished Unity "Roll a Ball" Tutorial and added customization

  • 2/11 7-9 PM: Update this page, Unity and Unreal manuscript pages

  • 2/14 12-2 PM: Attended third YURT lesson, tried to get MinVR working

  • 2/14 8-10 PM: More work on MinVR, thought about "Hello World" (HW) ideas

  • 2/14-2/21 8 hours: Continued troubleshooting of MinVR with Tom and on my own (finally realized I had impartially uninstalled XQuartz, which was causing problems)

  • 2/20 4-6 PM: Decided on HW - labyrinth ball game (the user will tilt a platform on which a ball rolls around. The goal is to get the ball in a whole at the end of the labyrinth. Each run should generate the labyrinth randomly. This will lead to interesting challenges from tilting, physics, etc.

  • 2/21 8 PM-12 AM: Started HW for Unity. Made platform and rotation - still bugs - posted on GitHub at https://github.com/jleiken/Unity-Labyrinth/

  • 2/24-2/25 10 hrs: Finished HW for Unity! It's a playable game on Google Cardboard, although there's no way to restart the game yet. I see this as a reach goal, since it should be a relatively minor addition. I have not started reviews or guides, though, so I am slightly behind in that respect.

  • 2/26 2-6 PM: More minor work polishing HW for Unity

  • 2/28 7-12 PM: Started HW for MinVR, posted on GitHub at https://github.com/jleiken/MinVR-Labyrinth - it is much harder than Unity

  • 3/2 9-12 PM: Continued HW for MinVR, made very little progress

  • 3/5 11 PM-1 AM: Worked on documentation

  • 3/6 3-4 PM: Linked, formatted manuscript pages

  • 3/7 8-10 PM: Made some progress on HW for MinVR. World generation is now complete, but textures won't load

  • 3/11 6-11 PM: Finished HW for Unity because I'm a perfectionist so it now can be restarted and dims in and out of levels. I also struggled with git for practically 2 hours, struggling to upload files that were larger than Github's file size quota. This is actually a significant struggle worth mentioning in a tutorial - projects made with Unity can include very large files.

  • 3/12 2-8 PM: Made plan for the rest of the semester.

  • 3/14 5-10 PM: Got HW for MinVR correctly generating the whole world

  • 3/17 2-3 PM: Added "gravity" (that never ends) to HW for MinVR

  • 3/19 11-4 PM: Reviewed Amadeo's journal and manuscript additions for class on 3/20. Got distracted so I then read most people's work on the wiki. It's pretty awesome!

  • 3/21 1-4 PM: Worked on getting fake hand/controller tracking for MinVR

  • Spring Break 20 hrs: Worked on HW for MinVR

  • 4/4 12-3 PM: YURT madness. For the first time, building with no issues on YURT and my computer

  • 4/8 6-10 PM: Worked on adding physics to HW for MinVR

  • 4/9 12-1 PM: Finally saw HW for MinVR running on YURT, I can now access it whenever I need through the calendar

  • 4/10 5-7 PM: Debugged in the YURT

  • 4/11 7-8 PM: Recorded YURT activity, refined some user input

  • 4/14 2-5 PM: Tried to make physics more accurate

  • 4/16 2-4 PM: Continued work on physics, still no improvements. At this point I think I'll call it a viable proof-of-concept and move on to documentation.

  • 4/18 8:30-10:30 PM: Worked on AR tutorials. A-Frame is legit and I think could be ported into the YURT, but nobody tell Tom because he'll have me do it.

  • 4/18 10:30-12 PM: Fixed a backwards rotation bug David found in class and added comments to all my MinVR code. It's pretty satisfying to wrap this up, even if the physics aren't good.

  • 4/19 12-2:30 PM: I got really excited about A-Frame and made the Labyrinth game again, in it. The whole board set up and gravity took me this time, which is way less than either of the other two technologies. Partly I think that's because I'm much more experienced with graphics now, but also partly because it's SO EASY.

  • 4/21 4-7 PM: Progress on HW for A-Frame. I was going to write a tutorial for MinVR, but Ruiqi did a much better job than I could have (I think he actually knows how to do graphics programming). I just added Mac and Linux instructions to it instead, which ended up being pretty different.

  • 4/23 5-9 PM: Updated this page a little bit and finished HW for A-Frame. Wow it's so much easier. Still has quirks though - the physics system is resting my ball way too high above the plane for some reason.

  • 4/24 7-10:30 PM: Worked more with Ruiqi on the MinVR tutorial. It's now ready to go!

  • 4/28 2-6 PM: Worked through tutorials I've missed from class and added some things to the AFrame, Unity and MinVR pages

  • 5/1 3-5 PM: More work on wiki, my own Unity tutorial

  • 5/5 12-3 PM: Worked on slides for presentation, read Ankita and Linda's article, and updated the site and journal a bit

  • 5/11-5/12 1-5 PM: Final changes to wiki!

Also add 4 hours to this count for the weeks I went to the YURT lunches that I didn't log here.

Progress Report

Deliverables

  • Unity Rolling Ball example

    • Under VR Development Software > Unity

  • Unreal World-building and 3rd person player examples

    • Under VR Development Software > Unreal

    • Significantly greater difficulty than Unity project, regrettably

    • Compounded by engine that is harder to use

Activities

  • Learning Unreal

  • Learning Unity

  • Attending YURT programming classes led by Tom

Projection for February (total 30 hours)

I want to compare programming for Unity and the YURT. It will go in the Comparisons tab > VR Development Software. I think my report will be equally one-sided in favor of Unity. The convenience of a GUI is hard to understate. In addition, Unity has a lot of features that make it very easy to make a game. It is also really easy to install. I've already tried and failed to install MinVR. Programming for the YURT is going to be a lot more programming, no matter what. To compare them, I will make a "Hello World" project that works on both, and write a guide/comparison while doing it. The examples can go on their respective manuscript pages, while the comparison might have to go on a new comparisons page.

February 13th

  • Deliverables

    • Comprehensive plan for the month (here)

  • Activities

    • Create progress report/plan

      • Value: Preparation for the class

      • Time: 2 hours

February 15th

  • Deliverables

    • Decide on a reasonable "Hello World" (HW) project by looking at MinVR example code and Unity projects. This will be fairly difficult due to the large difference in mediums

  • Activities

    • Plan for HW

      • Value: Preparation for the class, coming month

      • Time: 4 hours

February 22nd

  • Deliverables

    • HW for Unity

  • Activities

    • Star work on HW for Unity

      • Value: Learning Unity, creating time tables and feedback

      • Time: 8 hours

February 27th

  • Deliverables

    • HW for Unity

  • Activities

    • Finish HW for Unity

      • Value: Finishing deliverables, time tables and feedback

      • Time: 4 hours

March 1st

  • Deliverables

    • HW for YURT

  • Activities

    • Start work on HW for YURT

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 4 hours

March 6th

  • Deliverables

    • HW for YURT

    • Comparison of MinVR and Unity

  • Activities

    • Finish HW for YURT

      • Value: Finishing deliverables, time tables and feedback

      • Time: 6 hours

    • Write and compile tables comparing MinVR and Unity

      • Value: Completes a comparison of two technologies, potential addition to the paper

      • Time: 2 hours

Reflection on work from February

Deliverables

  • HW for Unity tutorial: not done

    • Location: sub-page in my journal, created with some content

    • Activities

      • Created HW for Unity. This is done and in good shape - people can play it. However there are no menus, so the game can't be restarted without quitting the app. Ultimately I deemed this a secondary feature, and wanted to move on to documentation and MinVR.

      • The tutorial is going to be based off of the Roll-a-Ball tutorial provided by Unity, but I have made very little progress in notes (on paper, not digital)

  • HW for MinVR tutorial/code walk-through: not done, and far from it, as code isn't done

    • Location: sub-page in my journal, created with no content

    • Activities

      • Started HW for MinVR. It is significantly more difficult than I expected, so I'm having a lot of difficulty making progress. This will probably occupy a significant portion of my semester, if we deem it to be a valuable exercise.

      • Since I have made so little progress with my code, any tutorial is far from happening.

  • Comparison of programming for Unity and MinVR, qualitative and quantitative: rough preliminary drafts of both are done

    • Location: Manuscript > Comparisons > VR Development Software, rough draft/data collection done

    • Activities

      • Programming both HW, described above.

      • Writing comparisons is much easier than tutorials, so while I probably need more detail before publishing, I do think what I put on the manuscript is helpful.

Hours are logged in the Activity Log section above; the section under consideration encompasses activities from 2/14 to 3/5.

Evaluation

  • Activities are explicitly and clearly related to deliverables: 4

  • Deliverables are described and attributed in wiki or manuscript: 3

  • Items from in-class google sheet of experimental data are in wiki or manuscript: 2

  • Report states total amount of time: 4

  • Total time is appropriate: 5

Reactions

HW in Unity was easier than I expected, but it still took longer than I anticipated. I'm quite nervous about HW in MinVR, because my progress so far has been painfully slow. While I wanted to focus for a while after this on documentation, since this class is about software review, not development, I could easily sink many more hours into MinVR. I wonder if time spent on that will be relevant to the paper. I didn't actually believe I would finish any documentation by this deadline, so I'm a bit ahead of my mental (not typed) schedule in that respect. I'm going to need to spend a couple of hours actually writing a Unity tutorial, and then I can continue with MinVR. I'm thinking now that this HW for MinVR could easily take the rest of the semester, so I need to decide with David if that's a worthwhile way to spend my time.

Plan for the rest of the semester (3/13 onward)

March 15th

  • Deliverables

    • Comprehensive plan for the month (here)

  • Activities

    • Create progress report/plan

      • Value: Preparation for the class

      • Time: 2 hours

March 20th

  • Deliverables

    • HW for MinVR accepting user input

  • Activities

    • Work on HW for MinVR

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 7 hours

March 22nd

  • Deliverables

    • HW for MinVR limits how user can move table

  • Activities

    • Work on HW for MinVR

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 3 hours

April 3rd

  • Deliverables

    • HW for MinVR has some conception of physics

  • Activities

    • Work on HW for MinVR

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 7 hours

April 5th

  • Deliverables

    • HW for MinVR is playable, physics are fairly refined

  • Activities

    • Work on HW for MinVR, test in YURT

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 3 hours

April 10th

  • Deliverables

    • HW for MinVR is mostly polished, can be played in YURT

  • Activities

    • Work on HW for MinVR, test in YURT

      • Value: Learning MinVR, C++, creating time tables and feedback

      • Time: 7 hours

Midway Point

April 12th

  • Deliverables

    • Comparisons of MinVR and Unity

  • Activities

    • Writing comparisons

      • Value: Valuable addition the manuscript

      • Time: 3 hours

April 17th

  • Deliverables

    • Complete Unity guide

  • Activities

    • Writing guide, taking screen shots and maybe redoing rolling ball for this purpose (not actually a difficult prospect)

      • Value: A guide to more complex Unity projects that should be a better starting point for people that want to use unity to make VR games

      • Time: 5 hours

April 19th

  • Deliverables

    • Annotated HW for MinVR code

  • Activities

    • Comment code so it's clear what everything does

      • Value: A more complex example for MinVR would REALLY help people who want to start using it

      • Time: 3 hours

April 24th

  • Deliverables

    • Guide to running things in the YURT and/or improvements to my guides based on feedback from other students

  • Activities

    • Writing or interacting with other students

      • Value: A total guide to how to program for and use the YURT and/or improvements to the previous deliverables I've mentioned

      • Time: 8 hours

April 26th

  • Deliverables

    • Whatever else I didn't finish

  • Activities

    • I figure I won't hit all of these deadlines exactly, so I want to give myself a buffer day

      • Value: Buffer

      • Time: ? hours