Сохранен 113
https://2ch.hk/gd/res/115898.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Глобальное хранилище

 Аноним Срд 23 Апр 2014 13:23:02  #1 №115898 
1398244982970.jpg

Аноны, как вы организовываете взаимодействие игровых объектов? Допустим, юниту нужен доступ к миру, чтобы пройтись по другим юнитам, еще ему нужен доступ к звуковому менеджеру, чтобы воспроизвести звук выстрела, еще ему нужен доступ к частицам, чтобы создать эффект. Или, допустим, миру нужен доступ к объекту экрана, чтобы узнать текущую позицию и выводить только нужные тайлы на экран.

Я пока нашел только одну более-менее нормальную статью на эту тему: http://www.ant-karlov.ru/globalnoe-hranilicshe.html

Там в пример приводится некое глобальное хранилище:


var g:Global = Global.getInstance();

g.sounds = new SoundManager();
g.effects = new EffectManager();
g.objects = new ObjectController();
g.key = new KeyController();


Это нормальный подход? Какие у него подводные камни?
Аноним Срд 23 Апр 2014 14:02:02  #2 №115910 

>>115898
Лучше воспользуйся собственной мамкой.

Аноним Срд 23 Апр 2014 14:05:39  #3 №115914 

>>115910
Ты заебал.

Аноним Срд 23 Апр 2014 14:05:51  #4 №115915 

>>115910
Лучше твоей:


IShluha mamka = MamkaManager.GetMamkaByMessageId(115910);
mamka.CumInMouth(bigCock);
Аноним Срд 23 Апр 2014 14:10:50  #5 №115917 

IShluha mamka = MamkaManager.GetMamkaByMessageId(115915);
mamka.CumInMouth(bigCock);
mamka.CumInMouth(bigCock);
mamka.CumInMouth(bigCock);
Аноним Срд 23 Апр 2014 14:19:35  #6 №115920 


IShluha bitch = VaginaManager.GetRandomBitch();

for (int i = 0; i < niggers.length; i++)
{
IEbar nigger = niggers[i];
bitch.FuckinInAss(nigger);
bitch.CumInVagina(nigger);
}

IShluha mamka = new Mamka(bitch);
IDaun anonym = mamka.GiveBirthTo(115917);
Аноним Срд 23 Апр 2014 14:21:55  #7 №115921 

>>115920
Сохронил.

Аноним Срд 23 Апр 2014 14:23:05  #8 №115922 

>>115917
>>115915
Сука, как же я проигрываю с этой хуйни про мамок. Надо баннер сделать с этим.

Аноним Срд 23 Апр 2014 21:18:43  #9 №116044 
1398273523591.jpg

Мамоебы, кто-нибудь ответит по теме?

Аноним Срд 23 Апр 2014 21:22:13  #10 №116046 

>>115920
Третий раз читаю с нулевой, третий раз обсираюсь.

Аноним Срд 23 Апр 2014 23:19:22  #11 №116066 

>>115920

bitch = Bitch.new;

5.times do
nigger = Nigger.new
fuck = nigger.fuck_with(bitch);
fuck.in_ass!
fuck.in_vagina! until fuck.can_cum
nigger.cum!
end

if bitch.is_pregnant?
mamka = bitch.to_mamka
sleep 9.months
anonym = mamka.make(:daun)
end

sageАноним Срд 23 Апр 2014 23:22:25  #12 №116068 

>>116066
fial

bitch = Bitch.new;

5.times do
nigger = Nigger.new
fuck = nigger.fuck_with(bitch);
fuck.in_ass!
fuck.in_vagina! until fuck.can_cum
nigger.cum!
end

if bitch.is_pregnant?
mamka = bitch.to_mamka
sleep 9.months
anonym = mamka.make(:daun)
end
Аноним Срд 23 Апр 2014 23:38:01  #13 №116071 

>>116068
Вебпетуха забыть спросили.

Аноним Чтв 24 Апр 2014 00:05:32  #14 №116072 

Бамп

Аноним Чтв 24 Апр 2014 00:55:38  #15 №116079 

Бамп.

Аноним Чтв 24 Апр 2014 01:45:22  #16 №116085 

Бамп.

