<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://gravitywiki.ru/index.php?action=history&amp;feed=atom&amp;title=guides%2Fopencomputers%2Fcommon_mistakes</id>
	<title>guides/opencomputers/common mistakes - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://gravitywiki.ru/index.php?action=history&amp;feed=atom&amp;title=guides%2Fopencomputers%2Fcommon_mistakes"/>
	<link rel="alternate" type="text/html" href="https://gravitywiki.ru/index.php?title=guides/opencomputers/common_mistakes&amp;action=history"/>
	<updated>2026-04-23T16:18:04Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://gravitywiki.ru/index.php?title=guides/opencomputers/common_mistakes&amp;diff=14085&amp;oldid=prev</id>
		<title>Pryn1k: Новая страница: «OpenComputers — это мод, который почти полностью завязан на программировании и логике. Поэтому большинство ошибок новичков связано не с “железом”, а с Lua-кодом, архитектурой программ и непониманием того, как система реально работает внутри OpenOS. Эти ошибки ча...»</title>
		<link rel="alternate" type="text/html" href="https://gravitywiki.ru/index.php?title=guides/opencomputers/common_mistakes&amp;diff=14085&amp;oldid=prev"/>
		<updated>2026-04-23T11:16:32Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «OpenComputers — это мод, который почти полностью завязан на программировании и логике. Поэтому большинство ошибок новичков связано не с “железом”, а с Lua-кодом, архитектурой программ и непониманием того, как система реально работает внутри OpenOS. Эти ошибки ча...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;OpenComputers — это мод, который почти полностью завязан на программировании и логике. Поэтому большинство ошибок новичков связано не с “железом”, а с Lua-кодом, архитектурой программ и непониманием того, как система реально работает внутри OpenOS. Эти ошибки часто приводят к лагам, зависаниям компьютеров или полной неработоспособности систем автоматизации.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Новички в OpenComputers обычно приходят из модов, где автоматизация визуальная (типа труб, блоков или GUI-интерфейсов). Здесь же всё строится через код, и это создаёт типичный набор проблем:&lt;br /&gt;
