Create site free
Использовать ли global.* (3) - Решение серьезных вопросов - Разработка игр на Game Maker (Advanced Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 5«12345»
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Advanced Mode) » Решение серьезных вопросов » Использовать ли global.*
Использовать ли global.*
Ang3L Дата: Вторник, 21.04.2009, 17:57 | Сообщение # 41
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (Druce)
когда надо обновить все.

А когда все? Помоему, всегда обновляется только часть данных. Вот пример, допустим у меня есть едитбоксы. Я ими редактирую типы частиц, атракторы, эмиттеры и деструкторы. Работаю только с типами. Зачем обновлять все едит боксы, если можно обновить только едитбоксы типов частиц?

Quote (Druce)
И если ты считаешь, что передавать информацию одному объекту через глобал - это изврат, то ты прав)).

Ну ессесно, это теряет смысл. Но я не за это.

Quote (Druce)
А почему? Вот напиши список того, что в глобале тебе не нравится. По пунктикам.

Буду складировать.
  • Не возможность проверять присылаемые данные.
  • Не возможно узнать кто обращается к глобальной переменной.
  • Теряется структуризация программы.


  • Blogpost
     
    Druce Дата: Вторник, 21.04.2009, 18:12 | Сообщение # 42
    Каждый 5й пост мой
    Группа: Страж
    Сообщений: 1543
    Статус: Offline
    Quote (Ang3L)
    когда надо обновить все. А когда все?

    Ну например ты сделал меню в той же комнате, где и сама игра. Пусть у тебя в меню игра останавливается. Как образцу это определить? Посмотреть global.menu_on. Если она 1, то обновляем образец, иначе объекты меню.
    Или например у тебя в игре сетка с клеткой 10 на 10. В 1 объекте 1 раз считаешь, что количество клеток
    global.cells_x=room_width div 10
    global.cells_y=room_height div 10
    А потом всеми объектами можно юзать эти величины. Можно их записать и в объект контроллера, и обращаться к нему, но зачем создавать объект, если есть объект global?
    По пунктам:
    1 и 2: Либо (при чтении переменной) это совершенно неважно, либо сам объект, кторый меняет переменную (шлет данные) сам проверяет все для него необходимое, перед тем как изменять.
    3: тоже не пойму, а как тогда писать? g. вместо global.? Что это меняет?
    Вывод:
    Глобал можно и нужно юзать в тех случаях, когда он влияет на всех, а на него влияют немногие. Либо в тех же циклах сделать темповые переменные глобальными, тогда не надо мучаться с тем, кому переменная принадлежит, если у тебя например циклом перебираются объекты.
    Глобал не нужно использовать в тех случаях, когда с ним работают немногие объекты, тогда проще передавать информацию напрямую.
    Писать g. или global. - разницы почти не несет, если объект g постоянный. Тут уже дело удобства. Плюс лишний объект-контроллер.


    druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
     
    NewStrannik Дата: Вторник, 21.04.2009, 18:31 | Сообщение # 43
    Всех уже задолбал
    Группа: Проверенные
    Сообщений: 808
    Статус: Offline
    Краткий вывод:
    - Использовать global.* или <persistent object>.* дело вкуса, не боле.
    - Если используешь globalvar, то лучше всего давать специфичные названия (к примеру: gLevelQuality), иначе может быть путаница.

    От себя:
    Всё! Хватить мудрить, если руки из нужного места растут, всё будет отлично! К тому же, для того, чтобы не потерялась "структуризация программы и другая х**ня", многие прописывают глобальные переменные в "главном" объекте, чаще всего в контроллере ...



    Сообщение отредактировал NewStrannik - Вторник, 21.04.2009, 18:32
     
    Ang3L Дата: Вторник, 21.04.2009, 19:18 | Сообщение # 44
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (Druce)
    Ну например ты сделал меню в той же комнате, где и сама игра. Пусть у тебя в меню игра останавливается. Как образцу это определить? Посмотреть global.menu_on. Если она 1, то обновляем образец, иначе объекты меню.

    У меня, создаётся сурф, на него отрисовывается кадр и отрубаем все образцы отвечающие за игровую составляющую и включаем отвечающую за меню, паузу и т.д.

    Quote (Druce)
    но зачем создавать объект, если есть объект global?

    А куда ты денешь объект где посчитал сколько клеток? И почему бы не хранить в нём кол-во клеток?

    Quote (Druce)
    либо сам объект, кторый меняет переменную (шлет данные) сам проверяет все для него необходимое, перед тем как изменять.

    Раздающий(контроллер) один, а принимающих объектов куча.

    Quote
    - Использовать global.* или <persistent object>.* дело вкуса, не боле.

    Тебя даже не пугает что в persistent object ещё можно кучу кода написать.

    Quote (Druce)
    Что это меняет?

    Ничего.


    Blogpost
     
    NewStrannik Дата: Вторник, 21.04.2009, 19:23 | Сообщение # 45
    Всех уже задолбал
    Группа: Проверенные
    Сообщений: 808
    Статус: Offline
    Ang3L, совершенно пофигу. Я ниже написал, что чаще всего глобальные переменные пишутся в контроллере.
     
    Druce Дата: Вторник, 21.04.2009, 19:30 | Сообщение # 46
    Каждый 5й пост мой
    Группа: Страж
    Сообщений: 1543
    Статус: Offline
    Ang3L, ладно, короче заколебало меня с тобой спорить)) Тока все же, что ты подразумевал под
    Quote (Ang3L)
    Теряется структуризация программы.

    ?
    А в остальном Станник верно глаголит. Я пришел к выводу, что глобал и персистент объект - исключительно дело вкуса, не более, ни один из методов не лучше и не хуже. Правда для глобала не нужен лишний объект, но это не важно.

    Добавлено (21.04.2009, 19:30)
    ---------------------------------------------
    Ang3L, чем мудрить, иди лучше порисуй, на тебе 3 тайла висят.



    druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
     
    Ang3L Дата: Вторник, 21.04.2009, 20:00 | Сообщение # 47
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Прикрепления: 1149811.png(30Kb)


    Blogpost
     
    SRes Дата: Вторник, 21.04.2009, 20:05 | Сообщение # 48
    Каждый 5й пост мой
    Группа: Страж
    Сообщений: 2512
    Статус: Offline
    Кто мешает написать global.EnemyHP или g.EnemyHP? Какая нахрен разница ? Народ, это попахивает бредом. Спор беспочвенный, мы же не спорим что круче :
    • i += 1
    • i = i + 1
    Давайте спорить ?


    Velociped Inc.

    Сообщение отредактировал SRes - Вторник, 21.04.2009, 20:53
     
    Ang3L Дата: Вторник, 21.04.2009, 20:10 | Сообщение # 49
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (SRes)
    Кто мешает написать global.EnemyHP или g.EnemyHP? Какая нахрен разница ?

    Да ёпти! Не в этом дело!!!!!!!!!!!!!!

    SRes, читай пост №41, 3 пункта!!! Прочитай 50, 100, а лучше тысячу раз!



    Blogpost
     
    SRes Дата: Вторник, 21.04.2009, 20:12 | Сообщение # 50
    Каждый 5й пост мой
    Группа: Страж
    Сообщений: 2512
    Статус: Offline
    Мне эти "аргументы" не являются понятными\вещественными. А третий вообще придуманный на ходу.


    Velociped Inc.
     
    splean Дата: Вторник, 21.04.2009, 20:16 | Сообщение # 51
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 1473
    Статус: Offline
    Я счас всех умников, которые указывают надо мудрить или нет, заставлю капчу вводить при каждом сообщении! Если не видите смысла в обсуждении, не лезьте.

    Вот тебе твоя же картинка, если посмотреть на GLOBAL. как на объект. Что то изменилось? Ничего, а уже все структурировано.



    Блог?
    Твиттер! =)
     
    Ang3L Дата: Вторник, 21.04.2009, 20:17 | Сообщение # 52
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (SRes)
    А третий вообще придуманный на ходу.

    Да! Действительно! Все такие мудаки, 20 лет это вырабатывали, а ты пришёл и сказал: мне это не понятно и ваще это нах не нужно! Да. Конечно!


    Blogpost
     
    Ang3L Дата: Вторник, 21.04.2009, 20:18 | Сообщение # 53
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    splean, ты не можешь смотреть на него через призму объекта, т.к. доступа к нему не имеешь. А вот к обычному объекту да.


    Blogpost
     
    Ang3L Дата: Вторник, 21.04.2009, 20:24 | Сообщение # 54
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (splean)
    если посмотреть на GLOBAL. как на объект.

    И вообще, это только предположение. Это может быть и не объект. Я незнаю как Марк сделал.

    Корочь. Мне самому уже надоело. Все остались при своих. Кто как хочет, тот так и программирует. Теми способами, что я пользуюсь, не я выдумал. Всё проверено 20летним опытом. Мой "учитель" с коллегами делали ось, но им пришлось её переделывать, потому что плохо продумали и использовали плохо структурированную иерархию. Ессесно, всё пошло по3.14зде, когда всё собрали. Поэтому у меня есть причина верить ему. И я собирал опыт других не глупых людей.



    Blogpost
     
    Ang3L Дата: Вторник, 21.04.2009, 20:28 | Сообщение # 55
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (splean)
    но я его точку зрения не разделяю

    Я ща сделаю финт ушами! Поставлю этот вопрос на форуме программистов. т.к. инфы так и не нашёл.


    Blogpost
     
    splean Дата: Вторник, 21.04.2009, 21:15 | Сообщение # 56
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 1473
    Статус: Offline
    речь то не о высокоуровневых языках. парадигмы хоть и те же, да только масштабы здесь меньше на несколько порядков.

    Добавлено (21.04.2009, 21:15)
    ---------------------------------------------
    Так-с, продолжим культурно-развлекательную программу.

    Quote (Ang3L)
    т.к. доступа к нему не имеешь. А вот к обычному объекту да.

    Вопрос, а зачем нам иметь к нему доступ? Следить за валидностью изменений? А если все проверки проводить ДО изменения? Тогда не нужно относиться к global-у как к объекту.

    Повторюсь, речь идет о GM и его маленьком семейном кругу.

    NewStrannik нарисовал то же самое почти



    Блог?
    Твиттер! =)
     
    Ang3L Дата: Четверг, 23.04.2009, 23:57 | Сообщение # 57
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Бъярн Страуструп:
  • "Если в программе используются глобальные переменные, то часто это указывает на то, что структура не до конца проработана, и поэтому требуется некоторая оптимизация."
  • "Кроме того, если в программе есть паралельные вычисления, использование одной глобальной переменной для сигнализаций о разных ошибках неизбежно приведёт к катастрофе."


  • Blogpost
     
    NewStrannik Дата: Пятница, 24.04.2009, 03:53 | Сообщение # 58
    Всех уже задолбал
    Группа: Проверенные
    Сообщений: 808
    Статус: Offline
    Зачем ты GML сравниваешь с C++?
    ГМ создан для обучения алгоритмизации, а Си++ чистой воды язык программирования.
    На ГМ использование глобальных переменных ни к чему плохому не приводит и на структуризированность не влияет. К тому же, какие нах в ГМ параллельные вычисления?!
     
    Ang3L Дата: Пятница, 24.04.2009, 14:11 | Сообщение # 59
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 2667
    Статус: Offline
    Quote (NewStrannik)
    ГМ создан для обучения алгоритмизации

    Вот и учись как надо! dry

    Quote (NewStrannik)
    К тому же, какие нах в ГМ параллельные вычисления?!

    GMThreads.dll


    Blogpost
     
    splean Дата: Пятница, 24.04.2009, 14:13 | Сообщение # 60
    Каждый 5й пост мой
    Группа: Админы
    Сообщений: 1473
    Статус: Offline
    Quote (Ang3L)
    Вот и учись как надо!

    начинать людям надо с малого, а не с советов Страуструпа
    Quote (Ang3L)
    GMThreads.dll

    1 использование на 10 миллионов запуска GM.

    "по фен-шую" вроде бы и некрасиво использовать глобалы, но в рамках ГМ - вполне приемлимо и оправдано.



    Блог?
    Твиттер! =)
     
    Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Advanced Mode) » Решение серьезных вопросов » Использовать ли global.*
    Страница 3 из 5«12345»
    Поиск:



    Сообщество Gmaker.SU 2005-2012
    Используются технологии uCoz
    Простой вход