Аноним Чтв 24 Апр 2014 01:47:16  #17 №116086 

>>116085
>>116079
>>116072

Сейчас, блять, смоет! Быстрей бампай ещё!

sageАноним Чтв 24 Апр 2014 01:52:09  #18 №116088 

>>116086
Он походу спать ушёл. Бампну за него с последней страницы.

Аноним Чтв 24 Апр 2014 01:54:17  #19 №116089 

>>116086
Бамп.
Я от грусноты бпмпаю. /гд/ сегодня целый день какая-то гнойная мамоебская параша с форсреми на ободке.

Аноним Чтв 24 Апр 2014 07:21:26  #20 №116107 

>>115898
Палю годноту. Значит, создаёшь новый класс GameComponent. Описываешь в нём статические переменные, которые ссылаются на все важные объекты игры. Потом делаешь так, чтобы все игровые объекты наследовали от него. А дальше сам знаешь, что делать.


public class GameComponent
{
public static Game game;
public static Camera camera;
public static и_все_остальное...
}

ООП-петухи будут кричать, что не правильно, но тебе ли не похуй? Главное чтобы удобно было.
Аноним Чтв 24 Апр 2014 07:36:31  #21 №116109 

>>116107
Таки это неправильно. В GameComponent накопится куча избыточного хлама для каждого конкретного класса. Лучше в каждый класс передавать ServiceManager и из него делать выборку только нужных глобальных данных и др. класов. Как в ОПе но через конструктор.

Аноним Чтв 24 Апр 2014 07:51:18  #22 №116111 

>>116109
И смысл так делать? Ведь один хуй все будут знать обо всех. Только при этом будет лишний костыль. Придётся засрать конструкторы, придётся ебать мозги с постоянным отслеживание нужных переменных. Есть базовый класс существ, там ты сохранил мир и ещё какую-нибудь хуйню, а в его наследнике требуются ещё другие классы, и вот опять нужно объявлять переменные, присваивать им значения.

sageАноним Чтв 24 Апр 2014 11:37:28  #23 №116118 

Бамп

sageАноним Чтв 24 Апр 2014 11:39:14  #24 №116119 

>>116118
Ой, сажа приклеилась.

sageАноним Чтв 24 Апр 2014 11:40:48  #25 №116120 

>>116119
Да что ж такое то?((

Аноним Чтв 24 Апр 2014 12:25:36  #26 №116125 

>>116120
Давай я тебе помогу)))

Аноним Чтв 24 Апр 2014 15:15:37  #27 №116148 

>>115898
>В одном из прошлых уроков я рассказывал про маленькую хитрость, которая, как оказалось, является паттерном Singleton
Проиграл и закрыл нахуй.

Талант отрыть в инете самое гавно блядь. Лучше бы
http://gameprogrammingpatterns.com/
почитал.

>>116107
>Главное чтобы удобно было.
Удобно только с первого взгляда. Логичнее было бы пропихивать Game в самик классы через Dependency Injection, без всякой статики.

Понятно, что в мамкиных проектах похуй, как писать, но надо стремиться к лучшему. Ведь ты потратишь на 5 минут больше, ебать как много, зато получишь нормальную расширяемую архитектуру.

Аноним Чтв 24 Апр 2014 15:24:35  #28 №116152 

Алсо
>>115898
>Допустим, юниту нужен доступ к миру, чтобы пройтись по другим юнитам.

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

Game game = new Game();
game.add(new Unit());

всё.

class Unit
{
public Unit(Game game)
{
this.game = game;
this.game.soundManager.play("hooray");
}
}

Аноним Чтв 24 Апр 2014 15:29:25  #29 №116153 

>>116148
Это ничем не лучше вышеописанных способов. Почему? Да потому что все игровые объекты будут иметь доступ ко всему, что скрыто в классе Game и это никак не способствует "нормальной расширяемой архитектуре". Это типичный антипаттерн.

Другое дело, когда ты чётко разграничиваешь доступ к объектам. Если различные игровые сущности хранятся в игровом мире, то должны ли эти сущности выходить за его пределы? Нет. Сущности должны знать только о мире и о том, что находится в нём. Если ты хочешь внутри сущности проиграть звук или создать эффект, вызови его через мир, а мир уже решит, что с этим делать: world.playSound("croak");

