Я занимаюсь разработкой игры на python 3.6, и я хочу, чтобы в многопользовательской версии она отправляла на сервер объекты, измененные клиентом (игроком), которые я думал, чтобы сериализовать их для передачи. Я использую pygame и, следовательно, pygame.Surface в моих объектах
У меня есть объекты с такой структурой:
class Cargo(Bateau):
dictCargos = dict()
def __init__(self, map, nom, pos, armateur=None):
Bateau.__init__(self, map, nom, armateur, pos)
self.surface = pygame.image.load(f"images/{self.nom}.png").convert_alpha()
self.rect = self.map.blit(self.surface, self.pos)
...
Cargo.dictCargos[self.nom] = self
Когда я сериализую другой объект без экземпляра Pygame, это нормально
Но с объектом, описанным выше, я получаю это сообщение об ошибке:
import pickle as pickle
pickle.dump(Cargo.dictCargos, open('file2.pkl', 'wb'), protocol=pickle.HIGHEST_PROTOCOL)
Traceback (most recent call last):
File "./pytransit.py", line 182, in <module>
encreG(joueur, event)
File "/home/patrick/Bureau/PyTransit/modulesJeu/tests.py", line 25, in encreG
pickle.dump(Cargo.dictCargos, open('file2.pkl', 'wb'), protocol=pickle.HIGHEST_PROTOCOL)
TypeError: can't pickle pygame.Surface objects
У вас есть идеи, как перенести эти предметы на сервер. Или обойти это ограничение рассола?
Та же проблема возникнет, если я захочу сохранить деталь, поэтому сохраните эти объекты