Войти
ПрограммированиеФорумВеб

Создание текстовой онлайн игры

#0
19:54, 23 июня 2013

Добрый день!
Хочу создать текстовую онлайн игру (пусть будет как пример Колхоз-онлайн). Начал учить PHP, HTLM, CSS и.т.д., но остановился когда решил написать саму игру с нуля.
Вопрос такой: с чего начинается написание такого типа игр? Иначе говоря какие основные файлы надо написать чтобы можно было зайти в игру (db_connect.php, start_session.php и.т.д. - это я смотрел по скачанному скрипту колхоза).
Если ктото еще делал такие игры - подскажите, пожалуйста, с чего вы начинали...


#1
20:51, 23 июня 2013

Начни с чата что-ли. В тру онлайн игре по любому должен быть чат) И потренируешься и примеров есть куча.

#2
1:09, 24 июня 2013

Mujiciok
Просто коллекция разнообразных граблей и ошибок новичков.
>хочу создать онлайн игру, похожую на %projectname%
>начал учить PHP, HTML, CSS
>остановился, не зная, какую строчку кода писать первой.
>какие файлы надо создать? Подойдут ли такие же, как в %скачанные скрипты%?

Это все неправильно. Игру делают игрой алгоритмы и технологии. Перечисленные языки привязаны к конкретному веб-серверу, подозреваю что там nginx или чистый апач. Чтобы создать свой проект, нужно как минимум разбираться в самом сервере, знать, как он отвечает на клиентские запросы, какие странички должны называться дефолтными именами, какие - своими, как и где прописывать доступы, где хранить логи и многое другое. Это даже не программирование, а администрирование веб-серверов. Никто не мешает взять и на IIS развернуться, вдруг кто бесплатный сервер подгонит. И что, учить .net языки спешно?

Помимо веб-сервера, нужно знать принципы работы сервера баз данных (почти наверняка это mysql), понимать как хранятся данные в различных таблицах и как они между собой связываются, чтобы не заводить каждый раз топик на форуме, если потребуется добавить в базу новый овощ.

Помимо БД, необходимо уметь писать на перечисленных языках. Думаю, не нужно объяснять, что надо уметь верстать на чистом HTML, чтобы потом строить нужные страницы динамически?

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

Я бы рекомендовал начинать со статических страниц, сверстать сайт в чистом html, затем с картинками, затем с интерактивом (гиперссылками на другие страницы этого же сайта), ознакомиться с CSS и переходить к освоению PHP, на что может уйти не один год. Или вливаться в команду, где уже делают похожий проект, чтобы форсированно подтянули практикой, пропуская все те знания, которые "прямо сейчас" не нужны.

#3
3:25, 24 июня 2013

Mujiciok
> Начни с чата что-ли
+1
ММО это такая игра где можно получить по роже в верхней части экрана за то, что сказал в нижней (с) примерно bash.org

сейчас как раз пишу чат, мне казалось что там всё намного проще % )
#4
19:57, 24 июня 2013

Спасибо за советы :) Буду учиться на ошибках и наступать на грабли :)

#5
23:22, 25 июня 2013

Ну шоли покапитанствую, опишу общие принципы и логику происходящего.

Есть клиент и сервер, между ними происходит следущее:
1. На компьютере клиента всю работу выполняет браузер. Человек вводит адрес и браузер отправляет запрос на получение данных к серверу.
Браузер ожидает получить HTML файл в котором могут быть прописаны другие дополнительные файлы (css, javascript)

2. На компьютере-сервере запрос принимает программа-сервер -- для php это почти всегда Apache или nginx (теоретически может быть что угодно, вплоть до самописных монстров :)
Основная задача этих серверов принять запрос на получение файла, найти этот файл, и отправить его клиенту. Если файл на который получен запрос имеет разрешение php (на самом деле это настраивается) сервер перед тем как отправить его клиенту "скармливает" этот файл другой программе -- php интерпретатору, который делает свои страшные дела (выполняет весь php код) и возвращает серверу то что получилось в результате, что уже сервер и отравляет клиенту.
PHP интерпретатор в свою очередь может дёргать любые другие программы: например для сохранения каких-то данных вместо создания файлов на винчестере (на винчестере сервера :), почти всегда пользуются программами баз данных -- mySQL, msSQL, oracle и т.д.

3. Браузер получает желаемый html файлик, начинает его парсить, при нахождении ссылок на другие файлы грузит эти файлы. Применяет все стили прописанные во всех подключенных css файлах, выполняет все javascript скрипты.

Сервер не знает ничего что происходит на клиенте, клиент не знает ничего что происходит на сервере, они знают только то что отправляют друг другу. Замену одного из них на нечто совершенно другое второй даже не заметит.

Программа на php, из-за описанного механизма, включается при получении сервером запроса и выключается перед отправкой сервером данных. Что непривычно для мышления людей пишущих до этого десктопные программы на нормальных языках :)
Поэтому обращения к двум разным страницам (или даже повторное к одной и той же) это по-сути ничем не связанные 2 разных запуска php кода.