Аноним Чтв 24 Апр 2014 15:45:51  #30 №116157 

>>116153
>Да потому что все игровые объекты будут иметь доступ ко всему, что скрыто в классе Game
Про доступ я ничего не говорил, скрывай что хочешь, на здоровье.

world.soundManager.play vs world.playSound - ну фиг знает, второе покрасивее, да.

sageАноним Чтв 24 Апр 2014 16:26:16  #31 №116168 

Конференция аутистов итт. Сажа дебилам.

мимо-ассетоцарь

Аноним Чтв 24 Апр 2014 16:32:00  #32 №116169 

>>116168
> мимо-ассетопущенец
Не благодари.

Аноним Чтв 24 Апр 2014 16:38:08  #33 №116170 
[url]

>>116168

sageАноним Чтв 24 Апр 2014 16:39:34  #34 №116171 

>>116170
>>116169
Такая-то БОЛЬ анальных шутов. Продолжайте, меня это забавляет.

Аноним Чтв 24 Апр 2014 16:41:14  #35 №116172 

>>116171
У тебя это наследственное.

Аноним Чтв 24 Апр 2014 16:49:38  #36 №116173 
1398343778638.jpg

>>116171

sageАноним Чтв 24 Апр 2014 17:24:37  #37 №116175 
1398345877179.jpg

>>116172
>>116173
Трах-тибидох


Чего остановились то? Я еще здесь.

Аноним Чтв 24 Апр 2014 19:10:43  #38 №116199 

>>116107
>объекты наследовали от него
Нахуя наследовать то? Статика и так видна везде будет

Аноним Птн 25 Апр 2014 07:10:36  #39 №116262 

>>116157
> скрывай что хочешь
Класс Game служит для обеспечения доступа к основным объектам игры, так ведь? Мир, камера, менеджер звуков, менеджер эффектов. Доступ к ним будет доступен отовсюду, куда передаётся объект класса Game.

> ну фиг знает, второе покрасивее, да.
Здесь разница не столько в семантике. Ты даёшь доступ к менеджеру звуков сущностям, а им об этом знать не нужно. Они должны воспроизводить звуки в мире, а не в каком-то менеджере. Более того, даже сам World не должен знать о существовании различных менеджеров. Можно передавать ему в конструктор конкретную реализацию интерфейса IWorldAccess, через которую будет осуществляться воспроизведение звуков, эффектов и тому подобное.

Вот интересная статья на эту тему: http://sergeyteplyakov.blogspot.se/2013/03/di-service-locator.html

Аноним Птн 25 Апр 2014 08:53:32  #40 №116265 

>>116199
Как нахуя? Чтобы не писать всякое говно, типа Main.game или Main.instance.game. А просто писать game.

Аноним Птн 25 Апр 2014 09:45:21  #41 №116267 

>>116265
#define game Main.instance.game

Аноним Птн 25 Апр 2014 09:52:13  #42 №116268 

>>116267
define define

Аноним Птн 25 Апр 2014 09:58:39  #43 №116270 

>>116267
Этот даунский вариант подходит только для плас-плас-параши.

Аноним Птн 25 Апр 2014 10:04:37  #44 №116272 

>>116270
>плас-плас-параши.
Не нужна. Для дела есть шарп, для души - няшная и асм.
И да, на дефайнах в няшной можно в забавные макросы - правда, препроцессор все же слабоват.

Аноним Птн 25 Апр 2014 10:13:39  #45 №116274 

>>116272
Зачем ты сравниваешь кресты с шарпом?

Аноним Птн 25 Апр 2014 11:04:36  #46 №116280 

>>116274
>сравниваешь
Wrong.
Крестопараша не нужна вообще, безо всяких сравнений.

Аноним Птн 25 Апр 2014 11:31:15  #47 №116285 
1398411075049.jpg

>>116280
Верно.

Аноним Птн 25 Апр 2014 11:33:47  #48 №116286 

>>116272
>шарп
Или анальное рабство, или обрезанное тормозное говно (кое где еще и устаревшее как говно мамонта). Гуд лак.