&lt;br /&gt;
- непонимание событийной модели&lt;br /&gt;
&lt;br /&gt;
- бесконечные циклы без оптимизации&lt;br /&gt;
&lt;br /&gt;
- неправильная работа с компонентами&lt;br /&gt;
&lt;br /&gt;
- отсутствие структуры кода&lt;br /&gt;
&lt;br /&gt;
- игнорирование os.sleep()&lt;br /&gt;
&lt;br /&gt;
Эти ошибки повторяются почти у всех начинающих и критически влияют на производительность систем.&lt;br /&gt;
&lt;br /&gt;
== Как работает система и почему возникают ошибки ==&lt;br /&gt;
OpenComputers работает как полноценная вычислительная среда:&lt;br /&gt;
&lt;br /&gt;
Lua-скрипты выполняются внутри OpenOS&lt;br /&gt;
&lt;br /&gt;
все действия идут через component API&lt;br /&gt;
&lt;br /&gt;
каждый вызов компонента имеет стоимость по CPU&lt;br /&gt;
&lt;br /&gt;
события обрабатываются отдельно от основного цикла&lt;br /&gt;
&lt;br /&gt;
Ошибка возникает, когда игрок:&lt;br /&gt;
&lt;br /&gt;
перегружает CPU бесконечными циклами&lt;br /&gt;
&lt;br /&gt;
вызывает компоненты слишком часто&lt;br /&gt;
&lt;br /&gt;
не использует event систему&lt;br /&gt;
&lt;br /&gt;
пишет код без структуры&lt;br /&gt;
&lt;br /&gt;
== Типичные ошибки новичков ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Бесконечные циклы без os.sleep() ===&lt;br /&gt;
Самая частая и самая критичная ошибка.&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;working&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Проблема: цикл работает без паузы и забивает CPU на 100%.&lt;br /&gt;
&lt;br /&gt;
Правильный вариант:&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;working&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
os.sleep(1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
=== 2. Постоянный polling вместо событий ===&lt;br /&gt;
Новички постоянно проверяют состояние вместо использования event.&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
local state = rs.getInput(1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Это перегружает систему.&lt;br /&gt;
&lt;br /&gt;
Правильно — использовать события:&lt;br /&gt;
&lt;br /&gt;
local event = require(&amp;quot;event&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
event.pull(&amp;quot;redstone_changed&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
=== 3. Чрезмерные вызовы component API ===&lt;br /&gt;
Каждый вызов компонента — это нагрузка.&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
print(component.redstone.getInput(1))&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Проблема: постоянный запрос состояния.&lt;br /&gt;
&lt;br /&gt;
=== 4. Отсутствие структуры кода ===&lt;br /&gt;
Новички пишут всё в одном блоке без функций.&lt;br /&gt;
&lt;br /&gt;
local rs = require(&amp;quot;component&amp;quot;).redstone&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
if rs.getInput(1) == 15 then&lt;br /&gt;
&lt;br /&gt;
rs.setOutput(1, 15)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
os.sleep(1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Нет разделения логики.&lt;br /&gt;
&lt;br /&gt;
Правильный подход:&lt;br /&gt;
&lt;br /&gt;
local rs = require(&amp;quot;component&amp;quot;).redstone&lt;br /&gt;
&lt;br /&gt;
function update()&lt;br /&gt;
&lt;br /&gt;
if rs.getInput(1) == 15 then&lt;br /&gt;
&lt;br /&gt;
rs.setOutput(1, 15)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
update()&lt;br /&gt;
&lt;br /&gt;
os.sleep(1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
=== 5. Игнорирование ошибок Lua ===&lt;br /&gt;
Новички не проверяют ошибки выполнения.&lt;br /&gt;
&lt;br /&gt;
local gpu = require(&amp;quot;component&amp;quot;).gpu&lt;br /&gt;
&lt;br /&gt;
gpu.set(1, 1, nil)&lt;br /&gt;
&lt;br /&gt;
Это может привести к runtime error.&lt;br /&gt;
&lt;br /&gt;
=== 6. Неправильная работа с таблицами ===&lt;br /&gt;
Lua использует индексацию с 1, а не с 0.&lt;br /&gt;
&lt;br /&gt;
local t = {&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
print(t[0])&lt;br /&gt;
&lt;br /&gt;
Это всегда nil.&lt;br /&gt;
&lt;br /&gt;
=== 7. Попытка использовать несуществующие компоненты ===&lt;br /&gt;
Ошибка возникает, если компонент не установлен.&lt;br /&gt;
&lt;br /&gt;
local inv = require(&amp;quot;component&amp;quot;).inventory_controller&lt;br /&gt;
&lt;br /&gt;
inv.sort()&lt;br /&gt;
&lt;br /&gt;
Если компонента нет — программа падает.&lt;br /&gt;
&lt;br /&gt;
=== 8. Игнорирование структуры проекта ===&lt;br /&gt;
Новички делают один огромный файл.&lt;br /&gt;
&lt;br /&gt;
-- 300 строк кода в одном файле&lt;br /&gt;
&lt;br /&gt;
Это невозможно поддерживать.&lt;br /&gt;
&lt;br /&gt;
=== 9. Слишком частая работа с GPU ===&lt;br /&gt;
GPU — дорогой по ресурсам компонент.&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
gpu.set(1,1,&amp;quot;text&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Без sleep это моментально перегружает систему.&lt;br /&gt;
&lt;br /&gt;
=== 10. Отсутствие тестирования ===&lt;br /&gt;
Новички сразу запускают код в основной системе без проверки.&lt;br /&gt;
&lt;br /&gt;
== Советы для сервера GravityCraft ==&lt;br /&gt;
На серверах GravityCraft ошибки новичков особенно критичны, потому что влияют на TPS всей базы.&lt;br /&gt;
&lt;br /&gt;
- всегда добавляй os.sleep() в циклы&lt;br /&gt;
&lt;br /&gt;
- избегай постоянного polling&lt;br /&gt;
&lt;br /&gt;
- используй event.pull() вместо бесконечных проверок&lt;br /&gt;
&lt;br /&gt;
- не вызывай component API слишком часто&lt;br /&gt;
&lt;br /&gt;
- разделяй код на функции и модули&lt;br /&gt;
&lt;br /&gt;
- тестируй программы на отдельном компьютере&lt;br /&gt;
&lt;br /&gt;
Также важно помнить: плохо написанный Lua-код может лагать сильнее, чем редстоун-ферма.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Типичные ошибки новичков в OpenComputers почти всегда связаны с неправильным использованием Lua, отсутствием оптимизации и игнорированием событийной системы. Как только игрок начинает думать не “как заставить работать”, а “как сделать правильно и эффективно”, уровень его систем резко растёт.&lt;/div&gt;</summary>
		<author><name>Pryn1k</name></author>
	</entry>
</feed>