Я только что закончил младшие классы средней школы. Я хотел бы сказать, что хорошо подготовился к SAT, но это не так.

Я нахожу подготовку к стандартизированным тестам особенно обременительной, в большей степени, чем традиционные классные экзамены. Я не знаю, что такое дело, однако я действительно знаю, что если я занимаюсь учебой, то, вероятно, мне будет легче в будущем, когда это произойдет к заявлениям в колледж.

Но знаете, что не является громоздким? Виртуальная реальность!

Итак, моя блестящая идея заключалась в том, чтобы объединить эти две вещи, создав занятие, которым я могу слегка наслаждаться и чувствовать себя несколько прилежно, занимаясь им. Все за одну неделю.

Вот репозиторий API и репозиторий игры!

понедельник

Небольшое исследование, которое я провел, касалось Официальной практики SAT Академии Хана, и я решил, что — используя их API — я буду делать запросы из игры к API, чтобы иметь пользователь проходит через учебную сессию, все в виртуальной реальности (признаюсь, я действительно не продумывал все это).

Я начал читать Документацию по API Академии Хана, пытаясь понять, как должна работать эта штука с OAuth. Одной из особенностей вики, которую я нашел вводящей в заблуждение, было использование идентификатора oauth_token как для запрошенного токена, так и для токена доступа. Если бы я не споткнулся на семантических коллизиях, я определенно мог бы сэкономить несколько часов.

К сожалению, добавляя оскорбления к обиде, Академия Хана использует OAuth 1.0, первоначально разработанный еще в 2007, когда мне было шесть. Это немного усложняло поиск соответствующих руководств, когда я неизбежно обнаруживал себя в исправлении.

вторник

Мне нравятся JavaScript-обещания, но я не смог найти библиотеку OAuth 1.0, которая бы их поддерживала, и был вынужден довольствоваться довольно стандартной библиотекой, которая бездействовала в течение двух лет и использовала стандарт обратного вызова.

И у меня все получилось! Ну, по большей части…

Было ясно, что я не мог просто делать запросы из самой VR-игры, так как это потребовало бы отображения моего token_secret для всех, кто решит заглянуть в репозиторий игры. Итак, я настроил REST API, к которому игра могла бы выполнять базовые вызовы для получения информации о вопросах и ответах.

Проблема заключалась в том, что я не мог заставить Академию Хана перенаправить обратно на мой URL. В нем говорится, что oauth_callback можно передать в качестве параметра при запросе токена, и я, очевидно, передаю свой URL-адрес в эту шаткую библиотеку OAuth, так почему же это не проходит!?

У меня остался этот одинокий пост в stackoverflow.

среда

Я попытался сделать свои собственные запросы с помощью fetch, которые быстро потерпели неудачу.

Я предположил, что у меня может быть просто веб-браузер в игре, который сможет перемещаться по процессу, и, возможно, я смогу получить некоторые данные этого токена непосредственно из браузера, устраняя необходимость в перенаправлении.

Но потом я заметил пакет хана, благодаря которому было очень просто пройти аутентификацию, и все просто заработало!

Лучше всего то, что он использует стандарт обещания!

Хорошо, у него была уязвимая зависимость, но нет ничего, что можно было бы исправить простым форком и обновлением!

Четверг

Наконец-то я мог приступить к работе над виртуальной частью этого проекта!

На тот момент у меня не было никаких предыдущих знаний о создании игр виртуальной реальности, и мой крайний срок был на следующий день. Угу.

К счастью, на YouTube было множество руководств, которые были более чем рады показать мне основы. Я следил за учебным пособием Samsung GearVR Setup in Unity 5.5 от BurgZerg Arcade, чтобы начать работать с утра.

Я также упоминал, что у меня практически не было опыта создания игр на Unity? Угу.

И снова мне на помощь пришел YouTube. Плейлист Brackeys Как сделать видеоигру дал мне примитивную основу, которую я мог применить к этому VR-проекту.

Со всеми этими ресурсами я смог заставить работать простую функцию. Вместо браузера в игре (который стоил бы мне 80 долларов в магазине ресурсов Unity), новая идея заключалась в том, чтобы пользователь:

  1. Получить код
  2. Зайдите на http://khan-vr-api.herokuapp.com/ в реальной жизни
  3. введите код
  4. Аутентификация
  5. Вернитесь в VR-игру
  6. ???
  7. Выгода.

Пятница

Большой день — последний день.

Я не собирался реализовывать функцию вопросов и ответов SAT (тот, для которого я делал весь этот проект в первую очередь) не только из-за нехватки времени, но и из-за того, что в Академии Хана нет эти данные просто доступны для запросов. Дерьмо.

Я остановился на том, чтобы игра просто отображала статистику упражнений пользователя в получитаемом формате.

вуаля

Это все, что он делает. Вы получаете свой код, проходите аутентификацию, а затем видите несколько разноцветных кубиков с крошечным текстом на них, каким-то образом обозначающим каждое упражнение, в котором вы когда-либо участвовали в Академии Хана.

Оглядываясь назад, можно заметить массу функций, которые были бы реализованы по-другому. А именно, что я бы, вероятно, использовал предыдущие тесты SAT в качестве данных для загрузки в REST API, чтобы пользователь действительно мог учиться. Это сэкономило бы мне несколько дней безрезультатных возни с OAuth 1.0 и API Khan Academy.

Но, эй, это именно та причина, по которой я взялся за этот проект. Я потерпел неудачу, многому научился и чувствую, что благодаря этому стал более разносторонним разработчиком.

Спасибо за чтение!