[ANN] Words Need Darts! на Kongregate

Форум, посвящённый готовым проектам на базе Unity3D

[ANN] Words Need Darts! на Kongregate

Сообщение zoon 22 фев 2011, 02:05

Пару дней назад закончил свою первую игру на Unity - 2D word game c лопаньем шариков и даже кое-какой физикой внутре :)
Написано все на C# в полном одиночестве и проактивно использует Rx Rective Extensions for .Net (http://msdn.microsoft.com/en-us/devlabs/ee794896). Rx extensions - это корутины x10 и в частности позволяют делать все тоже самое без поддержки со стороны движка (проще переносить игры на XNA, Phone 7,MonoDroid, Delta Engine etc. если вдруг понадобится ).

http://www.kongregate.com/games/z00n/words-need-darts
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27

Re: [ANN] Words Need Darts! на Kongregate

Сообщение gnoblin 22 фев 2011, 03:53

\m/

А можно тогда пару примеров про Rx в юнити? ;))
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: [ANN] Words Need Darts! на Kongregate

Сообщение Neodrop 22 фев 2011, 13:13

Rx интересно... Это для жабы?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: [ANN] Words Need Darts! на Kongregate

Сообщение zoon 22 фев 2011, 14:06

Neodrop писал(а):Rx интересно... Это для жабы?