Аноним Птн 25 Апр 2014 11:37:45  #49 №116287 

>>116286
Иди память освободи, петушок.

Аноним Птн 25 Апр 2014 12:00:57  #50 №116289 

>>116287
Шта? Память освобождать надо в твоей няшной, за меня это делают умные указатели, контейнеры, и parentы.

Аноним Птн 25 Апр 2014 12:30:06  #51 №116293 

>>116286
>анальное рабство
Лучше уж няшный микрософт чем омерзительные психически ущербные швабодковыродки. Чисто эстетически - да и глупо это "комьюнити" слишком, то есть совсем дебилы сплошь.
Почти как /зк, хаха.

sageАноним Птн 25 Апр 2014 12:42:08  #52 №116294 

>>116270
Охуенная аргументация.

Аноним Птн 25 Апр 2014 12:45:21  #53 №116295 

>>116262
>Ты даёшь доступ к менеджеру звуков сущностям, а им об этом знать не нужно.
Ну, возможно, ты прав. Это уже мои личные предпочтения, мне никогда не доставляло видеть god object.

>Более того, даже сам World не должен знать о существовании различных менеджеров.
Обращаться через интерфейсы = знать. Очевидно, что конкретная реализация нам не нужна.

Аноним Птн 25 Апр 2014 12:47:05  #54 №116296 

>>116294
Отличная аргументация.
Даунский вариант - дебил (то есть ты) решает проблемы через жопу и не знает ООП - а при том лезет именно в плюсы с решениями для няшной.
++ параша - святая истина. Впрочем, ты и близко не кодер и плюсов не знаешь, тебе не понять.

Аноним Птн 25 Апр 2014 14:38:06  #55 №116317 

Какие злые здесь шкальники.

Аноним Птн 25 Апр 2014 14:39:13  #56 №116318 
1398422353723.jpg

>>116317
>КУДАХ БАБАХ КУКАРЕКУ
Ясно.

Аноним Птн 25 Апр 2014 14:41:30  #57 №116319 

Затопляй говном меня полностью. Полностью затопляй.

Аноним Птн 25 Апр 2014 14:49:14  #58 №116322 

>>116319
Да ты охуел, няша. Ты деньги плати, говна он хочет.

Аноним Птн 25 Апр 2014 15:14:23  #59 №116326 

>>116317
Ты пока первый.

Аноним Птн 25 Апр 2014 15:18:39  #60 №116327 
1398424719059.jpg

>>116322
Какие деньги? Подождем шкальников-серунов. Они дадуд стране говна!

Я уже немного серьезно подумываю вайпнуть уютный /gd/ говном. Останавливает только догадка, что говно говном не смоешь. Все равно умным шкальникам взяться неоткуда, адекваты играют в рашен-партизанен, карочь все опять засрут и ваще это норма. Блядь, последней каплей итт и бухой зомби-даун недавно. Нахуй так жить?

Аноним Птн 25 Апр 2014 15:20:20  #61 №116328 
1398424820755.jpg

>>116327
Почему тебе так припекло от треда?

Анатомия багета Аноним Птн 25 Апр 2014 15:37:34  #62 №116332 
1398425854587.jpg

>>116328
Тема норм, но после ковровой мамоебли знающие аноны врядли отпишутся. Обычно что-то знающие себя ценят/уважают и в говно не лезут, даже вербальное. Лучше бы этот тред утонул с парой ответов, зато без ущерба для анона.

Аноним Птн 25 Апр 2014 15:41:24  #63 №116333 

>>116332
Но ведь это двач. Тут всякое может быть. Если ты не хочешь, чтобы твою мамку выебли, иди на какой-нибудь гд.ру. Там мамоёбов сразу банят.

Аноним Птн 25 Апр 2014 15:41:53  #64 №116334 

>>116327
> серьезно подумываю вайпнуть уютный /gd/ говном
DO IT

Аноним Птн 25 Апр 2014 15:47:33  #65 №116338 

>>116327
>вайпнуть уютный /gd/ говном.
Но ты же не можешь, только кукарекаешь жалобно.
>>116332
>ковровой мамоебли
Это лучшее что случилось с /гыды в этом году.

Аноним Птн 25 Апр 2014 15:48:18  #66 №116339 
1398426498607.png