Чтобы как-то понять на стороне сервера, это запросы от разных людей или от одного и того же придумали HTTP cookie (небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя). А в php реализовали механизм сессий упрощающий жизнь операции: когда при отправке сервером странички сервер также указывает клиенту (не забываем что в роли клиента браузер) сохрани у себя cookiename='я креведко №100500'. В результате чего все последующие запросы от браузера к серверу будут содержать также и cookiename='я креведко №100500' по которому и можно будет опознать пользователя. В сессиях php данные хранятся индивидуально, и другим пользователям не доступны.

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

Исходя из всего выше написанного вопрос:
>Иначе говоря какие основные файлы надо написать чтобы можно было зайти в игру
Не очень понятный :) Что вообще значит значит зайти в игру?

#6
10:09, 26 июня 2013

Zx
Браво! Кратко и ёмко расписан весь механизм взаимодействия браузерных клиентов с веб-сервером :)

#7
16:51, 26 июня 2013

Magikan
Спасибо, старался :)
Может доработать и запихнуть в раздел статьи/подсказки?

#8
23:54, 6 июля 2013

Zx
спасибо, очень полезная инфа :) чтоб найти это в интернете надо порыться немало и собрать по кусочкам все :)

Прошло более 1 года
#9
17:40, 27 ноя. 2014

Mujiciok, если в программировании не силен, могу предложить создать текстовую игру онлайн с помощью бесплатного конструктора квестов на http://apero.ru/Создать-игру/. Игры выходят не хуже, чем на AXMA Story Maker, но осваивается буквально за 5 минут, без шуток.

Mujiciok
> конкретный пример: мне надо "посадить растение", а через 5 минут "полить"... как это сделать?

Это сделать будет проще простого, приведу исходный код, чтобы было понятие, насколько все удобно.

\Сад
Ты находишься в пышном саду.
\(Посадка растений, Посадить растение)
\ЕСЛИ(Растение посажено=1) Здесь ты посадил растение.
\ЕСЛИ(Растение посажено=1 И АПЕРО.текущее время - Время посадки>60*5) \(Полить растение, Полить растение)
\(Сад, Проверить сад)
\СТОП

\Посадка растений
Ты посадил растение. Не забудь полить его через 5 минут.
\(Растение посажено=1)
\(Время посадки=АПЕРО.текущее время)
\(Сад, Осмотреть свой сад)
\СТОП

\Полить растение
Ты поливаешь растение.
\(Сад, Осмотреть свой сад)
\СТОП

Немного поясню:

\Сад
Объявляем локацию с именем Сад.

\(Посадка растений, Посадить растение)
Это создание кнопки с текстом "Посадить растение", при нажатии на которую пользователь попадает на локацию "Посадка растений"

\ЕСЛИ(Растение посажено=1) Здесь ты посадил растение.
Если переменная "Растение посажено" равно 1, то тогда будет выведен текст Здесь ты посадил растение.
Если переменная еще не объявлена то по-умолчанию она равна 0.

АПЕРО.текущее время - Время посадки>60*5
АПЕРО.текущее время - это переменная, хранящая текущее количество секунд. (обновляется при каждом запросе)
60*5 - 5 минут или 300 секунд.

\(Растение посажено=1)
Объявление переменной Растение посажено и присвоение ей значения 1

Если ты не видишь ничего сложного в этом коде, то считай, что уже умеешь писать текстовые онлайн игры на платформе Аперо. Рекомендую :thumb:

#10
19:47, 27 ноя. 2014

Учи

протокол передачи и приема данных, сетевой.

HTTP протокол стандарта.

============================

HTML стандарт весь от и до . Это инструмент финал вывода на лист броузера

===================================

CSS стили

==================================

Технология защиты сервера от взломов. Это антивирусная защита.Там наверное машинный язык и ближайший к нему

=======================================

Любой язык скриптования , признано что LUA это самый лучший,но пользуют все диалект Ecma262 javascript

=========================================

Учи игромеханики как устройство игры ,это набор правил.

GURPS MECHWARRIOR FUZION FALLOUTPNP FUDGE VAMPIRE-MASQUARADUS ADND SHADOWRUNNER TWILIGHT2010 и тд

======================================

Учи юридическое законы о лицензиях и пользовании чужих авторских прав чтоб не попасть по предыдущему пункту

========================================

Учи наверное оригинальный Си (не Си++) как массово пользуемый общего назначения , на нем пишется то что за кадром за сценой считает сервер сторона

======================================

Учи любую базу данных обычно это MySQL и язык баз данных SQL

======================

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

=======================

Учи экономику --это монетизация проекта

=========================

Учи базовое по графике,ну хотя б элементарно квадратами размечивать игровой лист типа менюшки оконки панельки кнопочки

===========================

#11
19:49, 27 ноя. 2014

Наверное учи так

1 HTML+CSS .
2 HTTP стандарт прием передача данных.
3 База данных.
4 Элементарная антивирусная защита сервера.
5 Сервер как инструмент и его настройки.

#12
0:46, 28 ноя. 2014

Mujiciok
где-то скачивал готовый движок для игры типа БК только немного круче.
Тебе будет намного проще начать с чего-то готового, чем самому всё делать.
ЗЫ быстрый вопрос, зачем  тебе делать игру? у тебя невероятная идея есть? или просто проверить свои силы? или научится, чтобы потом зарабатывать на этом?

ПрограммированиеФорумВеб

Тема в архиве.