Rx Reactive это типа Linq для коллекций работающих "в обратную сторону" (поток событий - не знаю как сказать) - официально работает под .Net(C#, VB) и javascript. Есть неофициальный порт под ActionScript3.

Есть отличный тьюториал:
https://docs.google.com/viewer?a=v&pid= ... nSOK&hl=en

Примеры по просьбе gnoblina:

Пример 1: асинхронно коннектимся к Kongregate:
Синтаксис:
Используется csharp
public static IObservable<string> Username { get; private set;}

// Ждем 7 секунд, если не получилось - загружаем имя по умолчанию
Username
   .Timeout(TimeSpan.FromSeconds(7), Observable.Return("Disconnected"))
   .Take(1)
   .Subscribe(KongPlayerManagement)
 


Синтаксис:
Используется csharp
// Kongregate callback
private void OnKongregateAPILoaded(string userInfo)
{
    var userParams = userInfo.Split('|');
    int userID = int.Parse(userParams[0]);
    string userName = userParams[1];
   
    if (userID == 0)
    {
        userName = "Guest";
    }
    xxx.Username.OnNext(userName);
}
 



Пример 2: Пишем себе iTween

Так сказать "библиотека":
Синтаксис:
Используется csharp
// Animate, PingPong - преобразователи времени в значение на отрезке [0,1]
public static IObservable<float> Animate(this IObservable<float> seconds,
                                             TimeSpan interval)
{
    if (seconds == null) throw new ArgumentNullException("seconds");
    float dt = (float)interval.TotalSeconds;
    return Observable.Defer(() =>
    {
        float start = Scheduler.Ticks;
        return seconds
            .TakeWhile(t => t < start + dt)
            .Select(t => (t - start)/dt)
            .Concat(Observable.Return(1.0f));
    });
}

public static IObservable<float> PingPong(this IObservable<float> seconds,
                                              TimeSpan interval)
{
    if (seconds == null) throw new ArgumentNullException("seconds");
    var half = TimeSpan.FromSeconds(interval.TotalSeconds/2.0);
    return seconds.Animate(half)
        .Concat(seconds.Animate(half).Select(t => 1.0f - t));
}
 



Пример использования:
Синтаксис:
Используется csharp
// Используем с произвольной AnimationCurve (удобный встроенный редактор):

public AnimationCurve curve = AnimationCurve.EaseInOut(0, 3, 1, -3);

// Анимируем объект (трясем 10 раз, потом выключаем).

// animation имеет тип IObservable и остается абсолютно composable, например
// можно повторить ее 5 раз: var newAnimation = animation.Repeat(5)
IObservable<float> animation = RxHost.Instance.Seconds
        .PingPong(TimeSpan.FromSeconds(0.2))
        .Repeat(10)
        .Finally(() => { gameObject.active = false; });
 
// В любой момент мы можем остановить анимацию вызвав Dispose у subscription.
IDisposable subscription = animation
        .Subscribe(t =>
        {
            transform.localPosition =
                new Vector3(x + curve.Evaluate(t), y,z);
        };
 

Если интересно - могу написать еще несколько.
Последний раз редактировалось zoon 22 фев 2011, 22:21, всего редактировалось 1 раз.
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27

Re: [ANN] Words Need Darts! на Kongregate

Сообщение Neodrop 22 фев 2011, 15:28

Вот спасибо. Пригляжусь :-?

(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: [ANN] Words Need Darts! на Kongregate

Сообщение zoon 22 фев 2011, 16:35

Neodrop писал(а):Вот спасибо. Пригляжусь :-?


Если кто-то хочет попробовать - есть пара хитростей по присоединению Rx к Unity:

- У Rx нет официальной сборки для Mono, но версия для XNA 4.0 подходит идеально.
Если пользоваться MonoDevelop - все работает прямо из коробки, но если пользоваться VisualStudio - нужны dll со стертыми подписями (на самом деле нужно подхачить IL, т.к. там прописаны права доступа к `internal` между сборками).
Я сделал такие для версии 1.0.2787.0 (+ там лежит RxHost singleton, UnityScheduler и обертки Unity... , которые запускают time-based Observable методы через UnityScheduler).

Брать тут:
http://goo.gl/znwcy
https://github.com/zoon/NUnitLiteUnityRunner/downloads

PS. выложил на Kongregate старую демку "Time Flies Like an Arrow" (это такой "Hello World" для Rx)
http://www.kongregate.com/games/z00n/ti ... e-an-arrow

Каждая следующая буква получает координату мыши со сдвигом во времени.
Интересная часть кода:

Синтаксис:
Используется csharp
...
private void Start()
{
    _mousePositions = new Vector2[TimeFliesLikeAnArrow.Length];
    for (var i = 0; i < _mousePositions.Length; i++)
    {
        var ii = i;
        _subscriptions.Add(
            // Magic happens here:
            RxHost.Instance.GUIEvents
                .Where(e => e.type == EventType.mouseMove)
                .UnityDelay(TimeSpan.FromMilliseconds(ii*100))
                .Subscribe(e => _mousePositions[ii] = e.mousePosition)
            );
    }
}
Последний раз редактировалось zoon 22 фев 2011, 23:16, всего редактировалось 2 раз(а).
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27

Re: [ANN] Words Need Darts! на Kongregate

Сообщение gnoblin 22 фев 2011, 20:23

Надо некоторое время чтобы осмыслить (popcorn), спасибо!

Есть отличный тьюториал:
http://download.microsoft.com/download/ ... 20.NET.pdf

Не открывает...
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: [ANN] Words Need Darts! на Kongregate

Сообщение zoon 22 фев 2011, 22:17

gnoblin писал(а):Надо некоторое время чтобы осмыслить (popcorn), спасибо!

Есть отличный тьюториал:
http://download.microsoft.com/download/ ... 20.NET.pdf

Не открывает...

Какие-то заморочки microsoft с адресами.
(ссылка в шапке на Hand-on Labs )
http://social.msdn.microsoft.com/Forums/is/rx/threads
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27

Re: [ANN] Words Need Darts! на Kongregate

Сообщение gnoblin 22 фев 2011, 23:04

Гитхаб тоже не грузит (404) :-ss
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: [ANN] Words Need Darts! на Kongregate

Сообщение zoon 22 фев 2011, 23:18

gnoblin писал(а):Гитхаб тоже не грузит (404) :-ss


А это форум - квадратные скобки в URL :D
http://goo.gl/znwcy
Джаггер
Evo
Аватара пользователя
zoon
UNIт
 
Сообщения: 58
Зарегистрирован: 24 май 2010, 08:27

Re: [ANN] Words Need Darts! на Kongregate

Сообщение [bm] 27 фев 2011, 03:28

(3A4OT) очень интересна тема про Rx
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: [ANN] Words Need Darts! на Kongregate

Сообщение borr 17 сен 2013, 14:35

а с iOS у данного чуда проблемы есть?
borr
UNIт
 
Сообщения: 112
Зарегистрирован: 01 мар 2013, 09:15

Re: [ANN] Words Need Darts! на Kongregate

Сообщение BornFoRdeatH 17 сен 2013, 16:37

Изображение
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath


Вернуться в Законченные проекты и Демо

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1