>ты не хочешь, чтобы твою мамку выебли
Нахуй так жить?

Синглтон на синглтоне Аноним Птн 25 Апр 2014 15:51:12  #67 №116340 

Правила для неудачников. Успешные люди клали хуй на всякие там правила, паттерны и прочее. Они просто делают игры. Просто, блять, делай игру.

Аноним Птн 25 Апр 2014 15:53:16  #68 №116341 

>>116296
>Проецирование, аргументация ад хоминем
Лол, ясно, понятно.

Аноним Птн 25 Апр 2014 15:55:18  #69 №116342 

>>116341
> >#define game Main.instance.game
>умственно неполноценный защищает ВОТ ЭТО
Бедняжка. Плохо быть тобой, хуже уже нет.

Аноним Птн 25 Апр 2014 15:57:01  #70 №116343 

>>116340
>Просто, блять, делай игру.
Для начала покажи свои игры, петушок.
inb4 нехочу небуду диванон игрыненужны

Аноним Птн 25 Апр 2014 16:04:51  #71 №116348 

>>116343
Нет, ты.

Аноним Птн 25 Апр 2014 16:07:26  #72 №116349 

>>116342
>опять ад хоминем
Скучно.

Аноним Птн 25 Апр 2014 16:14:02  #73 №116352 
1398428042921.jpg

>>116349

sageАноним Птн 25 Апр 2014 16:16:21  #74 №116353 

>>116352
ЧТД

Аноним Птн 25 Апр 2014 16:28:54  #75 №116355 
1398428934258.jpg

>>116353
Мамку ебал. Твою.

Аноним Птн 25 Апр 2014 17:01:07  #76 №116357 

>>116349
Так ты же дебил, и это вполне себе медицинский факт и твое собственное признание.
Обсуждать с дебилом код смысла нет никакого, что и было указано.
Такие дела.

sageАноним Птн 25 Апр 2014 17:23:43  #77 №116359 

>>116340
Рогалик, ты?

Аноним Птн 25 Апр 2014 17:28:31  #78 №116360 
1398432511465.jpg

>>116359
Не угадал. Зомби-кун.

sageАноним Птн 25 Апр 2014 17:31:12  #79 №116361 

>>116357
>блабла тыдибил хурр дурр
Может уже обратно в /б уйдешь с такими методами спора?

Аноним Птн 25 Апр 2014 17:44:49  #80 №116364 
1398433489737.jpg

>>116359
>>116361

sageАноним Птн 25 Апр 2014 17:54:12  #81 №116365 
1398434052409.jpg

>>116364

Аноним Птн 25 Апр 2014 18:08:34  #82 №116368 

>>116365
Маме это своей будешь показывать, понял? А здесь нормально общайся.

Аноним Птн 25 Апр 2014 18:11:37  #83 №116369 
1398435097492.jpg

>>116365

Аноним Птн 25 Апр 2014 18:15:13  #84 №116370 

>>116368
Мама, ты с ума сошла?

Аноним Птн 25 Апр 2014 18:17:01  #85 №116371 

>>116369
У вас БАНГАЛОР

Аноним Птн 25 Апр 2014 18:26:03  #86 №116373 
1398435963287.jpg

Если не прекратите засирать тред, я выебу ваших мамаш, так и знайте.

Аноним Птн 25 Апр 2014 18:33:39  #87 №116375 
1398436419873.jpg
Аноним Птн 25 Апр 2014 18:45:13  #88 №116376 

>>116373
Ты опоздал.

sageАноним Птн 25 Апр 2014 19:18:45  #89 №116388 

>>116373
Обосрался
@
Требуй прекратить засирать тред

sageАноним Птн 25 Апр 2014 20:35:41  #90 №116402 

>>116388
Ты чо, сука, ты чо мразь блять? Вот такие пидоры, как ты, испортили тред.

sageАноним Птн 25 Апр 2014 21:30:07  #91 №116411 

>>116402
Прекращай засирать тред, дебил!

sageАноним Птн 25 Апр 2014 21:39:02  #92 №116415 

>>116411
Ты казёл, казлина блять. Заебал уже. Не пиши здесь сука, только если есть что по теме сказать мудила скот.

