kvestpro, не обязательно, создавать игры можно на чём угодно, для всего есть хорошие движки, не только для C#, хотя сам C#, как язык тоже ничего FinderX - Android Аркада
ну или Java - очень востребованный и у него широкое применение + кроссплатформенность. А вообще не может быть языка лучше или лучшего, у каждый предназначен для своих задач FinderX - Android Аркада
Репозиторий и где хранится код (в облаке или локально)
По мне так это основное. Материал где-то должен храниться, и чтобы друг-другу не передавать постоянно какие-то наработки, каждый может просто закинуть то, что нужно в облако, и всем доступно. Мы пользуемся дропбоксом. Очень удобно.
Добавлено (21.02.2014, 06:43) --------------------------------------------- Ну и понятное дело, что движок, соответственно и язык должны быть одни и те же для всех .
LuaScript::LuaScript(const std::string& filename) { L = luaL_newstate(); if (luaL_loadfile(L, filename.c_str()) || lua_pcall(L, 0, 0, 0)) { std::cout<<"Error: failed to load ("<<filename<<")"<<std::endl; L = 0; }
if(L) luaL_openlibs(L); }
Но возникла такая интересная штука В одно проекте, где есть только этот класс работает, перенёс в основной проект, подключил либы, первая строчка не срабатывает, без ошибок, просто срабатывает блок if. Из-за чего вообще может не работать L = luaL_newstate();? Пути я проверял, файл должен находиться
Добавлено (15.02.2014, 16:24) --------------------------------------------- Решено FinderX - Android Аркада
Сообщение отредактировал goldsphere - Воскресенье, 16 Февраля 2014, 11:40
Добавлено (01.02.2014, 15:49) --------------------------------------------- Мне например хватает одного менеджера экранов, для удобного переключения между ними.
Tc=Convert(float); что там делает float? Ты передаёшь аргумент функции, аргумент, в твоём случае, это - переменная. Надо хотя бы интуитивно понимать, что чтобы функция использовала данные, их надо ей предоставить. Tc=Convert(Tf); setlocale(0, "") - точки с запятыми надо ставить) FinderX - Android Аркада
Сообщение отредактировал goldsphere - Пятница, 31 Января 2014, 09:55
Вот намутил по одному уроку клиент-серверное приложение, 2 квадратика, все дела... Но вот проблема. Когда друг включает сервер и я к нему подключаюсь по его ip - Всё нормально. Но если я включаю сервер, то он ко мне по моему ip подключиться не может. Я пробовал сам к себе по своему ip подключаться, тоже самое. Пробовал по 127.0.0.1 - всё работает. То есть по хорошему запускается 2 окна и там игроки, как у 2 пользователей, а в плохом случае только 1 и видимо клиентское, хотя не знаю. Вот фрагмент кода:
Код
string iptext; sf::TcpSocket socket; char connectionType, mode; sf::IpAddress ip; cout<<"Enter (s) for Server or (c) for client: "; cin>>connectionType; if(connectionType == 's') { ip = sf::IpAddress::getPublicAddress(); sf::TcpListener listener; listener.listen(53000); listener.accept(socket); } else if(connectionType == 'c') { cin>>iptext; ip = sf::IpAddress(iptext); socket.connect(ip, 53000); }
Ожидаемый вопрос). Это 0.35 рабочего) Просто ему пока, что довольно трудно тянуть работу(он ленивая ж***), по мере возможности рисует. Скоро ,возможно, выложу его набросок. FinderX - Android Аркада
Сообщение отредактировал goldsphere - Понедельник, 20 Января 2014, 08:50
Мы - команда из 2.35 человек. Сейчас занимаемся разработкой файтинг-подобной игры о которой можно прочесть здесь. Пока, что блог не особо наполнен контентом, но по мере возможности будем добавлять скриншоты и делиться новостями о игре. На данный момент почти доделана техническая часть игры, в процессе графическая часть и баланс. Подробнее вы сможете прочесть лог разработки, который вскоре добавим в блог:D. Сейчас графика в игре только для теста технической части, пока не предназначена для того, чтобы её показывать публике, поэтому в раздел с проектами тему о игре добавим чуть позже.
Состав команды: goldsphere - программист Взводный - геймдизайнер Hongor - художник
Не помешала бы помощь по графической части, поэтому не откажемся ещё от 0.65 художника) FinderX - Android Аркада
Сообщение отредактировал goldsphere - Понедельник, 20 Января 2014, 08:26
Saitei, я помню запускал один тест в которой было 30000 объектов, и все они двигались в сторону игрока, поворачивались на него и просчитывали столкновение с ним. Было жутко, но весело).Но несколько тысяч тянуло нормально. А 20 даже на самом слабом компе будет тянуть с лихвой. Поэтому просто делай вектор или массив своих объектов и в цикле вызывай у них функцию LOGIC. Создавать их тоже просто. В цикле
подключать библиотеки в Visual Studio действительно не так просто.
Realy? Где же проще? По моему всё так же как и везде.
ЦитатаHaridon ()
VC++directories\Library Directories C:\Program Files %28x86%29\Microsoft Visual Studio 10.0\VC\lib
Это же стандартный путь, его можно не прописывать. Чую тут проблемка %28x86%29. Попробуй вставить путь без этого C:\Program Files\Microsoft Visual Studio 10.0\VC\lib. Подключать их просто Компоновщик -> ввод -> доп. зависимости. и туда прописать их FinderX - Android Аркада
Ситуация. Есть базовый класс Actor, и есть наследники от него. Поля у них совпадают, только функции перезаписаны. Надо поля одного наследника присвоить полям другого(точнее передать 1 наследника конструктору другого). При этом некоторые поля инициализированы динамически. Соответственно конструктором копирования по умолчанию не обойтись, надо писать свой. Но есть 1 ассоциативный массив, члены которого инициализированы динамически. При этом члены массива это объекты типа BaseSpell*, а инициализируются они его потомками. Вот как всё выглядит: Actor.h
Код
class Actor { public: SpriteFile *sprite; SpriteFile *icon; SpriteFile *hpbar; SpriteFile *mpbar;
int hp; int full_hp; int mp; int max_mp; int full_mp; int training_points; int max_training_points; int protect; bool invulnerability; int poison_impact_factor; int poison_number_steps; bool click; bool standing;
for(auto it = a.spell_book.begin(); it != a.spell_book.end(); ++it) { this->spell_book[it->first] = ???; }
this->anim = a.anim; }
В двух словах, Enemy надо инициализировать через TestHero.
Добавлено (06.01.2014, 14:26) --------------------------------------------- В принципе проблему решил небольшим костылём. Просто сделал в Actor параметр name, в конструктор enemy передавал его, и там определял какого типа создавать объект. И enemy теперь не наследник, а просто содержит Actor* actor;
Добавлено (06.01.2014, 14:27) --------------------------------------------- Но всё равно интересно как бы можно было иначе её решить