sageАноним Птн 25 Апр 2014 23:40:28  #93 №116428 

>>116415
Заколебал уже говном своим тред засирать, выблядок гнилой, убей себя, хуесос.

Аноним Суб 26 Апр 2014 00:11:08  #94 №116429 

>>116402
>>116411
>>116415
>>116428
Бамп :3

Аноним Суб 26 Апр 2014 10:21:52  #95 №116463 

Ну всё, вы огребаете.


IGod opThisPost = God.GetInstance();

List<IShluha> mamki = BoardManager.GetAllMoms("/gd/").Without(opThisPost);

for (int i = 0; i < mamki.length; i++)
{
IShluha mamka = mamki[i];
mamka.FuckAndCumOnFace(opThisPost);

if (mamka.Said("hochy dobavki"))
{
mamka.FuckAndCumOnFace(opThisPost);
}

for (int j = 0; j < mamka.relatives.length; j++)
{
IDaun relative = mamka.relatives[j];
relative.PissOnFace(opThisPost);

if (relative is IBatya)
{
(relative as IBatya).SayHim("ti lisiy pidor");
}
}
}
Аноним Суб 26 Апр 2014 10:34:12  #96 №116464 

Театор одного семена.

Аноним Суб 26 Апр 2014 12:04:41  #97 №116468 
[url]

>>116464
Ваще-то двух :3

Аноним Суб 26 Апр 2014 12:21:58  #98 №116469 

Лучший тред в гд.

sageАноним Суб 26 Апр 2014 12:43:31  #99 №116472 

>>116463
Все мамки треда кончают и ссут тебе на лицо?

Аноним Суб 26 Апр 2014 13:12:40  #100 №116474 
1398503560390.jpg

>>116472

Аноним Суб 26 Апр 2014 16:13:54  #101 №116496 

>>116463
Охуенно.

Аноним Чтв 08 Май 2014 08:54:41  #102 №118034 

Бамп по теме.

Аноним Птн 09 Май 2014 08:03:58  #103 №118155 

Перечитываю этот тред перед сном.

Аноним Птн 09 Май 2014 20:17:29  #104 №118216 

>>115898
Хранить в глобальной переменной и не париться.
Петухи со своим ентерпрайзным ООП надоели.

Аноним Птн 09 Май 2014 21:14:16  #105 №118225 

>>118216
А если ЯП не поддерживает глобальных переменных?

Аноним Птн 09 Май 2014 23:28:06  #106 №118245 

>>118225
>>118225
Тогда делай синглтон Game и в нём ссылки на все важные внутригровые структуры, этот объект пропихивай как первый аргумент.
Кстати, я знаю множество языков но ни одного без глобальных переменных.

Аноним Суб 10 Май 2014 04:36:41  #107 №118272 

>>118245
> я знаю множество языков но ни одного без глобальных переменных
Может ты путаешь глобальные переменные со статическими?

Аноним Суб 10 Май 2014 06:56:15  #108 №118278 

>>118272
Чем тебе публичная статическая переменная не глобальная?

Аноним Суб 10 Май 2014 08:56:40  #109 №118283 

>>118278
Ну смотри, если твоя мамка доступна везде и круглосуточно, то это глобальная переменная, но если твоя мамка доступна круглосуточно только по конкретному адресу, то это уже статическая переменная.

sageАноним Суб 10 Май 2014 09:17:50  #110 №118286 

>>118283
И в том и в другом случае областью видимости твоей мамки является вся программа.

Аноним Суб 10 Май 2014 11:45:49  #111 №118291 

>>118283
>доступна везде и круглосуточно
Вы только посмотрите на этого дауна, а вызывать ты её как будешь, не по адресу что ли?

Аноним Суб 10 Май 2014 14:08:04  #112 №118302 

>>118291
ДАТЫШТО?!!! Глобальная переменная - это такая жуткая магия и она не хранится в памяти никогда. А если её завернуть в нейспейс, то она перестаёт работать сразу же.

Аноним Суб 10 Май 2014 17:47:12  #113 №118332 

>>118291
Имелся в виду адрес заказчика, а не мамки.

comments powered by Disqus

Отзывы и предложения